[mod_python] mod_python, the ITK MPM and sessions

Sam Morris sam at robots.org.uk
Tue Nov 7 18:00:50 EST 2006

I'm experimenting with the ITK MPM for Apache, available
from <http://home.samfundet.no/~sesse/mpm-itk/>. It is based on the
Prefork MPM; after a request is parsed, the process handling the
request changes user id to one specified in the config for the virtual

I'm having trouble getting mod_python's session support to work. When
trying to create a new instance of Session, I get this message: 

 [warn] (13)Permission denied: Failed to acquire global mutex
 lock at index 6"

Strace says the following system call fails:

 semop(4227100, 0xb7ca6a30, 1)           = -1 EACCES (Permission denied)

and ipcs(1) says:

 ------ Semaphore Arrays --------
 0x00000000 4227100    www-data  600        1         

I assume this is because the child process (running as user test1) needs
access to the semaphore (for the Global Interpreter Lock?) living inside a
process that is running as www-data. If this is the case, I guess there's
no way past this problem short of redesigning (mod_)python and/or
apache/ITK? :)

Here's the full traceback:

Mod_python error: "PythonHandler pytest"

 Traceback (most recent call last):
  File "/usr/lib/python2.4/site-packages/mod_python/apache.py", line 299,
    in HandlerDispatch
    result = object(req)
  File "/home/sam/pytest/pytest.py", line 8, in handler
    s = Session.Session (req)
  File "/usr/lib/python2.4/site-packages/mod_python/Session.py", line 735,
    in Session
    timeout=timeout, lock=lock)
  File "/usr/lib/python2.4/site-packages/mod_python/Session.py", line 337,
    in __init__
    timeout=timeout, lock=lock)
  File "/usr/lib/python2.4/site-packages/mod_python/Session.py", line 165,
    in __init__
  File "/usr/lib/python2.4/site-packages/mod_python/Session.py", line 255,
    in lock
    _apache._global_lock(self._req.server, self._sid)
 ValueError: Failed to acquire global mutex lock

And my apache configuration:

 <VirtualHost *>
    DocumentRoot /var/www/
    AssignUserId test1 test1
    ServerName test1

    ErrorLog /var/log/apache2/error.log
    LogLevel warn
    CustomLog /var/log/apache2/access.log combined

    SetHandler mod_python
    PythonPath "['/home/sam/pytest'] + sys.path"
    PythonHandler pytest
    PythonOption session_directory /tmp
    PythonOption mutex_directory /tmp
    PythonDebug on

Sam Morris

PGP key id 1024D/5EA01078
3412 EA18 1277 354B 991B  C869 B219 7FDB 5EA0 1078

More information about the Mod_python mailing list