mirror of https://github.com/python/cpython
Fixes issue #9535: Fix pending signals that have been received but not
yet handled by Python to not persist after os.fork() in the child process.
This commit is contained in:
commit
0b83224c0d
|
@ -10,6 +10,9 @@ What's New in Python 3.4.0 Alpha 1?
|
||||||
Core and Builtins
|
Core and Builtins
|
||||||
-----------------
|
-----------------
|
||||||
|
|
||||||
|
- Issue #9535: Fix pending signals that have been received but not yet
|
||||||
|
handled by Python to not persist after os.fork() in the child process.
|
||||||
|
|
||||||
- Issue #14794: Fix slice.indices to return correct results for huge values,
|
- Issue #14794: Fix slice.indices to return correct results for huge values,
|
||||||
rather than raising OverflowError.
|
rather than raising OverflowError.
|
||||||
|
|
||||||
|
|
|
@ -1389,9 +1389,25 @@ PyOS_InterruptOccurred(void)
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void
|
||||||
|
_clear_pending_signals(void)
|
||||||
|
{
|
||||||
|
int i;
|
||||||
|
if (!is_tripped)
|
||||||
|
return;
|
||||||
|
is_tripped = 0;
|
||||||
|
for (i = 1; i < NSIG; ++i) {
|
||||||
|
Handlers[i].tripped = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
PyOS_AfterFork(void)
|
PyOS_AfterFork(void)
|
||||||
{
|
{
|
||||||
|
/* Clear the signal flags after forking so that they aren't handled
|
||||||
|
* in both processes if they came in just before the fork() but before
|
||||||
|
* the interpreter had an opportunity to call the handlers. issue9535. */
|
||||||
|
_clear_pending_signals();
|
||||||
#ifdef WITH_THREAD
|
#ifdef WITH_THREAD
|
||||||
/* PyThread_ReInitTLS() must be called early, to make sure that the TLS API
|
/* PyThread_ReInitTLS() must be called early, to make sure that the TLS API
|
||||||
* can be called safely. */
|
* can be called safely. */
|
||||||
|
|
Loading…
Reference in New Issue