Valgrind错误:UME失败,错误22

时间:2010-11-20 02:03:16

标签: c debugging valgrind

我正在玩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.

但我的可执行文件只有简单的变量赋值。我无法理解如何解决这个问题。有什么建议吗?

3 个答案:

答案 0 :(得分:8)

我没有答案,但这个问题有一个漏洞。

http://bugs.kde.org/show_bug.cgi?id=138424

答案 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运行时不会出错,尽管该阈值似乎有些武断。