You are viewing a plain text version of this content. The canonical link for it is here.
Posted to mod_python-dev@quetz.apache.org by "Graham Dumpleton (JIRA)" <ji...@apache.org> on 2005/03/12 09:41:52 UTC

[jira] Commented: (MODPYTHON-31) mod_python - session stopped working after infinite loop was killed

     [ http://issues.apache.org/jira/browse/MODPYTHON-31?page=comments#action_60689 ]
     
Graham Dumpleton commented on MODPYTHON-31:
-------------------------------------------

The problem is caused by the way you have set up the Apache config file.

If you do not specify AddHander/PythonHandler outside of a Directory
directive it will work okay.

Ie., use:

# Enable debug under /psp directory 
<Directory /var/www/html/psp>
AddHandler mod_python .psp 
AddHandler mod_python .psp_ 
PythonHandler mod_python.psp 
PythonDebug On 
</Directory> 

If you specify AddHandler outside of the a Directory directive, when doing:

  dirpath = self._req.hlist.directory

the dirpath variable will be set to None, which then cannot be indexed.

The Session code should possibly check for this strange case, noting though
that what you did in the first place is probably not recommended and could
break other things as well.



> mod_python - session stopped working after infinite loop was killed
> -------------------------------------------------------------------
>
>          Key: MODPYTHON-31
>          URL: http://issues.apache.org/jira/browse/MODPYTHON-31
>      Project: mod_python
>         Type: Bug
>   Components: core
>     Versions: 3.1.3
>  Environment: Using Fedora Core 3.
> --
> # rpm -q httpd
> httpd-2.0.52-3.1
> --
> --
> # rpm -q mod_python
> mod_python-3.1.3-5.2
> --
>     Reporter: Jarkko
>     Priority: Blocker

>
> /etc/httpd/conf.d/python.conf
> --
> # Add .psp to types
> AddType application/x-httpd-psp .psp
> # Handle .psp documents with mod_python
> AddHandler mod_python .psp
> PythonHandler mod_python.psp
> # Add index.psp to index documents
> DirectoryIndex index.psp
> # Enable debug under /psp directory
> <Directory /var/www/html/psp>
> AddHandler mod_python .psp_
> PythonDebug On
> </Directory>
> --
> /var/www/html/psp/index.psp
> --
> <html>
> sid: <%=session.id()%>
> </html>
> --
> lynx localhost/psp
> --
> Mod_python error: "PythonHandler mod_python.psp"
> Traceback (most recent call last):
>   File "/usr/lib/python2.3/site-packages/mod_python/apache.py", line 299, in 
> HandlerDispatch
>     result = object(req)
>   File "/usr/lib/python2.3/site-packages/mod_python/psp.py", line 297, in 
> handler
>     p.run()
>   File "/usr/lib/python2.3/site-packages/mod_python/psp.py", line 191, in run
>     session = Session.Session(req)
>   File "/usr/lib/python2.3/site-packages/mod_python/Session.py", line 389, in 
> Session
>     timeout=timeout, lock=lock)
>   File "/usr/lib/python2.3/site-packages/mod_python/Session.py", line 294, in 
> __init__
>     timeout=timeout, lock=lock)
>   File "/usr/lib/python2.3/site-packages/mod_python/Session.py", line 132, in 
> __init__
>     Cookie.add_cookie(self._req, self.make_cookie())
>   File "/usr/lib/python2.3/site-packages/mod_python/Session.py", line 160, in 
> make_cookie
>     c.path = dirpath[len(docroot):]
> TypeError: unsubscriptable object
> --
> First the page worked like a charm. But then I figured I'd like to see how 
> mod_python handles a situation where the page has an infinite loop in it.
> I coded a page with a code like "while True:" etc. in it and ran it. (The code 
> had a call to session too, so session was initialized.) I noticed that the 
> script was newer killed (this is bad, PHP handles this with its time limit). I 
> had to restart httpd then (which killed the script).
> Now after that loop test the session variable does not work anymore. I get 
> that "unsubscriptable object" error message.
> I figured that maybe the session data is corrupted and deleted the dbm file 
> from /tmp. That did not help. I've also restarted httpd multiple times.
> The weirdest thing about this is that the httpd is preforked, so the session 
> should exists only in memory. If the session exists only in memory, restarting 
> httpd should be enough.
> Where can that corrupted session data be stored now? Does httpd save its state 
> into some files? Even rebooting the whole machine did not help.
> I consider this bug a very serious thing because this is a blocker. Sessions 
> don't work anymore.
> Also, some kind of handling for infinite loops should be implemented. Yes I 
> know, that should be described in another bug report, but let's fix this 
> session thing first.
> I have high hopes for mod_python as it integrates an excellent language to an 
> excellent web server and because it enables a powerfull and easy alternative to 
> PHP.

-- 
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
   http://issues.apache.org/jira/secure/Administrators.jspa
-
If you want more information on JIRA, or have a bug to report see:
   http://www.atlassian.com/software/jira