STINNER Victor <victor.stin...@haypocalc.com> added the comment: heap_gc_deadlock_lockless.diff: _free_pending_blocks() and free() execute the following instructions in a different order, is it a problem?
+ self._free(block) + self._allocated_blocks.remove(block) vs + self._allocated_blocks.remove(block) + self._free(block) You may call _free_pending_blocks() just after loack.acquire() and a second time before before lock.release()... it is maybe overkill, but it should reduce the probability of the delayed free problem. You may document that _pending_free_blocks.append() and _pending_free_blocks.pop() are atomic in CPython and don't need a specific lock. ---------- _______________________________________ Python tracker <rep...@bugs.python.org> <http://bugs.python.org/issue12352> _______________________________________ _______________________________________________ Python-bugs-list mailing list Unsubscribe: http://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com