Commit Graph

104 Commits

Author SHA1 Message Date
Victor Stinner 404cdc5a92 faulthandler: add Windows exception handler
Issue #23848: On Windows, faulthandler.enable() now also installs an exception
handler to dump the traceback of all Python threads on any Windows exception,
not only on UNIX signals (SIGSEGV, SIGFPE, SIGABRT).
2016-03-23 10:39:17 +01:00
Victor Stinner 861d9abfcf faulthandler now works in non-Python threads
Issue #26563:

* Add _PyGILState_GetInterpreterStateUnsafe() function: the single
  PyInterpreterState used by this process' GILState implementation.
* Enhance _Py_DumpTracebackThreads() to retrieve the interpreter state from
  autoInterpreterState in last resort. The function now accepts NULL for interp
  and current_tstate parameters.
* test_faulthandler: fix a ResourceWarning when test is interrupted by CTRL+c
2016-03-16 22:45:24 +01:00
Victor Stinner 57003f81ea faulthandler: Test Py_FatalError() with GIL released
Issue #26558.
2016-03-15 17:23:35 +01:00
Berker Peksag ce643913a9 Issue #9517: Move script_helper to the support package.
Patch by Christie Wilson.
2015-05-06 06:33:17 +03:00
Victor Stinner ff2a661ef0 Issue #23566: Skip "fd" tests of test_faulthandler on Windows
subprocess doesn't support pass_fds on Windows.
2015-03-13 11:01:30 +01:00
Victor Stinner 95bb714ff7 Issue #23566: enable(), register(), dump_traceback() and dump_traceback_later()
functions of faulthandler now accept file descriptors. Patch by Wei Wu.
2015-03-12 15:32:03 +01:00
Gregory P. Smith 058fb7a884 Only pass -E to the child interpreter if our interpreter was running in that
mode.  Explicitly remove the PYTHONFAULTHANDLER environment variable before
launching a child interpreter when its presence would impact the test (the
reason -E was being used in the first place).

This enables running the test in an environment where other Python environment  variables must be set in order for things to run (such as using PYTHONHOME to
tell an embedded interpreter where it should think it lives).
2015-01-22 17:53:24 -08:00
Gregory P. Smith fe7c5d6e4e Only pass -E to the child interpreter if our interpreter was running in that
mode.  Explicitly remove the PYTHONFAULTHANDLER environment variable before
launching a child interpreter when its presence would impact the test (the
reason -E was being used in the first place).

This enables running the test in an environment where other Python environment
variables must be set in order for things to run (such as using PYTHONHOME to
tell an embedded interpreter where it should think it lives).
2015-01-22 17:33:28 -08:00
Victor Stinner 6b8e0ed562 (Merge 3.4) faulthandler: test_gil_released() now uses _sigsegv() instead of
_read_null(), because _read_null() cannot be used on AIX. On AIX, reading from
NULL is allowed: the first page of memory is a mapped read-only on AIX.

_read_null() and _sigabrt() don't accept parameters.
2014-09-30 13:55:30 +02:00
Victor Stinner 5083828d65 faulthandler: test_gil_released() now uses _sigsegv() instead of _read_null(),
because _read_null() cannot be used on AIX. On AIX, reading from NULL is
allowed: the first page of memory is a mapped read-only on AIX.
2014-09-30 13:54:14 +02:00
Victor Stinner 3e4a80a2e1 (Merge 3.4) test_faulthandler: fix typo 2014-09-25 00:39:17 +02:00
Victor Stinner 29001c8319 test_faulthandler: fix typo 2014-09-25 00:38:48 +02:00
Victor Stinner 6d201685e4 Close #22175: Improve test_faulthandler readability with dedent.
Patch written by Xavier de Gaye.
2014-08-10 19:50:08 +02:00
Victor Stinner 68e0808ad5 (Merge 3.4) Close #22175: Improve test_faulthandler readability with dedent.
Patch written by Xavier de Gaye.
2014-08-10 19:51:05 +02:00
Victor Stinner 56e8c29a4e Issue #22018: Add _testcapi.raise_signal()
- Use _testcapi.raise_signal() in test_signal
- close also os.pipe() file descriptors in some test_signal tests where they
  were not closed properly
- Remove faulthandler._sigill() and faulthandler._sigbus(): reuse
  _testcapi.raise_signal() in test_faulthandler
