2010-01-31 9 views
3

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

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

Любые идеи?

ответ

1

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

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