Issue #11393: _Py_DumpTraceback() writes the header even if there is no frame
This commit is contained in:
parent
a01ca12a52
commit
fcb88c4503
|
@ -38,8 +38,6 @@ PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
|
|||
...
|
||||
File "xxx", line xxx in <xxx>
|
||||
|
||||
Return 0 on success, -1 on error.
|
||||
|
||||
This function is written for debug purpose only, to dump the traceback in
|
||||
the worst case: after a segmentation fault, at fatal error, etc. That's why,
|
||||
it is very limited. Strings are truncated to 100 characters and encoded to
|
||||
|
@ -49,7 +47,7 @@ PyAPI_DATA(PyTypeObject) PyTraceBack_Type;
|
|||
|
||||
This function is signal safe. */
|
||||
|
||||
PyAPI_DATA(int) _Py_DumpTraceback(
|
||||
PyAPI_DATA(void) _Py_DumpTraceback(
|
||||
int fd,
|
||||
PyThreadState *tstate);
|
||||
|
||||
|
|
|
@ -556,18 +556,19 @@ dump_frame(int fd, PyFrameObject *frame)
|
|||
write(fd, "\n", 1);
|
||||
}
|
||||
|
||||
static int
|
||||
static void
|
||||
dump_traceback(int fd, PyThreadState *tstate, int write_header)
|
||||
{
|
||||
PyFrameObject *frame;
|
||||
unsigned int depth;
|
||||
|
||||
frame = _PyThreadState_GetFrame(tstate);
|
||||
if (frame == NULL)
|
||||
return -1;
|
||||
|
||||
if (write_header)
|
||||
PUTS(fd, "Traceback (most recent call first):\n");
|
||||
|
||||
frame = _PyThreadState_GetFrame(tstate);
|
||||
if (frame == NULL)
|
||||
return;
|
||||
|
||||
depth = 0;
|
||||
while (frame != NULL) {
|
||||
if (MAX_FRAME_DEPTH <= depth) {
|
||||
|
@ -580,13 +581,12 @@ dump_traceback(int fd, PyThreadState *tstate, int write_header)
|
|||
frame = frame->f_back;
|
||||
depth++;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
int
|
||||
void
|
||||
_Py_DumpTraceback(int fd, PyThreadState *tstate)
|
||||
{
|
||||
return dump_traceback(fd, tstate, 1);
|
||||
dump_traceback(fd, tstate, 1);
|
||||
}
|
||||
|
||||
/* Write the thread identifier into the file 'fd': "Current thread 0xHHHH:\" if
|
||||
|
|
Loading…
Reference in New Issue