Retract the claim that this is always safe if PyMem_{Del, DEL, Free, FREE}
are called without the GIL. It's incredibly unlikely to fail, but I can't make this bulletproof without either adding a lock for exclusion, or giving up on growing the arena base-address vector (it would be safe if this were a static array).
This commit is contained in:
parent
d97a1c008c
commit
12300686ca
|
@ -403,6 +403,10 @@ new_arena(void)
|
|||
* only make a supposed-to-succeed case fail by mistake).
|
||||
* Read the above 50 times before changing anything in this
|
||||
* block.
|
||||
* XXX Fudge. This is still vulnerable: there's nothing
|
||||
* XXX to stop the bad-guy thread from picking up the
|
||||
* XXX current value of arenas, but not indexing off of it
|
||||
* XXX until after the PyMem_FREE(oldarenas) below completes.
|
||||
*/
|
||||
uptr *oldarenas;
|
||||
int newmax = maxarenas + (maxarenas >> 1);
|
||||
|
|
Loading…
Reference in New Issue