[ARGUS] Re: 2.0.6.fixes.1 core from improper signal handling
Carter Bullard
carter at qosient.com
Thu Nov 11 08:46:21 EST 2004
Hmmmmm, just reacting without looking at the code, why
is ArgusChildExit calling calloc()?
Carter
> From: <slif at bellsouth.net>
> Date: Thu, 11 Nov 2004 8:44:09 -0500
> To: <carter at qosient.com>
> Cc: <argus-info at lists.andrew.cmu.edu>
> Subject: 2.0.6.fixes.1 core from improper signal handling
>
> Hi, Carter.
> I've found an unusual occurrence that I doubt
> can be recreated manually. I think it can be prevented.
>
> Problem: One of the processes of the argus server
> received a SIGCHLD signal during the processing of a
> "C" library call, in this case "calloc".
>
> The signal handler ArgusChildExit begins to cleanup the child,
> as it is intended to do,
> but dies terribly (SIGABRT) during another call to "calloc".
>
> Apparently "calloc" is not intended to be called recursively
> :-)
>
> Solution:
> Create a new function ArgusScheduleChildExit that is wired to SIGCHLD.
> It should set a program global flag, in a manner like ArgusUsr2Sig.
>
> That flag can be used to conditionally call ArgusChildExit
> from the top of the processing loop.
> [You know best which loops should include the call!]
>
> This gives the software interrupt *caller* an opportunity to
> finish its work, and return from interrupt.
>
>
> Best Regards,
> -Mike Slifcak
>
More information about the argus
mailing list