[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