linux - sigprocmask() 导致段错误

标签 linux multithreading sigprocmask

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

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

有什么想法吗?

最佳答案

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

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

关于linux - sigprocmask() 导致段错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2170672/

相关文章:

c - Busybox udhcpd vfork 启动两个进程

linux - 什么是 tcpdump 单行​​转储与给定子字符串匹配的 TCP 流?

multithreading - 在多核机器上加速 Pandas

c - UNIX 中的 sigprocmask( ) 阻塞信号

linux - “C-s C-w”不起作用 - Emacs

linux - 如何自定义窗口菜单(linux ubuntu)

wpf - 不能在两个线程中同时使用 Window 控件

multithreading - 批处理作业与 CPU 密集型任务和调度

linux - 信号掩码不工作