On 5 Feb 2013, at 18:03, Reyad Attiyat wrote:

> The apr_dbd_get_driver call blocks in the child process  I should also note
> this doesn't block when I'm running apache in debug (-X) and that I'm using
> apache 2.4 with the event mpm.

Hmm.

> #4  0x00007f59a03578fc in apu_dso_mutex_lock () at misc/apu_dso.c:46
> #5  0x00007f59a034e036 in apr_dbd_get_driver (pool=pool@entry=0x21c2138,
>    name=0x7f599b1ea21c "mysql", driver=0x230ee40) at dbd/apr_dbd.c:167

Looks like something else has that mutex when your function runs.

The mutex was changed in r659293, which shares the same mutex
between dbd and ldap, and makes it available to other modules.
Do you have ldap loaded, or anything else using apu_dso_mutex_lock
that you're aware of?

I don't like the logic of it.  A mutex should only be required if the driver
is not yet loaded.   Perhaps file a bug against APR?

> #6  0x00007f599b1e4e8b in connect_database (db_pool=0x21c2138,
>    error_messages=0x7f599a7c7000, dbd_config=dbd_config@entry=0x2273940)
>    at database/dbd.c:35

Would it not make sense for your module to use mod_dbd to manage
a database connection pool?

-- 
Nick Kew

Reply via email to