2014-07-21 12:30:22 +02:00
Victor Stinner e2d66903e8 Issue #21497: faulthandler functions now raise a better error if sys.stderr is
None: RuntimeError("sys.stderr is None") instead of AttributeError("'NoneType'
object has no attribute 'fileno'").
2014-05-14 17:15:50 +02:00
Guido van Rossum 7be5d7d0e0 Issue 19306: Add extra hints to faulthandler stack dumps that they are upside down. 2013-10-20 18:21:02 -07:00
Antoine Pitrou 77e904e6a6 Issue #18948: improve SuppressCoreFiles to include Windows crash popup suppression, and use it in more tests.
Patch by Valerie Lambert and Zachary Ware.
2013-10-08 23:04:32 +02:00
Victor Stinner 8898350076 Close #18957: The PYTHONFAULTHANDLER environment variable now only enables the
faulthandler module if the variable is non-empty. Same behaviour than other
variables like PYTHONDONTWRITEBYTECODE.
2013-09-08 11:36:23 +02:00
Victor Stinner 647d1e1acd (Merge 3.3) test_faulthandler: skip test_read_null() on AIX
AIX maps the first page of memory at address zero as valid, read-only.  Reading
NULL is not a fault on AIX. This is utilized by IBM compiler optimizations.
One speculatively can indirect through a pointer which may be null without
first testing if null and defer the test before using the value.
2013-07-03 22:35:39 +02:00
Victor Stinner 330426cfe2 test_faulthandler: skip test_read_null() on AIX
AIX maps the first page of memory at address zero as valid, read-only.  Reading
NULL is not a fault on AIX. This is utilized by IBM compiler optimizations.
One speculatively can indirect through a pointer which may be null without
first testing if null and defer the test before using the value.
2013-07-03 22:29:42 +02:00
Victor Stinner ef8115e5eb Issue #17206: Fix test_cmd_line and test_faulthandler for my previous change
(test.regrtest and test.script_helper enable faulthandler module in
subprocesses).
2013-06-25 21:54:17 +02:00
Victor Stinner e08d4881f8 (Merge 3.3) test_faulthandler: use _sigsegv() instead of _read_null()
faulthandler._read_null() is not reliable: it does not crash on AIX.
2013-06-17 23:39:06 +02:00
Victor Stinner 5678539500 test_faulthandler: use _sigsegv() instead of _read_null()
faulthandler._read_null() is not reliable: it does not crash on AIX.
2013-06-17 23:37:59 +02:00
Brett Cannon 3e9a9ae09d Update various test modules to use unittest.main() for test discovery
instead of manually listing tests for test.support.run_unittest().
2013-06-12 21:25:59 -04:00
Ezio Melotti e1857d999d Fix indentation. 2013-03-05 20:31:34 +02:00
Ezio Melotti 25a404520d #11732: add a new suppress_crash_popup() context manager to test.support. 2013-03-05 20:26:17 +02:00
Georg Brandl deb92b5b1b Closes #15969: rename new API to have consistent names in the faulthandler module. 2012-09-22 08:58:55 +02:00
Victor Stinner 53386d8f20 Issue #15463: Write a test for faulthandler truncating the name of functions
to 500 characters.
2012-08-01 19:45:34 +02:00
Victor Stinner d5698cbbca 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.
2012-07-31 02:55:49 +02:00
Vinay Sajip 363712349a Closes #14729: Allowed test to pass on Windows by adjusting the test condition slightly to allow for a Windows-specific error message. 2012-05-06 11:28:46 +01:00
Charles-François Natali 3391e64482 Issue #12868: Skip test_faulthandler.test_stack_overflow() on OpenBSD:
sigaltstack(2) doesn't work when linked with pthread.
2011-09-01 23:08:21 +02:00
Victor Stinner a8db378434 Issue #12700: fix test_faulthandler for Mac OS X Lion
Read from NULL raises SIGILL, not SIGSEGV, on Mac OS X Lion.
2011-08-08 22:43:45 +02:00
Victor Stinner a9a9dab042 Issue #12550: Add chain optional argument to faulthandler.register()
Call the previous signal handler if chain is True.
2011-07-13 23:39:53 +02:00
Victor Stinner 7248850bee Issue #12400: test_faulthandler now uses sys.__stderr__
instead of open(os.devnull, 'w')
2011-06-29 23:24:31 +02:00
Victor Stinner 7e32f3a401 Issue #12400: fix test_faulthandler if regrtest captures sys.stderr
faulthandler.enable() requires that sys.stderr has a fileno() method.
2011-06-29 13:44:05 +02:00
Victor Stinner 301f3f093c test_faulthandler: use a longer sleep (2.5 sec instead of 1.3 sec) in
_check_dump_tracebacks_later() to avoid failures if the system is slow.
2011-06-01 13:49:12 +02:00
Victor Stinner 7bba62fd68 faulthandler: dump all threads by default
* Set the default value of all_threads arguments to True
 * Py_FatalError() dumps all threads, instead of only the current thread

Dump only the current thread is not reliable. In some cases, Python is unable
to retrieve the state of the current thread and so is unable to dump the
traceback. faulthandler keeps a reference to the interpreter and so is always
able to dump the traceback of all threads.
2011-05-07 12:43:00 +02:00
Victor Stinner c790a5346d faulthandler: dump_tracebacks_later() displays also the timeout 2011-04-08 13:39:59 +02:00
Victor Stinner de10f4054b faulthandler: one more time, fix usage of locks in the watchdog thread
* Write a new test to ensure that dump_tracebacks_later() still works if
   it was already called and then cancelled before
 * Don't use a variable to check the status of the thread, only rely on locks
 * The thread only releases cancel_event if it was able to acquire it (if
   the timer was interrupted)
 * The main thread always hold this lock. It is only released when
   faulthandler_thread() is interrupted until this thread exits, or at Python
   exit.
2011-04-08 12:57:06 +02:00
Victor Stinner ff4cd88266 faulthandler: fix compilating without threads 2011-04-07 11:50:25 +02:00
Victor Stinner 9bdb43e43f Issue #11765: don't test time.sleep() in test_faulthandler
time.time() and/or time.sleep() are not accurate on Windows, don't test them
in test_faulthandler. Anyway, the check was written for an old implementation
of dump_tracebacks_later(), it is not more needed.
2011-04-04 23:42:30 +02:00
Victor Stinner f77ccc6d7e test_faulthandler: improve the test on dump_tracebacks_later(cancel=True) 2011-04-03 18:45:42 +02:00
Victor Stinner 1b3241fa0c test_faulthandler: fix regex on the check_dump_traceback_threads() traceback
The traceback may contain "_is_owned":

Thread 0x40962b90:
  File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 220 in _is_owned
  File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 227 in wait
  File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 421 in wait
  File "<string>", line 23 in run
  File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 735 in _bootstrap_inner
  File "/srv/buildbot/buildarea/3.x.bolen-ubuntu/build/Lib/threading.py", line 708 in _bootstrap

Current thread XXX:
  File "<string>", line 10 in dump
  File "<string>", line 28 in <module>
2011-04-03 18:41:22 +02:00
Victor Stinner 44378d46f6 Issue #11393: signal of user signal displays tracebacks even if tstate==NULL
* faulthandler_user() displays the tracebacks of all threads even if it is
   unable to get the state of the current thread
 * test_faulthandler: only release the GIL in test_gil_released() check
 * create check_signum() subfunction
2011-04-01 15:37:12 +02:00
Victor Stinner a01ca12a52 Issue #11393: Fix faulthandler.disable() and add a test 2011-04-01 12:56:17 +02:00
Victor Stinner d727e23243 Issue #11393: The fault handler handles also SIGABRT 2011-04-01 12:13:55 +02:00
Victor Stinner 7ad24e9a73 Issue #11393: test_faulthandler is more tolerant on inaccurate time 2011-03-31 22:35:49 +02:00
Victor Stinner eb50e51a0f Issue #11393: get more information on assertion error (test_faulthandler) 2011-03-31 19:07:58 +02:00
Victor Stinner 1940233102 Issue #11393: check that stdout is empty if we use a file 2011-03-31 18:15:52 +02:00
Victor Stinner 05585cbdc8 Issue #11393: test_faulthandler checks the exitcode after the output 2011-03-31 13:29:56 +02:00
Victor Stinner f048075079 Issue #11393: limit stack overflow test to 100 MB
Stop if the stack overflow doesn't occur after allocating 100 MB on the stack.
2011-03-31 11:34:08 +02:00
Victor Stinner 0862d6ed8f Issue #11393: Disable test_stack_overflow of test_faulthandler 2011-03-31 02:05:54 +02:00
Victor Stinner 024e37adcc Issue #11393: Add the new faulthandler module 2011-03-31 01:31:06 +02:00