[Python-Dev] Strange segfault in Python threads and linux kernel 2.6 (original) (raw)

Donovan Baarda abo at minkirri.apana.org.au
Tue Jan 25 15:01:55 CET 2005


G'day,

From: "Anthony Baxter" <anthony at interlink.com.au>

On Thursday 20 January 2005 12:43, Donovan Baarda wrote: > On Wed, 2005-01-19 at 13:37 +0000, Michael Hudson wrote: > > The main oddness about python threads (before 2.3) is that they run > > with all signals masked. You could play with a C wrapper (call > > setprocmask, then exec fop) to see if this is what is causing the > > problem. But please try 2.4. > > Python 2.4 does indeed fix the problem. Unfortunately we are using Zope > 2.7.4, and I'm a bit wary of attempting to migrate it all from 2.3 to > 2.4. Is there any wa this "Fix" can be back-ported to 2.3?

It's extremely unlikely - I couldn't make myself comfortable with it when attempting to figure out it's backportedness. While the current behaviour on 2.3.4 is broken in some cases, I fear very much that the new behaviour will break other (working) code - and this is something I try very hard to avoid in a bugfix release, particularly in one that's probably the final one of a series. Fundamentally, the answer is "don't do signals+threads, you will get burned". For your application, you might want to instead try

In this case it turns out to be "don't do exec() in a thread, because what you exec can have all it's signals masked". That turns out to be a hell of a lot of things; popen, os.command, etc. They all only work OK in a threaded application if what you are exec'ing doesn't use any signals.

something where you write requests to a file in a spool directory, and have a python script that loops looking for requests, and generates responses. This is likely to be much simpler to debug and work with.

Hmm, interprocess communications; great fun :-) And no spawning the process from within the zope application; it's gotta be a separate daemon.

Actually, I've noticed that zope often has a sorta zombie "which" process which it spawns. I wonder it this is a stuck thread waiting for some signal...


Donovan Baarda http://minkirri.apana.org.au/~abo/



More information about the Python-Dev mailing list