在多线程应用程序中使用时,是否有任何众所周知的原因导致sigprocmask()出现段错误?
我有一个使用clone()创建多个线程的应用程序。我已经确定,由于某些原因,当我使用sigprocmask时,会出现段错误(尽管不是所有时间)。从backtrace()开始,当我在siglongjmp()之后使用sigprocmask()时,似乎也发生了段错误。
有什么想法吗?
答案 0 :(得分:1)
检查第二个和第三个参数。如果它们不是NULL,请确保它们都是指向sigset_t
的有效指针。
请注意,sigprocmask()
仅为单线程进程正式定义。多线程进程应使用pthread_sigmask()
代替,虽然它返回错误代码而不是errno
,但它采用相同的参数。