sigprocmask () вызывает segfault - PullRequest
       22

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

3 голосов
/ 31 января 2010

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

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

Есть идеи?

1 Ответ

1 голос
/ 01 февраля 2010

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

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

...