什么可以导致Valgrind堆栈跟踪中的奇怪地址?

(这个问题与从valgrind输出中过滤掉垃圾有关)。

我正在尝试调试一个大部分项目中的内存泄漏,这个项目大部分都不在我的手中 – 它是代码库的一个分支,大约有数百万行代码,尽管大部分可能与代码库无关。我正在努力的一小部分。 由于手工查看它非常困难,我正在尝试使用valgrind来追踪泄漏。

问题是堆栈跟踪看起来像这样:

==83597== 920 bytes in 1 blocks are possibly lost in loss record 750 of 864 ==83597== at 0x4C2AB80: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so) ==83597== by 0x548EF93: myproject_malloc (mysourcefile.c:48) ==83597== by 0x4F13FD5: ??? (in /path/to/project/library-version.so) ==83597== by 0xFFEFFFD5F: ??? ==83597== by 0x38F: ??? ==83597== by 0xFFEFFFE5F: ??? ==83597== by 0xF: ??? ==83597== by 0x54542FF: ??? (in /path/to/project/library-version.so) ==83597== by 0x4F536CA: ??? (in /path/to/project/library-version.so) ==83597== by 0x64B981F: ??? ==83597== by 0xF: ??? ==83597== by 0x54542FF: ??? (in /path/to/project/library-version.so) 

什么可能导致像0xF0x38F等微小的地址? 我正在使用Debian风格的x86_64 Linux发行版。 我找不到x86_64的参考资料,但据我所知 ,真正的数据不应该在更高的地址开始。

问题是Makefile正在启用fomit-frame-pointer