My sys.excepthook dies painfully
Steven D'Aprano
steve+comp.lang.python at pearwood.info
Wed Jul 23 21:30:41 EDT 2014
On Wed, 23 Jul 2014 13:02:51 -0700, Jason Swails wrote:
> I'm not sure how the "mylogger" variable is getting set to None in your
> my_error_handler callback, but I don't see how that can possibly be
> happening with the provided code...
Dammit, it's a Heisenbug... now it's gone away for me too.
http://c2.com/cgi/wiki?HeisenBug
However, I think I have a glimmer of an idea for how the global variable
might be set to None. When the Python interpreter shuts down, it sets
global variables to None in some arbitrary order. If the excepthook
function isn't called until after the shutdown process begins, then
depending on the phase of the moon, it's possible that ``mylogger`` may
have been set to None by the time it is called.
It's quite common for __del__ methods and daemon threads to be called
during interpreter shutdown, but I've never come across an excepthook
doing this.
I wonder whether I ought to use atexit to register the function, rather
than mess with sys.excepthook directly?
--
Steven
More information about the Python-list
mailing list