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 vstinner
Recipients vstinner
Date 2010-03-22.01:08:21
SpamBayes Score 3.1168725e-09
Marked as misclassified No
Message-id <1269220105.24.0.324130937649.issue8197@psf.upfronthosting.co.za>
In-reply-to
Content
I wrote a patch to preallocate Python thread state before creating the thread to avoid a fatal error: issue7544 (it's now closed). This patch is not enough to avoid fatal errors in low memory condition.

Just after the creation of the thread, _PyGILState_NoteThreadState() is called. This function can fail with a fatal error (Couldn't create autoTLSkey mapping) in low memory condition if a memory allocation fails in find_key(), called by PyThread_set_key_value().

PyThread_set_key_value() fills a global single linked list of type 'struct key', the head is 'keyhead'. This list contains values and uses an index composed of (long thread id, int key). Only one key is used: autoTLSkey (0). The list is used to get the thread state (eg. in PyGILState_Ensure).

Note: This issue is very unlikely, but it does exist :-)
History
Date User Action Args
2010-03-22 01:08:25vstinnersetrecipients: + vstinner
2010-03-22 01:08:25vstinnersetmessageid: <1269220105.24.0.324130937649.issue8197@psf.upfronthosting.co.za>
2010-03-22 01:08:22vstinnerlinkissue8197 messages
2010-03-22 01:08:21vstinnercreate