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, xiang.zhang
Date 2018-12-03.15:19:06
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1543850347.03.0.788709270274.issue31473@psf.upfronthosting.co.za>
In-reply-to
Content
I looked at _Py_atomic_address to avoid atomic "serialno++", but we don't have atomic_fetch_add(). We could implement it using a loop and atomic_compare_exchange_strong()... but we don't have atomic_compare_exchange_strong() neither.

I tried to add a mutex, but there are some pratical issues:

* bpo-35388: question about calling Py_Initialize() / Py_Finalize() multiple times
* I modified _PyRuntimeState_Init() to initialize the lock.

_PyRuntimeState_Init() calls PyThread_acquire_lock() which calls PyMem_RawMalloc(). Problem: PyMem_RawMalloc() requires the lock. I worked around the isuse using "if (_PyRuntime.mem.mutex != NULL) {".
History
Date User Action Args
2018-12-03 15:19:07vstinnersetrecipients: + vstinner, xiang.zhang
2018-12-03 15:19:07vstinnersetmessageid: <1543850347.03.0.788709270274.issue31473@psf.upfronthosting.co.za>
2018-12-03 15:19:07vstinnerlinkissue31473 messages
2018-12-03 15:19:06vstinnercreate