[mod_python] PyThreadState_Delete: tstate is still current

Graham Dumpleton grahamd at dscpl.com.au
Thu Oct 13 00:12:26 EDT 2005


The mod_python.so in your Apache modules directory, or wherever it
is picking it up from, appears to still be that for mod_python 2.7.X.

Thus, find LoadModule instruction for mod_python in Apache config
and work out where it is loading it from. Ensure that that module is
that for mod_python 3.2.

Graham

Peter Sanchez wrote ..
> Maybe I am not understanding what you are saying...
> 
> So I just deinstalled mod_python completely, verified that the
> directory /usr/local/lib/python2.4/site-packages/mod_python directory
> was gone. I reinstalled and the directory was there with all the other
> files included (apache.py, etc.)
> 
> The same problem exists. Is it an Apache compilation issue?
> 
> Sorry if I am being slow on this issue...
> 
> Thanks,
> 
> Peter
> 
> On 10/12/05, Graham Dumpleton <grahamd at dscpl.com.au> wrote:
> > Now I am even more blind. I got that the wrong way around. You
> > have the 3.2 mod_python.apache module, but the Apache module
> > is still that for 2.7. Ie., only mod_python Apache module for 2.7
> > would be attempting to call init() with 0 arguments where 2 is
> > expected.
> >
> > This would explain why thread state problem is still there as Apache
> > module hasn't changed.
> >
> > Blame Apple for this, trying to read up on the new video iPod and
> > it is distracting my thoughts. :-)
> >
> > Graham
> >
> > On 13/10/2005, at 8:04 AM, Graham Dumpleton wrote:
> >
> > > Okay, I am blind. Unfortunate that the thread state problem didn't
> > > go away, but only just noticed in the error messages the init()
> > > call argument mismatch.
> > >
> > > The problem you are having is that the Apache module is for
> > > mod_python 3.2, but it is still finding the Python modules, ie.,
> > > the mod_python.apache module, from your old mod_python 2.7
> > > installation.
> > >
> > > In 2.7, init() took no arguments. In 3.2 it takes two arguments.
> > >
> > > Sorry, didn't notice that before. Thus, get rid of the mod_python 2.7
> > > Python modules and ensure 3.2 versions are installed correctly.
> > >
> > > Still think something isn't right with the thread state deletion
> > > code. Are you absolutely sure that your newly compiled Apache
> > > module is being used?
> > >
> > > Graham
> > >
> > > On 12/10/2005, at 9:33 AM, Peter Sanchez wrote:
> > >
> > >> Well, I did the patches you suggested, and it didn't help much.
> > >> Here is the log snippet:
> > >>
> > >> [Tue Oct 11 16:17:07 2005] [notice] Apache/2.0.54 (FreeBSD) PHP/
> > >> 4.4.0 mod_python/3.2.0b Python/2.4.1 configured -- resuming normal
> > >> operati
> > >> ons
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 71664 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 71663 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 71660 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 71654 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 71640 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 71634 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 71624 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 69509 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 69490 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 69470 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [notice] child pid 69437 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:07 2005] [error] make_obcallback: could not call
> > >> init.\n
> > >> TypeError: init() takes exactly 2 arguments (0 given)
> > >> Fatal Python error: PyThreadState_Delete: tstate is still current
> > >> [Tue Oct 11 16:17:08 2005] [notice] child pid 71632 exit signal
> > >> Abort trap (6)
> > >> [Tue Oct 11 16:17:09 2005] [error] make_obcallback: could not call
> > >> init.\n
> > >> TypeError: init() takes exactly 2 arguments (0 given)
> > >>
> > >>
> > >> Over and over again ;) I went back to 3.1.4, since I am testing on
> > >> a live server (no other choice unfortunately.)
> > >>
> > >> I also tried writing a basic function that does nothing but
> > >> display a session id, no other modules included and it gave the
> > >> same results. You guys probably knew that was the case, but just
> > >> an FYI.
> > >>
> > >> Thanks again,
> > >>
> > >> Peter
> > >>
> > >> On 10/11/05, Graham Dumpleton <grahamd at dscpl.com.au> wrote: Making
> > >> an educated guess (???), in src/mod_python.c, can you modify the
> > >> release_interpreter() function and change:
> > >>
> > >> static void release_interpreter(void)
> > >> {
> > >>     PyThreadState *tstate = PyThreadState_Get();
> > >> #ifdef WITH_THREAD
> > >>     PyEval_ReleaseThread(tstate);
> > >> #endif
> > >>     PyThreadState_Delete(tstate);
> > >> }
> > >>
> > >> to:
> > >>
> > >> static void release_interpreter(void)
> > >> {
> > >>     PyThreadState *tstate = PyThreadState_Get();
> > >> #ifdef WITH_THREAD
> > >>     PyEval_ReleaseThread(tstate);
> > >> #else
> > >>     PyThreadState_Swap(NULL);
> > >> #endif
> > >>     PyThreadState_Delete(tstate);
> > >> }
> > >>
> > >> The original doesn't seem quite right to me because it wouldn't
> > >> revert
> > >> the thread state before deleting it when threads aren't used.
> > >> There is a
> > >> similar bit of code in get_interpreter() where it has:
> > >>
> > >>         if (!idata->obcallback)
> > >>         {
> > >> #ifdef WITH_THREAD
> > >>             PyEval_ReleaseThread(tstate);
> > >> #endif                           PyThreadState_Delete(tstate);
> > >>
> > >> which perhaps should be:
> > >>
> > >>         if (!idata->obcallback)
> > >>         {
> > >> #ifdef WITH_THREAD
> > >>                     PyEval_ReleaseThread(tstate);
> > >> #else
> > >>                     PyThreadState_Swap(NULL);
> > >> #endif
> > >>                     PyThreadState_Delete(tstate);
> > >>
> > >> In this case it only gets invoked when mod_python callback can't be
> > >> created.
> > >>
> > >> If this is indeed the problem, in mod_python 3.1.3, the callback
> > >> may be
> > >> created okay so it only dies in release_interpreter(). In
> > >> mod_python 3.2
> > >> though, maybe the callback creation itself is failing meaning it
> > >> would
> > >> die everytime a child process is created.
> > >>
> > >> If someone has the time and a non BSD platform could you
> > >> independently
> > >> build a version of Python without thread support and then build
> > >> mod_python 3.2 and see if you get similar crashes. Ie., I feel this
> > >> could be wrong for no threads and not be BSD specific. From what I
> > >> have
> > >> seen, FreeBSD is the only platform that still doesn't build in
> > >> threads
> > >> to Python by default and thus why it isn't seen more. I can't do it
> > >> personally as have MacOS X and one has to be careful with multiple
> > >> Python installations there in case one trashes system one
> > >> accidentally.
> > >> Would rather not risk it. :-)
> > >>
> > >> Graham
> > >>
> > >> Peter Sanchez wrote ..
> > >> > Thanks for the reference. I tried adding the following line, no
> > >> real help.
> > >> > So I rebuilt apache2 and mod_python and made sure it didn't have
> > >> threads
> > >> > support. Now, I still get the same error message, but the entire
> > >> page is
> > >> > loading correctly?
> > >> >
> > >> > Same log entries though:
> > >> >
> > >> > Fatal Python error: PyThreadState_Delete: tstate is still current
> > >> > [Tue Oct 11 13:05:15 2005] [notice] child pid 256 exit signal
> > >> Abort trap
> > >> > (6)
> > >> >
> > >> > I am wondering if at this point, its not related to Cheetah
> > >> Template engine,
> > >> > which I use for my templates (will be converting to psp template
> > >> system
> > >> > very
> > >> > soon) I am not sure if that attempts any threaded functions,
> > >> etc. Also,
> > >> > I
> > >> > dont know that if it was trying something like that, if it would
> > >> effect
> > >> > mod_python in this way.
> > >> >
> > >> > Is there any traces I can run, etc. to help debug this issue?
> > >> >
> > >> > Thanks,
> > >> >
> > >> > Peter
> > >> >
> > >> > On 10/11/05, Jim Gallacher <jg.lists at sympatico.ca> wrote:
> > >> > >
> > >> > > Peter Sanchez wrote:
> > >> > > > OK, I tried 3.2.2b from source. Now, when I start apache,
> > >> the logs
> > >> > just
> > >> > > > go into a loop with the same errors as before :)
> > >> > > >
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] Apache/2.0.54 (FreeBSD)
> > >> PHP/4.4.0
> > >> > > > mod_python/3.2.0b Python/2.4.1 configured -- resuming normal
> > >> operations
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 26791 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 26318 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 26317 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 24178 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 24162 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 24148 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 24133 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 24122 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 24050 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 24033 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 23318 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 23285 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 23266 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [notice] child pid 23195 exit
> > >> signal Abort
> > >> > > > trap (6)
> > >> > > > [Tue Oct 11 10:26:14 2005] [error] make_obcallback: could
> > >> not call
> > >> > > init.\n
> > >> > > > TypeError: init() takes exactly 2 arguments (0 given)
> > >> > > > Fatal Python error: PyThreadState_Delete: tstate is still
> > >> current
> > >> > > > [Tue Oct 11 10:26:14 2005] [error] make_obcallback: could
> > >> not call
> > >> > > init.\n
> > >> > > > TypeError: init() takes exactly 2 arguments (0 given)
> > >> > > > Fatal Python error: PyThreadState_Delete: tstate is still
> > >> current
> > >> > > >
> > >> > > > Note, these were being given while NOT loading my mod_python
> > >> code,
> > >> > I
> > >> > > > think it was doing this for every 'normal' apache instance.
> > >> I quickly
> > >> > > > reverted back to the last setup (mod_pyton/3.1.4)
> > >> > > >
> > >> > > > Any other ideas guys?
> > >> > > >
> > >> > > > Thanks,
> > >> > > >
> > >> > > > Peter
> > >> > > >
> > >> > >
> > >> > > This sounds like the problem I was having trying to get the
> > >> 3.2.2b unit
> > >> > > tests to pass on FreeBSD. This was discussed on the python-dev
> > >> list
> > >> > > around Sept 10.
> > >> > >
> > >> > > You can read the archive on gmane at
> > >> > > http://comments.gmane.org/gmane.comp.apache.mod-python.devel/1465
> > >> > >
> > >> > > Grisha suggested you can see this sort of problem on FreeBSD
> > >> where
> > >> > > Python is threaded and Apache is not and offered the following:
> > >> > >
> > >> > > If you built apache without thread support, you may need to
> > >> add the
> > >> > > following lines to $PREFIX/sbin/envvars:
> > >> > >
> > >> > > LD_PRELOAD=/usr/lib/libc_r.so
> > >> > > export LD_PRELOAD
> > >> > >
> > >> > > Regards,
> > >> > > Jim
> > >> > >
> > >>
> > >>
> > >
> > >
> > >
> > >
> > > _______________________________________________
> > > Mod_python mailing list
> > > Mod_python at modpython.org
> > > http://mailman.modpython.org/mailman/listinfo/mod_python
> > >
> >
> >


More information about the Mod_python mailing list