homepage

This issue tracker has been migrated to GitHub , and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author sbt
Recipients palmer, sbt
Date 2012年09月11日.16:04:04
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1347379445.35.0.563964880184.issue15914@psf.upfronthosting.co.za>
In-reply-to
Content
Python 3.2 has extra code in _PyImport_ReInitLock() which means that when a fork happens as a side effect of an import, the main thread of the forked process owns the import lock. Therefore other threads in the forked process cannot import anything.
_PyImport_ReInitLock(void)
{
 if (import_lock != NULL)
 import_lock = PyThread_allocate_lock();
 if (import_lock_level > 1) {
 /* Forked as a side effect of import */
 long me = PyThread_get_thread_ident();
 PyThread_acquire_lock(import_lock, 0);
 /* XXX: can the previous line fail? */
 import_lock_thread = me;
 import_lock_level--;
 } else {
 import_lock_thread = -1;
 import_lock_level = 0;
 }
}
I think the reason this code is not triggered in Python 3.3 is the introduction of per-module import locks.
History
Date User Action Args
2012年09月11日 16:04:05sbtsetrecipients: + sbt, palmer
2012年09月11日 16:04:05sbtsetmessageid: <1347379445.35.0.563964880184.issue15914@psf.upfronthosting.co.za>
2012年09月11日 16:04:04sbtlinkissue15914 messages
2012年09月11日 16:04:04sbtcreate

AltStyle によって変換されたページ (->オリジナル) /