>>> On 5/26/2009 at 7:22 PM, in message
<dcccdf790905261822w63e3447crf21bef5390b...@mail.gmail.com>, David Birdsong
<david.birds...@gmail.com> wrote:
> I've been searching around for awhile now, any suggestions on where I
> can get apr-debug ...or is it apr-util-debug?   I'm on Fedora 8, but
> source is fine.
> 

I'm not sure where to find a built RPM.  I have always just built it myself.  
You want a debug version of APR.  Gmond doesn't use apr-util.

Brad



> On Tue, May 26, 2009 at 8:35 AM, Brad Nicholes <bnicho...@novell.com> wrote:
>>>>> On 5/24/2009 at 12:43 AM, in message
>> <dcccdf790905232343y76481e5dw6c1df62bc732c...@mail.gmail.com>, David Birdsong
>> <david.birds...@gmail.com> wrote:
>>> I have a python module that spawns a separate thread that collects
>>> data off of a pipe.
>>>
>>> Everything runs fine, but I'm finding that metric_cleanup is never
>>> called.  When I strace the PID of the worker thread(in Linux so it
>>> get's it's own PID), I see it gets a SIGTERM when I stop gmond instead
>>> of exiting under it's own power.  All of the gmond processes exit, but
>>> a  subprocess of my worker thread just ends up being reparented to
>>> init instead of being cleaned up by my metric_cleanup logic.
>>>
>>> The worker thread reads from an endless pipe using a select.poll with
>>> a timeout, so the pipe shouldn't block.  I need to know to kill the
>>> process on the other end of the pipe which is what metric_cleanup
>>> should be providing.
>>>
>>> I even removed all cleanup code from metric_cleanup() and just put an
>>> open('/tmp/ganglia_kill', 'w'),...but no file is created.  What can I
>>> investigate to understand why it's being ignored?
>>>
>>
>> Gmond depends on the APR memory pools for invoking the cleanups.  Basically 
> the way it works is that when gmond starts up, it creates an APR memory pool. 
>  This memory pool is used to allocate and manage memory of everything in 
> gmond that deals with APR.  One of the features of APR memory pools is that I 
> can tie functions to a pool that get invoked with the memory pool is cleaned 
> up.  In this case in the function setup_metric_callbacks() in gmond.c, it is 
> tying all of the module cleanup functions to the main global memory pool.  
> When gmond exits, the last thing that happens is that the memory pools that 
> were created, are destroyed.  This should trigger all of the cleanup 
> routines.  To debug this, you will need a debug version of APR and set a 
> break point in apr_terminate().  Also set a break point in apr_pool_destroy.  
> These functions should be getting called automatically when the gmond process 
> shuts down.  Another quick workaround would be to explicitly call 
> apr_pool_destroy (global_context) as the last statement in main.c.  This will 
> force the destruction of the global memory pool which should also cause the 
> clean up routines to be called.
>>
>> Brad
>>
>>




------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT 
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp as they present alongside digital heavyweights like Barbarian 
Group, R/GA, & Big Spaceship. http://p.sf.net/sfu/creativitycat-com 
_______________________________________________
Ganglia-general mailing list
Ganglia-general@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/ganglia-general

Reply via email to