【问题标题】:An issue of C in 64 bit architecture: pthread_kill()64位架构中的C问题:pthread_kill()
【发布时间】:2011-06-11 16:18:33
【问题描述】:

问题很简单:我的应用程序在 32 位架构上完美运行,但在 64 位架构上运行。我得到了segmentation fault。我猜原因是执行了pthread_kill() 调用。有可能还是我的假设是错误的?

【问题讨论】:

  • 这只是你的猜测。如果您将程序移植到另一个处理器体系结构,所有类型的事情都可能发生。在调试器中运行你的程序,看看段错误是从哪里来的。

标签: c 64-bit pthreads segmentation-fault 32bit-64bit


【解决方案1】:

这是一个关于在pthread_kill 上抛出segfault 问题的链接,这是由无效的pthread_t ids 引起的:http://udrepper.livejournal.com/16844.html

【讨论】:

    【解决方案2】:

    您使用的是什么操作系统和什么 glibc?

    如果您使用的是 pthread 的主流实现(比如 Linux 上最近的 GNU glibc),我很确定它们没有损坏。

    我认为您的崩溃可能是由于您的代码中的某些问题,或者可能是由于 32 位和 64 位二进制代码的错误混合。

    您能否尝试用尽可能少的代码行重现您的崩溃并将其粘贴到此处?

    【讨论】:

    • 我使用的是 Debian GNU/Linux 2.6.26-2-686 内核版本和 2.7 glibc 版本。
    • 在 Linux 上的同一用户级应用程序中“混合”32 位和 64 位代码在物理上是不可能的。
    【解决方案3】:

    分段错误几乎可以肯定不是pthread_kill() 的结果,而是应用程序中一个普通的旧错误(许多错误仅在 64 位编译中出现,或者仅在某些内存布局中出现; 您的这里的特定应用程序没什么特别的)。

    不要猜测原因可能是什么,而是在GDBValgrind 下运行您的应用程序。两者都可能会令人痛苦地清楚您的错误在哪里。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-07
      • 2014-01-10
      • 2015-08-27
      • 2014-12-17
      • 2017-02-05
      • 1970-01-01
      • 1970-01-01
      • 2019-11-12
      相关资源
      最近更新 更多