[mod_python] ValueError: Failed to acquire global mutex lock

Graham Dumpleton graham.dumpleton at gmail.com
Tue Oct 23 07:35:32 EDT 2007


What operating system are you on? Does that system run SELinux extensions?

Bar starting to disable other Apache modules to see if there is a
conflict, or doing a complete clean of Apache source and recompiling
everything, include other third party modules, not sure what else to
suggest.

Graham

On 23/10/2007, Michael Robokoff <mike.robokoff at apioutsourcing.com> wrote:
> [Thu Oct 18 07:37:38 2007] [notice] mod_python: Creating 8 session mutexes
> based on 6 max processes and 25 max threads.
> [Thu Oct 18 07:37:38 2007] [notice] mod_python: using mutex_directory /tmp
> [Thu Oct 18 07:37:38 2007] [notice] Apache/2.0.59 (Unix) DAV/2 mod_jk/1.2.23
> mod_python/3.3.1 Python/2.5.1 configured -- resuming normal operations
> [Thu Oct 18 07:37:38 2007] [info] Server built: Oct 11 2007 13:49:08
> [Thu Oct 18 07:37:38 2007] [debug] worker.c(1676): AcceptMutex: fcntl
> (default: fcntl)
>
> So I tried "AcceptMutex flock"
>
> And I got this:
>
> Syntax error on line 165 of /usr/local/apache2/conf/httpd.conf:
> flock is an invalid mutex mechanism; Valid accept mutexes for this platform
> and MPM are: default, fcntl, sysvsem, posixsem, pthread.
>
> I also tried all of the lock mechanisms available. (fcntl, sysvsem,
> posixsem, pthread) nothing changed with the use of the different
> locking mechanisms
>
> Here is my apr.h info:
>
> #define APR_USE_FLOCK_SERIALIZE           0
> #define APR_USE_SYSVSEM_SERIALIZE         0
> #define APR_USE_POSIXSEM_SERIALIZE        0
> #define APR_USE_FCNTL_SERIALIZE           1
> #define APR_USE_PROC_PTHREAD_SERIALIZE    0
> #define APR_USE_PTHREAD_SERIALIZE         1
>
> #define APR_HAS_FLOCK_SERIALIZE           0
> #define APR_HAS_SYSVSEM_SERIALIZE         1
> #define APR_HAS_POSIXSEM_SERIALIZE        1
> #define APR_HAS_FCNTL_SERIALIZE           1
> #define APR_HAS_PROC_PTHREAD_SERIALIZE    1
> #define APR_PROCESS_LOCK_IS_GLOBAL        0
>
> Does this help at all?
> Is there anything else I can look at or try?
>
>
> Graham, Thanks so much for your help. I really really appreciate it
>
> --Mike
>
> -----Original Message-----
> From: Graham Dumpleton [mailto:graham.dumpleton at gmail.com]
> Sent: Wednesday, October 17, 2007 5:23 PM
> To: Michael Robokoff
> Cc: mod_python
> Subject: Re: [mod_python] ValueError: Failed to acquire global mutex lock
>
> On 17/10/2007, Michael Robokoff <mike.robokoff at apioutsourcing.com> wrote:
> > Graham, Thanks so much for your help, unfortunately I don't think it
> > made any difference. I don't see any real change in error messages.
> > Should I check on how to increase the semaphores at the system level?
>
> What do the messages in the Apache error log indicate about how many
> mutexes mod_python is actually using? The directive must be in the
> correct context else it is ignored.
>
> > [Tue Oct 16 06:36:49 2007] [warn] (45)Deadlock situation detected/avoided:
> > Failed to acquire global mutex lock at index 2
>
> This error message possibly indicates the problem as being due to
> something else.
>
> One suggestion is to set the Apache configuration directive AcceptMutex.
>
>   http://httpd.apache.org/docs/2.2/mod/mpm_common.html#acceptmutex
>
> Set it to:
>
>   AcceptMutex flock
>
> This may not change the lock type used by mod_python though because of
> it how it wrongly indicates which type of lock to use:
>
>   https://issues.apache.org/jira/browse/MODPYTHON-202
>
> It may release more semaphores though for use.
>
> BTW, in apr.h in Apache include directory, what are the following set
> to for your system.
>
> #define APR_USE_FLOCK_SERIALIZE           0
> #define APR_USE_SYSVSEM_SERIALIZE         1
> #define APR_USE_POSIXSEM_SERIALIZE        0
> #define APR_USE_FCNTL_SERIALIZE           0
> #define APR_USE_PROC_PTHREAD_SERIALIZE    0