msg161097 - (view) |
Author: Zbyszek Jędrzejewski-Szmek (zbysz) * |
Date: 2012-05-19 08:53 |
Simply running './python -X faulthandler' in the source directory gives me this: % ./python -X faulthandler Fatal Python error: Py_Initialize: can't initialize faulthandler SystemError: null argument to internal routine [1] 25118 abort (core dumped) ./python -X faulthandler % gdb ./python core Core was generated by `./python -X faulthandler'. Program terminated with signal 6, Aborted. #0 0x00007f52d7ff9475 in *__GI_raise (sig=) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 64 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or directory. (gdb) bt #0 0x00007f52d7ff9475 in *__GI_raise (sig=) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x00007f52d7ffc6f0 in *__GI_abort () at abort.c:92 #2 0x00000000004bc984 in Py_FatalError (msg=0x5b3750 "Py_Initialize: can't initialize faulthandler") at Python/pythonrun.c:2283 #3 0x00000000004b85ed in Py_InitializeEx (install_sigs=1) at Python/pythonrun.c:361 #4 0x00000000004b86ea in Py_Initialize () at Python/pythonrun.c:398 #5 0x00000000004d55a6 in Py_Main (argc=3, argv=0x1b8f010) at Modules/main.c:624 #6 0x000000000041b120 in main (argc=3, argv=0x7fffc1ebb558) at ./Modules/python.c:65 (gdb) #0 0x00007f52d7ff9475 in *__GI_raise (sig=) at ../nptl/sysdeps/unix/sysv/linux/raise.c:64 #1 0x00007f52d7ffc6f0 in *__GI_abort () at abort.c:92 #2 0x00000000004bc984 in Py_FatalError (msg=0x5b3750 "Py_Initialize: can't initialize faulthandler") at Python/pythonrun.c:2283 #3 0x00000000004b85ed in Py_InitializeEx (install_sigs=1) at Python/pythonrun.c:361 #4 0x00000000004b86ea in Py_Initialize () at Python/pythonrun.c:398 #5 0x00000000004d55a6 in Py_Main (argc=3, argv=0x1b8f010) at Modules/main.c:624 #6 0x000000000041b120 in main (argc=3, argv=0x7fffc1ebb558) at ./Modules/python.c:65 |
|
|
msg161114 - (view) |
Author: Antoine Pitrou (pitrou) *  |
Date: 2012-05-19 13:43 |
Here is a patch: $ hg di diff --git a/Python/pythonrun.c b/Python/pythonrun.c --- a/Python/pythonrun.c +++ b/Python/pythonrun.c @@ -356,15 +356,15 @@ Py_InitializeEx(int install_sigs) _PyImportHooks_Init(); - /* initialize the faulthandler module */ - if (_PyFaulthandler_Init()) - Py_FatalError("Py_Initialize: can't initialize faulthandler"); - /* Initialize _warnings. */ _PyWarnings_Init(); import_init(interp, sysmod); + /* initialize the faulthandler module */ + if (_PyFaulthandler_Init()) + Py_FatalError("Py_Initialize: can't initialize faulthandler"); + _PyTime_Init(); if (initfsencoding(interp) < 0) |
|
|
msg161140 - (view) |
Author: Zbyszek Jędrzejewski-Szmek (zbysz) * |
Date: 2012-05-19 17:29 |
I can confirm that it works with the patch. Thanks! |
|
|
msg161142 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2012-05-19 17:59 |
The patch looks good to me. |
|
|
msg161143 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2012-05-19 17:59 |
Hum, a test may be added to ensure that we will not have the regression anymore. |
|
|
msg161149 - (view) |
Author: Zbyszek Jędrzejewski-Szmek (zbysz) * |
Date: 2012-05-19 18:47 |
% PYTHONFAULTHANDLER=1 ./python -E -c 'import faulthandler; faulthandler._sigsegv()' [3] 14516 segmentation fault (core dumped) Unless I'm missing something, the env. var. is not working as documented. Patch with two tests is attached: the first does 'python -X faulthandler ...' and passes after Antoine's patch, the second does 'PYTHONFAULTHANDLER=YesPlease python ...' and does not pass. |
|
|
msg161152 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2012-05-19 19:18 |
> PYTHONFAULTHANDLER=1 ./python -E ... Documentation of the -E option "Ignore all PYTHON* environment variables, e.g. PYTHONPATH and PYTHONHOME, that might be set." http://docs.python.org/dev/using/cmdline.html#cmdoption-E So the option works as expected. |
|
|
msg161237 - (view) |
Author: Zbyszek Jędrzejewski-Szmek (zbysz) * |
Date: 2012-05-20 22:31 |
A new version of the tests: one for 'python -X faulthandler', one for 'PYTHONFAULTHANDLER=1 python'. This one sets the environment properly for the second test, but is slightly more invasive. Both tests fail without Antoine's patch, and both succeed when it is applied. |
|
|
msg209835 - (view) |
Author: Yury Selivanov (yselivanov) *  |
Date: 2014-01-31 22:09 |
bump? |
|
|
msg209848 - (view) |
Author: STINNER Victor (vstinner) *  |
Date: 2014-02-01 00:03 |
Oh, in fact I already fixed this issue long time ago in Python 3.3 and 3.4. --- changeset: 78341:2f1494d243ad user: Victor Stinner <victor.stinner@gmail.com> date: Tue Jul 31 02:55:49 2012 +0200 files: Lib/test/test_faulthandler.py Python/pythonrun.c description: Fix initialization of the faulthandler module faulthandler requires the importlib if "-X faulthandler" option is present on the command line, so initialize faulthandler after importlib. Add also an unit test. --- I'm closing the issue. Thanks for the report. |
|
|