[issue19227] test_multiprocessing_xxx hangs under Gentoo buildbots
Richard Oudkerk
report at bugs.python.org
Thu Oct 17 22:42:53 CEST 2013
Richard Oudkerk added the comment:
I finally have a gdb backtrace of a stuck child (started using os.fork() not multiprocessing):
#1 0xb76194da in ?? () from /lib/libc.so.6
#2 0xb6d59755 in ?? ()
from /var/lib/buildslave/custom.murray-gentoo/build/build/lib.linux-i686-3.4-pydebug/_ssl.cpython-34dm.so
#3 0xb6d628f0 in _fini ()
from /var/lib/buildslave/custom.murray-gentoo/build/build/lib.linux-i686-3.4-pydebug/_ssl.cpython-34dm.so
#4 0xb770859b in ?? () from /lib/ld-linux.so.2
#5 0xb75502c7 in ?? () from /lib/libc.so.6
#6 0xb7550330 in exit () from /lib/libc.so.6
#7 0xb558f244 in ?? () from /lib/libncursesw.so.5
#8 0xb76e9f38 in fork () from /lib/libpthread.so.0
---Type <return> to continue, or q <return> to quit---#9 0x08085f89 in posix_fork (self=0xb74da374, noargs=0x0)
at ./Modules/posixmodule.c:5315
...
It looks as though fork() is indirectly calling something in _ssl.cpython-34dm.so which is not completing. So I guess this is pthread_atfork() related. But the child argument passed to pthread_atfork() should be NULL, so I don't really understand this:
static int
PySSL_RAND_atfork(void)
{
static int registered = 0;
int retval;
if (registered)
return 0;
retval = pthread_atfork(NULL, /* prepare */
PySSL_RAND_atfork_parent, /* parent */
NULL); /* child */
if (retval != 0) {
PyErr_SetFromErrno(PyExc_OSError);
return -1;
}
registered = 1;
return 0;
}
----------
_______________________________________
Python tracker <report at bugs.python.org>
<http://bugs.python.org/issue19227>
_______________________________________
More information about the Python-bugs-list
mailing list