【问题标题】:valgrind strange conditional jump messages before program startsvalgrind在程序启动前出现奇怪的条件跳转消息
【发布时间】:2012-05-07 07:04:35
【问题描述】:

在我的程序启动之前,我收到了未初始化的值消息,这些消息引用了不在我的程序中的函数调用。我很困惑为什么会收到这些消息以及如何清理它们?

==24266== Conditional jump or move depends on uninitialised value(s)
==24266==    at 0x809098A: __linkin_atfork (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x80919EB: _dl_non_dynamic_init (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x80921B1: __libc_init_first (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x805F60B: (below main) (in /home/mbarry/workspace/datapup/src/plugin)
==24266==  Uninitialised value was created
==24266==    at 0x8091662: _dl_sysinfo_int80 (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x80BE31F: brk (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x808DE99: sbrk (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x805F96B: __libc_setup_tls (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x805FB66: __pthread_initialize_minimal (in /home/mbarry/workspace/datapup/src/plugin)
==24266==    by 0x805F5A3: (below main) (in /home/mbarry/workspace/datapup/src/plugin)

【问题讨论】:

  • 它们很可能是通过在程序开始执行之前创建的全局对象。您是否创建了库类型的任何全局对象?
  • 我删除了 pthread.h 和所有对 pthread 的引用,但我仍然收到相同的消息。我确实有很多全局变量。
  • 假设您使用gdb:您是否还从构建命令中删除了-pthread 选项?
  • 是的,我不再链接 pthread。我已将其隔离为全局变量。我将一一介绍。

标签: c linux valgrind


【解决方案1】:

在我的 gcc makefile 中错误使用 -D_THREAD_SAFE -D_REENTRANT -static 标志导致内存问题。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-20
    • 1970-01-01
    • 1970-01-01
    • 2016-09-27
    • 1970-01-01
    • 1970-01-01
    • 2015-08-04
    • 1970-01-01
    相关资源
    最近更新 更多