mirror of
https://github.com/RPCSX/llvm.git
synced 2024-12-13 14:46:53 +00:00
Fixes a hang that can occur if a signal comes in during malloc calls.
We need to dereference the signals mutex during handler registration so that we force its construction. This is to prevent the first use being during handling an actual signal because you can't safely allocate memory in a signal handler. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235914 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
445b1c78a5
commit
dbaf039dde
@ -112,6 +112,12 @@ static void RegisterHandler(int Signal) {
|
||||
}
|
||||
|
||||
static void RegisterHandlers() {
|
||||
// We need to dereference the signals mutex during handler registration so
|
||||
// that we force its construction. This is to prevent the first use being
|
||||
// during handling an actual signal because you can't safely call new in a
|
||||
// signal handler.
|
||||
*SignalsMutex;
|
||||
|
||||
// If the handlers are already registered, we're done.
|
||||
if (NumRegisteredSignals != 0) return;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user