From a314298d68b67e8581e79810ed965e7db4540024 Mon Sep 17 00:00:00 2001 From: Glenn Maynard Date: Sun, 15 Feb 2004 22:29:51 +0000 Subject: [PATCH] fix altsigstack never being used allocate a larger altsigstack handle failed altsigstack alloc better --- stepmania/src/archutils/Unix/SignalHandler.cpp | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/stepmania/src/archutils/Unix/SignalHandler.cpp b/stepmania/src/archutils/Unix/SignalHandler.cpp index e7b5cbacd8..918e597d8d 100644 --- a/stepmania/src/archutils/Unix/SignalHandler.cpp +++ b/stepmania/src/archutils/Unix/SignalHandler.cpp @@ -77,19 +77,24 @@ void SignalHandler::OnClose(handler h) int version; GetKernel( system, version ); void *p = NULL; - if( version > 0x020500 ) - p = mmap( NULL, SIGSTKSZ, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 ); + const int AltStackSize = 1024*64; + if( version > 20500 ) + p = mmap( NULL, AltStackSize, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0 ); if( p == (void *) -1 ) - p = malloc( SIGSTKSZ ); + p = malloc( AltStackSize ); if( p != NULL ) { stack_t ss; ss.ss_sp = p; - ss.ss_size = SIGSTKSZ; + ss.ss_size = AltStackSize; ss.ss_flags = 0; - sigaltstack( &ss, NULL ); + if( sigaltstack( &ss, NULL ) == -1 ) + { + LOG->Info( "sigaltstack failed: %s", strerror(errno) ); + p = NULL; /* no SA_ONSTACK */ + } } /* Set up our signal handlers. */