Bug 1403668 - Use SA_ONSTACK for several SIGSEGV handlers. r=ted

MozReview-Commit-ID: IwVYiBF3Ek8

--HG--
extra : rebase_source : 3bbcdee6042aa9e159432c8d0df6f922dba002f1
This commit is contained in:
Christian Holler 2017-10-07 17:59:37 +02:00
Родитель 449d985d8e
Коммит dfac1cc60d
3 изменённых файлов: 4 добавлений и 4 удалений

Просмотреть файл

@ -282,7 +282,7 @@ MemoryProtectionExceptionHandler::install()
// Install our new exception handler and save the previous one.
struct sigaction faultHandler = {};
faultHandler.sa_flags = SA_SIGINFO | SA_NODEFER;
faultHandler.sa_flags = SA_SIGINFO | SA_NODEFER | SA_ONSTACK;
faultHandler.sa_sigaction = UnixExceptionHandler;
sigemptyset(&faultHandler.sa_mask);
sExceptionHandlerInstalled = !sigaction(SIGSEGV, &faultHandler, &sPrevSEGVHandler);

Просмотреть файл

@ -1617,7 +1617,7 @@ ProcessHasSignalHandlers()
// Allow handling OOB with signals on all architectures
struct sigaction faultHandler;
faultHandler.sa_flags = SA_SIGINFO | SA_NODEFER;
faultHandler.sa_flags = SA_SIGINFO | SA_NODEFER | SA_ONSTACK;
faultHandler.sa_sigaction = WasmFaultHandler<Signal::SegFault>;
sigemptyset(&faultHandler.sa_mask);
if (sigaction(SIGSEGV, &faultHandler, &sPrevSEGVHandler))
@ -1626,7 +1626,7 @@ ProcessHasSignalHandlers()
# if defined(JS_CODEGEN_ARM)
// On Arm Handle Unaligned Accesses
struct sigaction busHandler;
busHandler.sa_flags = SA_SIGINFO | SA_NODEFER;
busHandler.sa_flags = SA_SIGINFO | SA_NODEFER | SA_ONSTACK;
busHandler.sa_sigaction = WasmFaultHandler<Signal::BusError>;
sigemptyset(&busHandler.sa_mask);
if (sigaction(SIGBUS, &busHandler, &sPrevSIGBUSHandler))

Просмотреть файл

@ -374,7 +374,7 @@ nsresult nsProfileLock::LockWithSymlink(nsIFile *aLockFile, bool aHaveFcntlLock)
struct sigaction act, oldact;
#ifdef SA_SIGINFO
act.sa_sigaction = FatalSignalHandler;
act.sa_flags = SA_SIGINFO;
act.sa_flags = SA_SIGINFO | SA_ONSTACK;
#else
act.sa_handler = FatalSignalHandler;
#endif