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

Finished threads remain as zombies on 2.6?



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()

Attachment: signature.asc
Description: Digital signature


Reply to: