3

在多线程应用程序中使用 sigprocmask() 是否有任何众所周知的原因导致段错误?

我有一个使用 clone() 创建多个线程的应用程序。我已经确定,由于某种原因,当我使用 sigprocmask 时,它会出现段错误(尽管并非一直如此)。从 backtrace() 看来,当我在 siglongjmp() 之后使用 sigprocmask() 时,似乎也发生了段错误。

有任何想法吗?

4

1 回答 1

1

检查第二个和第三个参数。如果它们不为 NULL,请确保它们都是指向 a 的有效指针sigset_t

请注意,这sigprocmask()只是为单线程进程正式定义的。应该使用多线程进程pthread_sigmask(),尽管它返回错误代码而不是使用errno.

于 2010-02-01T08:58:09.447 回答