Message200166
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;
} |
|
Date |
User |
Action |
Args |
2013-10-17 20:42:53 | sbt | set | recipients:
+ sbt, pitrou, vstinner, christian.heimes, r.david.murray, neologix, python-dev |
2013-10-17 20:42:53 | sbt | set | messageid: <1382042573.82.0.927254541777.issue19227@psf.upfronthosting.co.za> |
2013-10-17 20:42:53 | sbt | link | issue19227 messages |
2013-10-17 20:42:53 | sbt | create | |
|