On Thu, Mar 26, 2009 at 3:54 PM, <Daniel.Pocock@barclayscapital.com> wrote:

I've got Cygwin's libapr1 1.3.3-1

I've built Ganglia (3.1.0) from source and it works.

I then modify this line of code in gmond.c, adding the flag
APR_POLLSET_THREADSAFE:

 apr_pollset_create(&listen_channels, total_listen_channels,
global_context, APR_POLLSET_THREADSAFE);

Now, after adding a socket to the pollset, there is a segmentation
fault.  gdb is unable to show me a backtrace.

APR_POLLSET_THREADSAFE isn't supported with all implementations.  I expect that apr_pollset_create() is returning APR_ENOTIMPL, and the crash is due to an uninitialized pollset.

Just curious: Does Ganglia modify the pollset on a separate thread than the poll (thus needing APR_POLLSET_THREADSAFE), and if so why doesn't it already specify APR_POLLSET_THREADSAFE *and* check the apr_pollset_create() return code?  And if it doesn't need it, what do you expect to gain by adding it?