【问题标题】:Segmentation fault in multithreaded application多线程应用程序中的分段错误
【发布时间】:2011-12-29 17:03:24
【问题描述】:

我的多线程应用程序中有一个分段错误,这让我很头疼。看起来问题是在 usleep 调用中产生的。我试图用 nanosleep 替换它,但它仍然存在。它也出现在 sem_timedwait 调用附近。

我使用 gcc 和 -lpthread 选项进行编译。

这可能是分段错误的原因吗?可能是什么原因?

【问题讨论】:

  • 分段错误的根源更有可能是代码中的错误。在你展示你的代码之前,不可能说出哪里出了问题。
  • 这个问题并不真正适合 SO 问题/答案格式。尝试提出更具体的问题。
  • 如果您需要帮助调试代码,您需要发布一个 MINIMAL COMPLETE 示例。它需要很小以便适合帖子,但也需要完整,显示重现问题所需的一切。没有它,您将得不到任何有用的帮助。
  • 我想发布有问题的代码,但是应用程序很大而且是多线程的,我找不到它。我使用嵌入式设备,我无法进行实时调试:(只是想知道 usleep/nanosleep/sem_timedwait 是否有可能......
  • @mydog 虽然无法给出具体答案,但可以提供一般指导。确实,Q 要求的正是这一点。有时您需要根据 Q 中可用的详细程度调整响应。

标签: c++ pthreads usleep


【解决方案1】:

分段错误意味着您正在访问您无权访问的内存。这通常是由于数组的边界错误或过时的指针,例如免费后访问。除非您使用 sleep 作为同步工具,否则调用 sleep 似乎极不可能与此相关!你可以使用 valgrind 来追踪你的错误。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-06-09
    • 2018-04-25
    • 1970-01-01
    • 2015-09-20
    • 1970-01-01
    • 2015-11-08
    相关资源
    最近更新 更多