Acu Cobol 6.0 for Linux
Walter C. Pelissero
walter at pelissero.de
Mon Feb 2 08:46:37 PST 2004
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
More information about the freebsd-questions
mailing list