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 <rep...@bugs.python.org> <http://bugs.python.org/issue19227> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com