sigprocmask() вызывает segfault
Есть ли какие-либо общеизвестные причины, по которым sigprocmask () может вызывать segfault при использовании в многопоточном приложении?
У меня есть приложение, которое создает несколько потоков, используя clone(). Я определил, что по какой-то причине, когда я использую sigprocmask, он вызывает ошибки (хотя и не всегда). Из backtrace() также кажется, что произошла ошибка, когда я использую sigprocmask () после siglongjmp().
Есть идеи?
1 ответ
Проверьте второй и третий аргументы. Если они не равны NULL, убедитесь, что каждый из них является действительным указателем на sigset_t
,
Обратите внимание, что sigprocmask()
только официально определен для однопоточного процесса. Многопоточный процесс должен использовать pthread_sigmask()
вместо этого, который принимает те же аргументы, хотя он возвращает код ошибки, а не используя errno
,