Use alternate stack for the segfault handler too

This commit is contained in:
Gabriel A 2023-07-12 16:16:40 -03:00 committed by Emmanuel Hansen
parent 7925581e72
commit 2ad3605cdb
5 changed files with 22 additions and 111 deletions

View file

@ -100,25 +100,13 @@ namespace Ryujinx.Cpu.Signal
if (customSignalHandlerFactory != null)
{
_signalHandlerPtr = customSignalHandlerFactory(Ryujinx.Common.SystemInfo.SystemInfo.IsAndroid() ?
AndroidSignalHandlerRegistration.GetSegfaultExceptionHandler().sa_handler :
UnixSignalHandlerRegistration.GetSegfaultExceptionHandler().sa_handler, _signalHandlerPtr);
_signalHandlerPtr = customSignalHandlerFactory(UnixSignalHandlerRegistration.GetSegfaultExceptionHandler().sa_handler, _signalHandlerPtr);
}
if (Ryujinx.Common.SystemInfo.SystemInfo.IsAndroid())
{
var old = AndroidSignalHandlerRegistration.RegisterExceptionHandler(_signalHandlerPtr);
var old = UnixSignalHandlerRegistration.RegisterExceptionHandler(_signalHandlerPtr);
config.UnixOldSigaction = (nuint)(ulong)old.sa_handler;
config.UnixOldSigaction3Arg = old.sa_flags & 4;
}
else
{
var old = UnixSignalHandlerRegistration.RegisterExceptionHandler(_signalHandlerPtr);
config.UnixOldSigaction = (nuint)(ulong)old.sa_handler;
config.UnixOldSigaction3Arg = old.sa_flags & 4;
}
config.UnixOldSigaction = (nuint)(ulong)old.sa_handler;
config.UnixOldSigaction3Arg = old.sa_flags & 4;
}
else
{