I realised that the ktrace log was rubbish; most of the syscalls names
were not properly mapped.

I tried to track down the exact spot were the Linux executable gets
the SEGV signal, running strace on a Debian system and comparing the
values passed to the system calls.  Here is an extract:

  rt_sigaction(SIGTSTP, {0x8072ce0, [TSTP], SA_RESTART|0x4000000}, {SIG_IGN}, 8) = 0
  rt_sigaction(SIGHUP, {0x8072ca0, [HUP], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGTERM, {0x8072bf0, [TERM], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGFPE, {0x804f910, [FPE], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGBUS, {0x804f940, [BUS], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGSEGV, {0x804f910, [SEGV], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGILL, {0x804f910, [ILL], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGSYS, {0x804f910, [SYS], SA_RESTART|0x4000000}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGPIPE, {SIG_IGN}, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGALRM, NULL, {SIG_DFL}, 8) = 0
  rt_sigaction(SIGALRM, {SIG_DFL}, NULL, 8) = 0
  brk(0x81c2000)                          = 0x81c2000
  ^^^^^^^^^^^^^^--- SEGV on FreeBSD!
  brk(0x81c3000)                          = 0x81c3000
  brk(0x81c4000)                          = 0x81c4000
  brk(0x81c5000)                          = 0x81c5000
  brk(0x81c6000)                          = 0x81c6000

So it was rt_sigaction() and not pwrite(); brk() and not ktrace().

Does this shed a new light?

-- 
walter pelissero
http://www.pelissero.de
_______________________________________________
[EMAIL PROTECTED] mailing list
http://lists.freebsd.org/mailman/listinfo/freebsd-questions
To unsubscribe, send any mail to "[EMAIL PROTECTED]"

Reply via email to