Message139329
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. |
|
Date |
User |
Action |
Args |
2011-06-27 22:28:03 | vstinner | set | recipients:
+ vstinner, pitrou, neologix, greg.ath |
2011-06-27 22:28:02 | vstinner | set | messageid: <1309213682.91.0.893412289291.issue12352@psf.upfronthosting.co.za> |
2011-06-27 22:28:02 | vstinner | link | issue12352 messages |
2011-06-27 22:28:02 | vstinner | create | |
|