This issue tracker has been migrated to GitHub, and is currently read-only.
For more information, see the GitHub FAQs in the Python's Developer Guide.

Author rbcollins
Recipients Ilya.Kulakov, rbcollins
Date 2015-07-24.15:42:41
SpamBayes Score -1.0
Marked as misclassified Yes
Message-id <1437752562.5.0.2763427767.issue24699@psf.upfronthosting.co.za>
In-reply-to
Content
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.
History
Date User Action Args
2015-07-24 15:42:42rbcollinssetrecipients: + rbcollins, Ilya.Kulakov
2015-07-24 15:42:42rbcollinssetmessageid: <1437752562.5.0.2763427767.issue24699@psf.upfronthosting.co.za>
2015-07-24 15:42:42rbcollinslinkissue24699 messages
2015-07-24 15:42:41rbcollinscreate