我正在玩Valgrind的工具开发,我收到以下错误:
valgrind: mmap(0x8048000, 4096) failed in UME with error 22 (Invalid argument).
valgrind: this can be caused by executables with very large text, data or bss segments.
但我的可执行文件只有简单的变量赋值。我无法理解如何解决这个问题。有什么建议吗?
答案 0 :(得分:8)
我没有答案,但这个问题有一个漏洞。
答案 1 :(得分:3)
我为我的案子解决了这个并提交了补丁:
https://bugs.kde.org/show_bug.cgi?id=290061
如果您或其他任何有此问题的人正在使用-pie
构建您的可执行文件,这也可能对您有帮助。
答案 2 :(得分:0)
我也遇到了此错误。在我的情况下,我正在分析的程序包含巨大的静态分配的数组,这导致.bss
段大小爆炸(超过2 GiB):
$ size ./MyExe
text data bss dec hex filename
50324 2480 2338486216 2338539020 8b63460c MyExe.exe
只有在重负载下进行测试时才需要大型数组,因此我在代码中将数组定义为小得多并重新编译。这将.bss
段缩小到更合理的程度,并允许我使用Valgrind正常运行该程序。
注意:似乎我需要在.bss
下获得932000000
段,以使Valgrind运行时不会出错,尽管该阈值似乎有些武断。