summaryrefslogtreecommitdiffstats
path: root/Modules/signalmodule.c
Commit message (Collapse)AuthorAgeFilesLines
* bpo-30057: Fix potential missed signal in signal.signal(). (GH-4258) (#4261)Miss Islington (bot)2017-11-031-1/+4
| | | | Bug report and patch by Jeroen Demeyer. (cherry picked from commit f6f90ff079a22b79a58d47b6117cc8a8c7d366f3)
* [3.6] bpo-30808: Use _Py_atomic API for concurrency-sensitive signal state ↵Antoine Pitrou2017-08-061-18/+20
| | | | | | | | | | | | | | | | (GH-2417) (#3007) * Improve signal delivery Avoid using Py_AddPendingCall from signal handler, to avoid calling signal-unsafe functions. * Remove unused function * Improve comments * Use _Py_atomic API for concurrency-sensitive signal state * Add blurb (cherry picked from commit 2c8a5e4c968217f9672340e520942c4ed788d8de)
* [3.6] bpo-30703: Improve signal delivery (GH-2415) (#2527)Antoine Pitrou2017-07-011-16/+14
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | * [3.6] bpo-30703: Improve signal delivery (GH-2415) * Improve signal delivery Avoid using Py_AddPendingCall from signal handler, to avoid calling signal-unsafe functions. * Remove unused function * Improve comments * Add stress test * Adapt for --without-threads * Add second stress test * Add NEWS blurb * Address comments @haypo. (cherry picked from commit c08177a1ccad2ed0d50898c2731b518c631aed14) * bpo-30796: Fix failures in signal delivery stress test (#2488) * bpo-30796: Fix failures in signal delivery stress test setitimer() can have a poor minimum resolution on some machines, this would make the test reach its deadline (and a stray signal could then kill a subsequent test). * Make sure to clear the itimer after the test
* [3.6] bpo-30807: signal.setitimer() may disable the timer by mistake ↵Antoine Pitrou2017-06-301-0/+4
| | | | | | | | (GH-2493) (#2497) * bpo-30807: signal.setitimer() may disable the timer by mistake * Add NEWS blurb (cherry picked from commit 729780a810bbcb12b245a1b652302a601fc9f6fd)
* bpo-30038: fix race condition in signal delivery + wakeup fd (#1082) (#2075)Victor Stinner2017-06-101-7/+26
| | | | | | | | | | | | | | | | | | | | Before, it was possible to get the following sequence of events (especially on Windows, where the C-level signal handler for SIGINT is run in a separate thread): - SIGINT arrives - trip_signal is called - trip_signal writes to the wakeup fd - the main thread wakes up from select()-or-equivalent - the main thread checks for pending signals, but doesn't see any - the main thread drains the wakeup fd - the main thread goes back to sleep - trip_signal sets is_tripped=1 and calls Py_AddPendingCall to notify the main thread the it should run the Python-level signal handler - the main thread doesn't notice because it's asleep This has been causing repeated failures in the Trio test suite: https://github.com/python-trio/trio/issues/119 (cherry picked from commit 4ae01496971624c75080431806ed1c08e00f22c7)
* Issue #28139: Merge indentation fixes from 3.5 into 3.6Martin Panter2016-09-171-7/+7
|\
| * Issue #28139: Fix messed up indentationMartin Panter2016-09-171-7/+7
| | | | | | | | | | Also update the classmethod and staticmethod doc strings and comments to match the RST documentation.
* | Use PyModule_AddIntMacro() in signal moduleChristian Heimes2016-09-081-129/+86
| | | | | | | | | | | | | | The signal module was using old-style module initialization with potential NULL dereferencing. CID 1295026
* | Issue #23524: Finish removing _PyVerify_fd from sourcesSteve Dower2016-09-081-6/+1
| |
* | replace Py_(u)intptr_t with the c99 standard typesBenjamin Peterson2016-09-061-2/+2
|/
* Issue #27332: Fixed the type of the first argument of module-level functionsSerhiy Storchaka2016-07-071-26/+26
| | | | generated by Argument Clinic. Patch by Petr Viktorin.
* Issue #26200: Added Py_SETREF and replaced Py_XSETREF with Py_SETREFSerhiy Storchaka2016-04-101-1/+1
| | | | in places where Py_DECREF was used.
* Issue #22570: Renamed Py_SETREF to Py_XSETREF.Serhiy Storchaka2016-04-061-1/+1
|
* Issue #20440: Massive replacing unsafe attribute setting code with specialSerhiy Storchaka2015-12-241-2/+1
| | | | macro Py_SETREF.
* Fixed compilation error in signalmodule.c (issue #20182).Serhiy Storchaka2015-05-161-3/+3
|
* Issue #20182: converted the signal module to use Argument ClinicTal Einat2015-05-161-215/+246
|
* Issue #23836: Use _Py_write_noraise() to retry on EINTR in trip_signal() ofVictor Stinner2015-04-011-3/+4
| | | | signalmodule.c
* PEP 475: on EINTR, retry the function even if the timeout is equals to zeroVictor Stinner2015-03-301-1/+1
| | | | | | | | | Retry: * signal.sigtimedwait() * threading.Lock.acquire() * threading.RLock.acquire() * time.sleep()
* Issue #23752: _Py_fstat() is now responsible to raise the Python exceptionVictor Stinner2015-03-301-7/+3
| | | | Add _Py_fstat_noraise() function when a Python exception is not welcome.
* Issue #22117: Replace usage of _PyTime_ROUND_UP with _PyTime_ROUND_CEILINGVictor Stinner2015-03-301-1/+2
| | | | | All these functions only accept positive timeouts, so this change has no effect in practice.
* Issue #22117: The signal modules uses the new _PyTime_t APIVictor Stinner2015-03-271-14/+13
| | | | | * Add _PyTime_AsTimespec() * Add unit tests for _PyTime_AsTimespec()
* Issue #23715: signal.sigwaitinfo() and signal.sigtimedwait() are now retriedVictor Stinner2015-03-201-26/+47
| | | | | | | | | | when interrupted by a signal not in the *sigset* parameter, if the signal handler does not raise an exception. signal.sigtimedwait() recomputes the timeout with a monotonic clock when it is retried. Remove test_signal.test_sigwaitinfo_interrupted() because sigwaitinfo() doesn't raise InterruptedError anymore if it is interrupted by a signal not in its sigset parameter.
* Issue #23524: Change back to using Windows errors for _Py_fstat instead of ↵Steve Dower2015-03-081-1/+1
| | | | the errno shim.
* Issue #23152: Implement _Py_fstat() to support files larger than 2 GB on ↵Steve Dower2015-02-211-4/+3
| | | | | | Windows. fstat() may fail with EOVERFLOW on files larger than 2 GB because the file size type is an signed 32-bit integer.
* Issue #23450: Fix signal.set_wakeup_fd() on WindowsVictor Stinner2015-02-121-11/+14
| | | | Detect integer overflow on the file descriptor of the socket on 64-bit Python.
* Issue #22869: Split pythonrun into two modulesNick Coghlan2014-11-201-1/+1
| | | | | | | - interpreter startup and shutdown code moved to a new pylifecycle.c module - Py_OptimizeFlag moved into the new module with the other global flags
* Issue #22042: signal.set_wakeup_fd(fd) now raises an exception if the fileVictor Stinner2014-08-271-1/+19
| | | | descriptor is in blocking mode.
* Issue #22018: On Windows, signal.set_wakeup_fd() now also supports sockets.Victor Stinner2014-07-291-18/+165
| | | | A side effect is that Python depends to the WinSock library.
* Backout 42ced0d023cd: oops, i didn't want to push this changeset :-/Victor Stinner2014-07-241-136/+19
|
* tetsVictor Stinner2014-07-241-19/+136
|
* Issue #22018: signal.set_wakeup_fd() now raises an OSError instead of aVictor Stinner2014-07-211-3/+11
| | | | ValueError on fstat() failure.
* merge along w/ fix for issue #2107 (commit c9239171e429)Brett Cannon2014-04-041-3/+3
|\
| * fix #21076: turn signal module constants into enumsGiampaolo Rodola'2014-04-041-2/+2
|/
* Issue #20320: select.select() and select.kqueue.control() now round the timeoutVictor Stinner2014-02-161-1/+2
| | | | | | aways from zero, instead of rounding towards zero. It should make test_asyncio more reliable, especially test_timeout_rounding() test.
* Issue #20437: Fixed 22 potential bugs when deleting objects references.Serhiy Storchaka2014-02-091-6/+3
|\
| * Issue #20437: Fixed 21 potential bugs when deleting objects references.Serhiy Storchaka2014-02-091-6/+3
| |
* | Issue #18774: Remove last bits of GNU PTH thread code, patch by Vajrasky Kok.Christian Heimes2013-08-181-12/+0
| |
* | Issue #16105: When a signal handler fails to write to the file descriptor ↵Antoine Pitrou2013-08-171-1/+17
| | | | | | | | registered with ``signal.set_wakeup_fd()``, report an exception instead of ignoring the error.
* | Issue #18520: Add a new PyStructSequence_InitType2() function, same thanVictor Stinner2013-07-221-3/+4
| | | | | | | | | | | | | | | | PyStructSequence_InitType() except that it has a return value (0 on success, -1 on error). * PyStructSequence_InitType2() now raises MemoryError on memory allocation failure * Fix also some calls to PyDict_SetItemString(): handle error
* | Issue #14173: Avoid crashing when reading a signal handler during ↵Antoine Pitrou2013-05-041-3/+11
|\ \ | |/ | | | | interpreter shutdown.
| * Issue #14173: Avoid crashing when reading a signal handler during ↵Antoine Pitrou2013-05-041-3/+11
| | | | | | | | interpreter shutdown.
* | Merge.Richard Oudkerk2013-04-171-1/+5
|\ \ | |/
| * - Issue #17782: Fix undefined behaviour on platforms where ``struct ↵Antoine Pitrou2013-04-171-1/+5
| | | | | | | | timespec``'s "tv_nsec" member is not a C long.
* | Issue #17591: Use lowercase filenames when including Windows header files.Antoine Pitrou2013-03-311-1/+1
| | | | | | | | Patch by Roumen Petrov.
* | Issue #4591: Uid and gid values larger than 2**31 are supported now.Serhiy Storchaka2013-02-101-1/+4
|\ \ | |/
| * Issue #4591: Uid and gid values larger than 2**31 are supported now.Serhiy Storchaka2013-02-101-1/+4
| |
* | Issue #17098: all modules should have __loader__Brett Cannon2013-02-011-2/+1
|\ \ | |/
| * Issue #17098: Make sure every module has __loader__ defined.Brett Cannon2013-02-011-2/+1
| | | | | | | | Thanks to Thomas Heller for the bug report.
* | merge 3.3Benjamin Peterson2013-01-181-1/+1
|\ \ | |/
| * check windows fd validity (closes #16992)Benjamin Peterson2013-01-181-1/+1
| |