[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