Charles-François Natali <neolo...@free.fr> added the comment: [...] > def free(self, block): > if self._lock.acquire(False): > self._exec_pending_free() > self._free(block) > else: > # malloc holds the lock > self._pending_free.append(block) >
_pending_free uses a lock internally to make it thread-safe, so I think this will have exactly the same problem (the trylock can fail in case of contention or free() from multiple threads, thus we can't be sure that the else clause is executed on behalf of the garbage collector and it won't run while we're adding the block to _pending_free). Anyway, this seems complicated and error-prone, disabling the gc seems the most straightforward way to handle that. ---------- _______________________________________ 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