I just realized what's probably going on.

  The log4cxx source code doesn't contain any calls to change the signal
mask.  This is the problem.

  log4cxx starts background threads.  You can read a bit about how
threads interact with POSIX signals here:

http://people.redhat.com/drepper/posix-signal-model.xml

  In short: signals are delivered to an arbitrary thread that hasn't
blocked the signal.  log4cxx is creating a thread that doesn't block
WINCH, leading to a situation where the WINCH gets delivered to the
wrong thread.  I can see it in gdb (using "info proc NNNNNN status") and
it only shows up when log4cxx has been initialized; otherwise there's
one more thread and there are two threads that don't block WINCH.

  The real bug is in log4cxx here: it should block out every signal it
doesn't use itself so as not to interfere with the process it's linked
into.  However, I should probably come up with a workaround in case they
don't fix it, or don't fix it by the time squeeze releases.

  Daniel



-- 
To UNSUBSCRIBE, email to [email protected]
with a subject of "unsubscribe". Trouble? Contact [email protected]

Reply via email to