You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
What I am trying to do is to set up a logging component that collects all messages sent from child processes to a pipe created by the parent process. The logging component is controlled by a thread created by parent process
When a mutex created by a parent process is used from within a child process, this can lead not only to a deadlock, but also to SIGSEGV.
To understand the purpose of pthread_atfork, recall that fork duplicates the whole memory space, including mutexes in their current locking state, but only the calling thread: other threads are not running in the child process. The mutexes are not usable after the fork and must be initialized with pthread_mutex_init in the child process. This is a limitation of the current implementation and might or might not be present in future versions.
Activity
pcdinh commentedon Feb 8, 2011
Quite often, I got the following message printed out the console while I run my Python script
pthread_cond_signal: Undefined error: 0
Or it crashed
https://gist.github.com/799841
Tested with Python 2.6.1 and 2.6.6 (Mac)
What I am trying to do is to set up a logging component that collects all messages sent from child processes to a pipe created by the parent process. The logging component is controlled by a thread created by parent process
ronaldoussoren commentedon Feb 8, 2011
Can you provide a script that shows the problem? Without such a script it will be hard to reproduce, and fix, this problem.
pcdinh commentedon Feb 10, 2011
I just simplified my script into a smaller one that can be easier to understand and find out what happens
https://gist.github.com/819979
Thanks
neologix commentedon Feb 10, 2011
I think this issue is related to http://bugs.python.org/issue11158, which is in turn related to http://bugs.python.org/issue6721 (Locks in python standard library should be sanitized on fork).
When a mutex created by a parent process is used from within a child process, this can lead not only to a deadlock, but also to SIGSEGV.
To understand the purpose of pthread_atfork, recall that fork duplicates the whole memory space, including mutexes in their current locking state, but only the calling thread: other threads are not running in the child process. The mutexes are not usable after the fork and must be initialized with pthread_mutex_init in the child process. This is a limitation of the current implementation and might or might not be present in future versions.
They must be initialized.
Suggesting to close both bpo-11148 and bpo-11158 as dupe of bpo-6721.
ronaldoussoren commentedon Mar 14, 2011
I agree this is a duplicate of bpo-6721. I'm therefore closing this issue.