sigprocmask() вызывает segfault

Есть ли какие-либо общеизвестные причины, по которым sigprocmask () может вызывать segfault при использовании в многопоточном приложении?

У меня есть приложение, которое создает несколько потоков, используя clone(). Я определил, что по какой-то причине, когда я использую sigprocmask, он вызывает ошибки (хотя и не всегда). Из backtrace() также кажется, что произошла ошибка, когда я использую sigprocmask () после siglongjmp().

Есть идеи?

1 ответ

Решение

Проверьте второй и третий аргументы. Если они не равны NULL, убедитесь, что каждый из них является действительным указателем на sigset_t,

Обратите внимание, что sigprocmask() только официально определен для однопоточного процесса. Многопоточный процесс должен использовать pthread_sigmask() вместо этого, который принимает те же аргументы, хотя он возвращает код ошибки, а не используя errno,

Другие вопросы по тегам