diff --git a/src/linux/syscall_hooks/syscall_hooks.c b/src/linux/syscall_hooks/syscall_hooks.c index 787bdd5bf43aecced06d266e4070fd2e3523d63b..0180dc6499aa275549b32b2463fa108ab43d2b60 100644 --- a/src/linux/syscall_hooks/syscall_hooks.c +++ b/src/linux/syscall_hooks/syscall_hooks.c @@ -54,6 +54,8 @@ int set_syscall_hooks(const char *hooks_table, int table_len, void *hooks_entry, } if (ret == 0) { + sigset_t set; + __block_app_sigs(&set); __tl_lock(); if (get_tl_lock_caller_count()) { get_tl_lock_caller_count()->set_syscall_hooks_tl_lock++; @@ -74,6 +76,7 @@ int set_syscall_hooks(const char *hooks_table, int table_len, void *hooks_entry, get_tl_lock_caller_count()->set_syscall_hooks_tl_lock--; } __tl_unlock(); + __restore_sigs(&set); } return ret; diff --git a/src/syscall_hooks/linux/syscall_hooks.c b/src/syscall_hooks/linux/syscall_hooks.c index a783729971480dafdfaf5da02c7ef6e42e3876f9..b570e1e045f127bb85b263852e8c2ee09c98fc9d 100644 --- a/src/syscall_hooks/linux/syscall_hooks.c +++ b/src/syscall_hooks/linux/syscall_hooks.c @@ -54,6 +54,8 @@ int set_syscall_hooks(const char *hooks_table, int table_len, void *hooks_entry, } if (ret == 0) { + sigset_t set; + __block_app_sigs(&set); __tl_lock(); if (get_tl_lock_caller_count()) { @@ -75,6 +77,7 @@ int set_syscall_hooks(const char *hooks_table, int table_len, void *hooks_entry, get_tl_lock_caller_count()->set_syscall_hooks_linux_tl_lock--; } __tl_unlock(); + __restore_sigs(&set); } return ret; diff --git a/src/thread/linux/pthread_create.c b/src/thread/linux/pthread_create.c index 8617cd9b817e591900b47ad22832c0bcc6eb0c7b..c3674d4a8515a03da7c693e4722d29736ca5fbc2 100644 --- a/src/thread/linux/pthread_create.c +++ b/src/thread/linux/pthread_create.c @@ -687,6 +687,8 @@ struct pthread* __pthread_list_find(pthread_t thread_id, const char* info) pid_t __pthread_gettid_np(pthread_t t) { + sigset_t set; + __block_app_sigs(&set); __tl_lock(); if (get_tl_lock_caller_count()) { get_tl_lock_caller_count()->__pthread_gettid_np_tl_lock++; @@ -696,6 +698,7 @@ pid_t __pthread_gettid_np(pthread_t t) get_tl_lock_caller_count()->__pthread_gettid_np_tl_lock--; } __tl_unlock(); + __restore_sigs(&set); return thread ? thread->tid : -1; } weak_alias(__pthread_gettid_np, pthread_gettid_np);