[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Finished threads remain as zombies on 2.6?




Haven't run the script - but multithreaded programs been leaving zombies all over my machine using the 2.6.12.3 kernel.

I am actually in the process of trying to determine what changed - I was using Debian unstable and am downgrading to stable at the moment.

When I debug some of the program with zombies, it almost seems as if pthread_detach() is broken - when pthread_exit() is called, the thread entries stick around waiting for the parent thread to go away.

...tom

Thimo Neubauer wrote:

Hi,

some weeks ago I experienced a full process table and found that
offlineimap left vast amounts of zomies around. That sounded like
#162369 (forwarded to http://python.org/sf/621548 but with no apparent
solution) or a Python problem but firefox is collecting "<defunct>"
processes as well. There is a pthread-bug for the Alpha libc (#197988)
but that should be fixed in 2.3.5-4 running on my box.

Do any of you experience the same problem? I've written a minimal
Python-script starting some threads (attached). If I have a look at
"ps fax" after a while I get:

5499 pts/0    S+     0:00              |       \_ python threadtest.py
5500 pts/0    S+     0:00              |           \_ python threadtest.py
5501 pts/0    Z+     0:00              |               \_ [python] <defunct>
5502 pts/0    Z+     0:00              |               \_ [python] <defunct>
5503 pts/0    Z+     0:00              |               \_ [python] <defunct>
5504 pts/0    Z+     0:00              |               \_ [python] <defunct>
5505 pts/0    Z+     0:00              |               \_ [python] <defunct>
5506 pts/0    S+     0:00              |               \_ python threadtest.py
5507 pts/0    S+     0:00              |               \_ python threadtest.py
5508 pts/0    S+     0:00              |               \_ python threadtest.py
5509 pts/0    S+     0:00              |               \_ python threadtest.py
5510 pts/0 S+ 0:00 | \_ python threadtest.py
Could someone run the script on another Alpha with kernel 2.6? On
escher (which uses 2.4) there are no processes left behind. I want to
know if I'm chasing ghosts or not...

Cheers
  Thimo
------------------------------------------------------------------------

#!/usr/bin/python

from threading import *
from time import sleep

class Work(Thread):

   def __init__(self, num):
       Thread.__init__(self)
       self.num = num

   def run(self):
       print "Running %d ..." % self.num
       sleep(self.num)
       print "End %d" % self.num

for i in range(10):
   w = Work(i)
   w.start()




Reply to: