quetz-mod_python-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From David Fraser <dav...@sjsoft.com>
Subject Re: server cleanup functions run in restricted mode
Date Wed, 21 Apr 2004 11:57:25 GMT
Just for reference, these are the URLs and info I've found on this problem.
There doesn't seem to be much info at all in the Python docs / newsgroups.
I have been trying to set up a testcase but at the moment it crashes 
Apache just trying to call a simple servercleanup (with pass) so I need 
to work at it a bit...


> Why do I get codec or other strange errors when running under mod_python?
> There is a known problem with mod_python in Python 2.2 and older. 
> mod_python is running in restricted mode, and this is considered by 
> the mod_python folks to be a bug. Anything which introspects (like 
> 4Suite) or does anything a restricted interpreter can't do will fail 
> with a cryptic exception. The solution is to upgrade to Python 2.3, 
> and use a recent build of mod_python (3.1 or newer).

(1999 discussion of this problem)

>This alleviates the problem and makes it work.  Outside of not
>finalizing interpreters (which alleviates it somewhat, but makes the
>code run in restricted mode since __builtins__ of the unpickled objects
>isn't the same as the "current" __builtins__), I don't know of any other
>way to fix this.
(1998 discussion of this problem)

>In the course of playing with the pyapache, I've run into the situation
>where the interpreter complains about being in restricted mode.  What
>I've been able to figure out is this: if the __builtins__ of the current
>frame is different than the __builtins__ of the current top frame (read
>as current thread), it is in restricted mode.  Is this correct?  
(ancient announcement of httpady)

>1. A bug related to the way multiple intrpreters were implemented that would
>occasionally use objects created in one interpreter in another. The bug would manifest
>itself by Python complaining that __dict__ is not available in restricted mode. 

David Fraser wrote:

> mod_python 3.1.3 running on Windows
> Thanks for the explanation, that makes sense why I couldn't find the 
> code...
> I'll try and compare the request and server implementations of setting 
> the cleanup function and work out why this is happening...
> David
> Gregory (Grisha) Trubetskoy wrote:
>> What version of mod_python is this?
>> Restricted mode is a strange beast, in that there isn't really anything
>> like a "restricted mode" flag, but it looks at a pointer somwhere (don't
>> remember now), and if it's not what is expected, it concludes that 
>> it's in
>> restricted mode. So this behaviour is actually a sign of a bug where an
>> object is created in one subinterpreter but is running in another... 
>> These
>> bugs can be hard to track down.
>> Grisha
>> On Tue, 6 Apr 2004, David Fraser wrote:
>>> Hi
>>> It seems that server cleanup functions registered with
>>> server.register_cleanup run in restricted mode.
>>> I'm trying to use them to close a database connection and being run in
>>> restricted mode causes problems.
>>> I can't see in the code where this gets set, but I get the following 
>>> error:
>>> [Tue Apr 06 17:16:01 2004] [error] python_cleanup: Error calling 
>>> cleanup
>>> object <bound method jLogbookMultiServer.onshutdown of
>>> <jLogbook.python.jlogbook.jLogbookMultiServer object at 0x00A62670>>
>>> [Tue Apr 06 17:16:01 2004] [error]     exceptions.RuntimeError:
>>> instance.__dict__ not accessible in restricted mode
>>> Is there a reason that the server functions needed to be run in
>>> restricted mode, or is there a better way I should do this?
>>> David

View raw message