[Python-Dev] bug in python arm-linux?: start_new_thread fails after popen (original) (raw)

Michael Lauer mickey at tm.informatik.uni-frankfurt.de
Wed Dec 17 09:01:00 EST 2003


Hi, I have a python program which works fine on x86 but doesn't work on any of my arm-linux devices (Zaurus, Ipaq, SIMpad) - all of them are running Python 2.3.2 on top of glibc 2.3.2+linuxthreads on top of kernel 2.4.18-rmk6-pxa3 respectively kernel 2.4.19-rmk7.

After a long week of debugging I now can reproduce the behaviour with the following minimal case:


import thread from time import sleep import sys import os

def createPipe(): print os.popen( "ls -l" ).read()

def threadMain( name ): while True: sys.stderr.write( name+": i'm still running" ) sys.stderr.flush() sleep( 1 )

if name == 'main':

createPipe()

print "BEFORE start_new_thread"
thread.start_new_thread( threadMain, ( "1", ) )
print "AFTER start_new_thread"

createPipe()

print "BEFORE start_new_thread"
thread.start_new_thread( threadMain, ( "2", ) )
print "AFTER start_new_thread"

sleep( 5 )

This program - as is - just hangs in the first start_new_thread() and never comes back. If you outcomment the first call to createPipe() out, then it works fine.

In the first - hanging - case, an strace shows:

write(1, "BEFORE start_new_thread\n", 24BEFORE start_new_thread ) = 24 rt_sigprocmask(SIG_BLOCK, [33], [RTMIN], 8) = 0 pipe([3, 4]) = 0 clone(child_stack=0x14e080, flags=CLONE_VM|CLONE_FS|CLONE_FILES|CLONE_SIGHAND) = 949 write(4, "\314V\1@\5\0\0\0\0\0\0\0\0\0\0\0\34\213\37@\10c\1@\0\0"..., 148) = 148 rt_sigprocmask(SIG_SETMASK, NULL, ~[KILL STOP 33], 8) = 0 write(4, "\0\21\3@\0\0\0\0\0\0\0\0hO\n\0\2503\23\0\377\376\373\377"..., 148) = 148 rt_sigprocmask(SIG_SETMASK, NULL, ~[KILL STOP 33], 8) = 0 rt_sigsuspend([KILL STOP RTMIN 33]

The program must be kill -9'ed at this point.

Can anyone explain this behaviour to me - did I find a bug?

Sincerely,

-- :M:

Dipl.-Inf. Michael 'Mickey' Lauer mickey at tm.informatik.uni-frankfurt.de Raum 10b - ++49 69 798 28358 Fachbereich Informatik und Biologie



More information about the Python-Dev mailing list