[Zope-dev] the segfault saga continues

Leonardo Rochael Almeida leo@hiper.com.br
07 Mar 2002 21:40:00 -0300


Now this is really weird. I could swear I recompiled all python scripts.
I ZCataloged them all and then recompiled them in chunks. But I still
get those anoying 'needs recompiling' messages. I wonder if it'd be too
bad an idea to set self._p_changed = 1 at PythonScript.__setstate__ to
make the transient recompilation permanent.

Anyway, now that we've ruled out ZMySQLDA (twice, once by taking it out
of the picture and another by installing the newest, multithreaded,
serialized, version). I can't seem to get a core, but I can get gdb
attached to it. I intend to do just that. What's the best way to prepare
a Zope instalation for this investigation? should I compile it all
(python and Zope) from source? what options should I pass where to get a
compilation with all the symbols and how should I run Zope to be able to
see the source code once I'm stoped inside it?

I'm used debugging with gdb, but I don't know much about python
internals, specially cycle-gc related. Once I trap the segfault, what
should I look for? I mean, besides the stack trace?

I intend investigate this tomorrow (Friday) at 14:00(BRT). This is
17:00(GMT) and 12:00(EST). Matthew, and anyone else interested, I'll be
on IRC throughout this (nick is L-array), so if you guys want to help me
out I'd really appreciate it.

Let's nail down this bastard.


On Tue, 2002-03-05 at 22:19, Leonardo Rochael Almeida wrote:
> 
> So now I have installed a brand new MySQL-python-2.9.2a2 explicitly
> compiled against reentrant mysql libraries (libmysqlclient_r, in
> Debian's libmysqlclient10-dev package). I also installed
> ZMySQLDA-2.0.9b1 which compounds MySQL-python reentrancy by serializing
> all mysql requests with a lock.
> 
> We've also completely reformed the site so as to get rid of that huge
> number of pythonscripts (they were mostly duplicates and we manage to
> remove the redundancy using ZClasses).
> 
> Segfaults are still with me, however, unless I disable the cycle-gc, of 
> course.
> 
> Tomorrow I'll try and get a core to see what gdb can tell me. Anything
> you guys suggest I take a look at? (besides the C stack trace which will
> probably be pointing somewhere inside the GC)
> 
> I'll also try go get the remaining non recompiled python scripts fixed,
> so as to please Anthony Baxter :-) But for that I'll need one of these:
> 
> * a way to make the 'needs recompiling' log message give me the path to
> the object. Since that message happens at __setstate__,
> getPhysicalPath() doesn't return anything useful (no acquisition
> wrappers).
> 
> * a way to know whether a Python script needs recompiling or not. So
> that I can ZCatalog only the non recompiled python scripts. I tried
> asking the ZCatalog for all the python scripts and later recompiling
> them, but I managed to miss a lot of them somehow. It's as if the
> ZCatalog decided that it wasn't going to really catalog ALL python
> scripts.
> 
> -- 
> Ideas don't stay in some minds very long because they don't like
> solitary confinement.
> 
> 
> _______________________________________________
> Zope-Dev maillist  -  Zope-Dev@zope.org
> http://lists.zope.org/mailman/listinfo/zope-dev
> **  No cross posts or HTML encoding!  **
> (Related lists - 
>  http://lists.zope.org/mailman/listinfo/zope-announce
>  http://lists.zope.org/mailman/listinfo/zope )
> 
> 
-- 
Ideas don't stay in some minds very long because they don't like
solitary confinement.