diff options
| -rw-r--r-- | src/linux/membarrier.c | 2 | ||||
| -rw-r--r-- | src/thread/pthread_cancel.c | 2 | ||||
| -rw-r--r-- | src/thread/synccall.c | 2 | 
3 files changed, 3 insertions, 3 deletions
diff --git a/src/linux/membarrier.c b/src/linux/membarrier.c index 343f7360..f64fe7e1 100644 --- a/src/linux/membarrier.c +++ b/src/linux/membarrier.c @@ -35,7 +35,7 @@ int __membarrier(int cmd, int flags)  		__tl_lock();  		sem_init(&barrier_sem, 0, 0);  		struct sigaction sa = { -			.sa_flags = SA_RESTART, +			.sa_flags = SA_RESTART | SA_ONSTACK,  			.sa_handler = bcast_barrier  		};  		memset(&sa.sa_mask, -1, sizeof sa.sa_mask); diff --git a/src/thread/pthread_cancel.c b/src/thread/pthread_cancel.c index 2f9d5e97..2d3a98ea 100644 --- a/src/thread/pthread_cancel.c +++ b/src/thread/pthread_cancel.c @@ -77,7 +77,7 @@ void __testcancel()  static void init_cancellation()  {  	struct sigaction sa = { -		.sa_flags = SA_SIGINFO | SA_RESTART, +		.sa_flags = SA_SIGINFO | SA_RESTART | SA_ONSTACK,  		.sa_sigaction = cancel_handler  	};  	memset(&sa.sa_mask, -1, _NSIG/8); diff --git a/src/thread/synccall.c b/src/thread/synccall.c index d58c851f..a6b177c0 100644 --- a/src/thread/synccall.c +++ b/src/thread/synccall.c @@ -45,7 +45,7 @@ void __synccall(void (*func)(void *), void *ctx)  {  	sigset_t oldmask;  	int cs, i, r; -	struct sigaction sa = { .sa_flags = SA_RESTART, .sa_handler = handler }; +	struct sigaction sa = { .sa_flags = SA_RESTART | SA_ONSTACK, .sa_handler = handler };  	pthread_t self = __pthread_self(), td;  	int count = 0;  | 
