FW: signals and sockets
Thu Aug 5 21:39:00 GMT 2004
> syslog() has a critical section in which it does all the
> messing with signals. libc doesn't stash the user sigaction
> in a per thread
> variable: it's just an array __sighandler[signo].
> It seems from your stack trace that __sighandler is set
> to 0x00000003. A GDB watchpoint on that memory can tell you
> how that happens.
I saw the same thing and was wondering myself how that could possibly be
set to 3. I still have no clue.
I did discover that you cannot use syslog with the gcj java runtime. If
you do, then a race condition exists with the syslog. It's possible that
a sighandler with address "1" (SIG_IGN) might get called because of the
temporary installation of the syslog's sighandler and the restoration.
The check to see if a sighandler is installed caould pass while syslog
has it's handler installed, then restores it to the SIG_IGN, before the
actual call, which would result in a call to a sighandler with address
More information about the Java