Graham Dumpleton
grahamd at dscpl.com.au
Tue Apr 26 21:36:42 EDT 2005
I have put all the code changes together under the bug report: http://issues.apache.org/jira/browse/MODPYTHON-48 Links have been included back to some of the mailing list messages for context. If this doesn't solve everything let us know. Graham Graham Dumpleton wrote .. > The code in PSP constructor where code is first put in cache should be: > > cached = mem_scache.get(string) > if cached: > self.code = cached > else: > source = _psp.parsestring(string) > code = compile(source, "__psp__", "exec") > mem_scache.store(string,code) > self.code = code > > Ie., code wasn't actually being compiled. Not sure what should be put > for second argument. It only gets displayed in error messages according > to documentation. Normally it would be the name of the module, but > there isn't one here. > > It seems to work for me now. I'll try and get all these changes together > and post a bug report on JIRA. > > Graham > > Graham Dumpleton wrote .. > > Following code in _psp_module_parsestring() looks suspect to me: > > > > yy_delete_buffer(bs, scanner); > > yylex_destroy(scanner); > > > > There are already calls to yy_delete_buffer() in yylex_destroy(). If > I > > comment out the call to yy_delete_buffer() I no longer get the > > double delete warning. I still get the Python error below though, > > so that is the next thing to solve. > > > > Graham > > > > Graham Dumpleton wrote .. > > > It may not be your platform, but a problem in the C code part of PSP > > > modules after all. On Mac OSX, after making the Python changes you > > > give, it doesn't crash, but do get this warning in the logs. > > > > > > [Wed Apr 27 10:21:14 2005] [notice] Apache/2.0.51 (Unix) mod_python/3.1.3 > > > Python/2.3 configured -- resuming normal operations > > > *** malloc[595]: Deallocation of a pointer not malloced: 0x528050; > This > > > could be a double free(), or free() called with the middle of an allocated > > > block; Try setting environment variable MallocHelp to see tools to > help > > > debug > > > *** malloc[595]: error for object 0x5102c0: Double free > > > [Wed Apr 27 10:21:16 2005] [error] [client 127.0.0.1] PythonHandler > _handler: > > > Traceback (most recent call last): > > > [Wed Apr 27 10:21:16 2005] [error] [client 127.0.0.1] PythonHandler > _handler: > > > File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/apache.py", > > > line 308, in HandlerDispatch\n result = object(req) > > > [Wed Apr 27 10:21:16 2005] [error] [client 127.0.0.1] PythonHandler > _handler: > > > File "/Users/grahamd/Sites/psp_crash/_handler.py", line 6, in handler\n > > > content_file.run() > > > [Wed Apr 27 10:21:16 2005] [error] [client 127.0.0.1] PythonHandler > _handler: > > > File "/System/Library/Frameworks/Python.framework/Versions/2.3/lib/python2.3/site-packages/mod_python/psp.py", > > > line 190, in run\n if "session" in code.co_names: > > > [Wed Apr 27 10:21:16 2005] [error] [client 127.0.0.1] PythonHandler > _handler: > > > AttributeError: 'str' object has no attribute 'co_names' > > > > > > I haven't looked at the Python traceback bit yet, but the fact that > malloc > > > is complaining suggests that some sort of memory manipulation is > > > wrong. > > > > > > Graham > > > > > > > > > dharana wrote .. > > > > There where more typos. I think I've fixed them. I am now trying > to > > > > reproduce it in another machine. I'm starting to believe it must > a > > > > problem with my server setup what is causing the segfaults. > > > > > > > > -------- Original Message -------- > > > > Subject: Re: [mod_python] psp.PSP(req, string='hello world') causes > > segfault > > > > Date: Wed, 27 Apr 2005 00:49:08 +0200 > > > > From: dharana <dharana at dharana.net> > > > > To: dharana <dharana at dharana.net> > > > > CC: Graham Dumpleton <grahamd at dscpl.com.au>, mod_python list > > > > <mod_python at modpython.org>, python-dev at httpd.apache.org > > > > References: <426EB09B.60804 at dharana.net> > > > > <cd668e4f1acb033939973727c751beb6 at dscpl.com.au> > > > > <426EB7C7.4030307 at dharana.net> > > > > <9f4387af79e092bc1b49d90c29633edc at dscpl.com.au> > > > > <426EC2D1.7080401 at dharana.net> > > > > > > > > There where 3 typos in psp.py. I could only fix them by temporarily > > > > commenting out the _psp.parsestring call. I leave to you the C side > > :) > > > > > > > > I've included the patch file with the typos fixed. Hope it helps. > I'm > > > > also forwarding to python-dev because I believe I've crossed the > line > > > again. > > > > > > > > ----------------------------------------------------------------------- > > > > --- /usr/src/mod_python-3.1.4/lib/python/mod_python/psp.py Sat > > Jan > > > > 29 22:25:29 2005 > > > > +++ /usr/local/hosting/lib/python2.4/site-packages/mod_python/psp.py > > > > Wed Apr 27 00:43:06 2005 > > > > @@ -111,12 +111,12 @@ > > > > self.load_from_file() > > > > else: > > > > > > > > - cached = strcache.get(string) > > > > + cached = mem_scache.get(string) > > > > if cached: > > > > self.code = cached > > > > else: > > > > self.code = _psp.parsestring(string) > > > > - strcache.store(string) > > > > + mem_scache.store(string, self.code) > > > > > > > > def cache_get(self, filename, mtime): > > > > > > > > @@ -358,8 +358,8 @@ > > > > > > > > def get(self, key): > > > > if self.cache.has_key(key): > > > > - hist, val = self.cache[key] > > > > - self.cache[key] = (hits+1, code) > > > > + hits, val = self.cache[key] > > > > + self.cache[key] = (hits+1, val) > > > > return val > > > > else: > > > > return None > > > > ----------------------------------------------------------------------- > > > > > > > > -- > > > > dharana > > > _______________________________________________ > > > Mod_python mailing list > > > Mod_python at modpython.org > > > http://mailman.modpython.org/mailman/listinfo/mod_python > > _______________________________________________ > > Mod_python mailing list > > Mod_python at modpython.org > > http://mailman.modpython.org/mailman/listinfo/mod_python > _______________________________________________ > Mod_python mailing list > Mod_python at modpython.org > http://mailman.modpython.org/mailman/listinfo/mod_python
|