[Python-Dev] Issue #8863 adds a new PYTHONNOFAULTHANDLER environment variable (original) (raw)
Victor Stinner victor.stinner at haypocalc.com
Sun Dec 19 23:10:43 CET 2010
- Previous message: [Python-Dev] Issue #8863 adds a new PYTHONNOFAULTHANDLER environment variable
- Next message: [Python-Dev] Issue #8863 adds a new PYTHONNOFAULTHANDLER environment variable
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Le samedi 18 décembre 2010 à 17:23 +0100, Georg Brandl a écrit :
Well, without a closer I assume that for some crashes it's just not possible anymore for the Python interpreter to even print out the traceback?
The worst case occurs if the frame objects are corrupted, eg. if the filename of a frame is an invalid object (eg. pointer to NULL or to a corrupted unicode object).
If the file descriptor 2 is not stderr (eg. if there is no file descriptor 2), the backtrace cannot be printed.
Except of these two issues, I think that the fault handler is always able to display the backtrace, even on stack overflow or invalid memory write.
--
Older versions of my patch were less reliable:
- allocate memory on the heap => only use the stack (only few bytes)
- call "complex" Python functions (like UTF-8 codec with backslashreplace error handler) => use a very simple ASCII +backslashreplace implementation and avoid complex functions
- use not signal-safe functions like printf => use write() and simple functions to format numbers
- may go into an unlimited loop if there is a loop in the frame linked list => limit the loop to MAX_DEPTH (100) iterations
Victor
- Previous message: [Python-Dev] Issue #8863 adds a new PYTHONNOFAULTHANDLER environment variable
- Next message: [Python-Dev] Issue #8863 adds a new PYTHONNOFAULTHANDLER environment variable
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]