OSEC

Neohapsis is currently accepting applications for employment. For more information, please visit our website www.neohapsis.com or email hr@neohapsis.com
 
From: Chris Evans (chrisscary.beasts.org)
Date: Wed Feb 07 2001 - 18:44:13 CST

  • Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]

    On Thu, 8 Feb 2001, Solar Designer wrote:

    > 1. You're calling exit(3) from a signal handler, while in a "bad
    > state" (possibly somewhere inside libc stdio code).

    Yes. It's a SIGCHLD handler which is essentially just "getting the hell
    out", after shutting down/closing a few fd's.

    I'm now using _exit(), but I'm still curious why exit() segfaults
    sometimes. The call stack is something like

    read(2) <-- blocking on a unix dgram socket read
    SIGCHLD arrives, enters signal handler
    exit(3)

    What sort of "bad state" do you envisage?

    > BTW, the OpenBSD folks are fixing two interesting classes of
    > bugs now: fd_set overflows and various signal races. The latter
    > are relevant to your problem.

    Interesting...

    Chris