Robert Collins added the comment:

I think you may need to instrument TemporaryDirectory._cleanup to be sure, but 
it sounds like its being run twice.

now, you're not using it like a context manager (at least as far as your code 
shows), so it must be happening from the weakref.

https://docs.python.org/3/library/weakref.html#weakref.finalize is the relevant 
docs for that.

The code looks ok as long as finalize triggers once and only once. Perhaps it 
should call the finalize() rather than manually calling _cleanup, in cleanup, 
but I don't see that that should make much difference. I would have thought it 
a deliberate attempt to avoid some bit of code (e.g. the resource warning), but 
since its a shared helper, thats not it.

And finalize._exitfunc looks entirely sane to me.

So - I suggest adding a call to print_stack in TemporaryDirectory._cleanup, to 
see the entire stack, and then hopefully we'll see two such printouts when this 
error happens, and be able to pinpoint how it's being called twice.

----------
nosy: +rbcollins

_______________________________________
Python tracker <rep...@bugs.python.org>
<http://bugs.python.org/issue24699>
_______________________________________
_______________________________________________
Python-bugs-list mailing list
Unsubscribe: 
https://mail.python.org/mailman/options/python-bugs-list/archive%40mail-archive.com

Reply via email to