sigprocmask() 导致段错误

发布于 2024-08-20 02:29:18 字数 214 浏览 6 评论 0原文

在多线程应用程序中使用 sigprocmask() 时是否存在任何已知的段错误原因?

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

有什么想法吗?

Are there any well known reasons for sigprocmask() to segfault when used in a multithreaded application?

I have an application that creates multiple threads using clone(). I have determined that for some reason when I use sigprocmask it segfaults (not all the time though). From the backtrace() it also seems like the segfault is occuring when I use sigprocmask() after a siglongjmp().

Any ideas?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

铃予 2024-08-27 02:29:18

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

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

Check the second and third arguments. If they are not NULL, ensure that they are each a valid pointer to a sigset_t.

Note that sigprocmask() is only officially defined for a single-threaded process. A multithreaded process should use pthread_sigmask() instead, which takes the same arguments although it returns the error code rather than using errno.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文