【发布时间】: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。我已将其隔离为全局变量。我将一一介绍。