【问题标题】:valgrind: mmap(0x600000, 8192) failed in UME with error 12 (Cannot allocate memory)valgrind: mmap(0x600000, 8192) 在 UME 中失败,错误 12(无法分配内存)
【发布时间】:2017-04-11 12:03:38
【问题描述】:

我在关注this exercise。此页面有安装 Valgrind 3.6.1 的说明,但我当前的 Linux 内核版本不支持此版本的 Valgrind。因此,我安装了 Valgrind 3.11.0 并在运行此命令之后按照那里的说明进行操作:

  $ valgrind ./ex4

收到此错误:

valgrind: mmap(0x600000, 8192) failed in UME with error 12 (Cannot allocate memory).

我该如何解决?

我使用的是内核版本为 4.4.0 的 Ubuntu 14.04 LTS

【问题讨论】:

  • 抱歉,您到底想完成什么?你想安装它吗?你想在你的一个程序上测试它的分段错误吗?
  • 您似乎打算提供对您尝试运行的代码的引用。可以加网址吗?您是否有合理配置的机器或具有足够内存的虚拟机?你已经能够在任何其他程序上运行 Valgrind 了吗?您是在 32 位还是 64 位版本上运行?尽管您使用的文章/链接必须相当旧才能建议 Valgrind 3.6.1,但升级到 3.11.0 是正确的,并且新版本的工作方式应该与旧版本一样.
  • 我使用的是原生 linux 机器。我无法在任何程序上运行 Valgrind。我的 linux 机器是 64 位的。我已经为我正在关注的说明和代码添加了一个网址
  • @abhishek_naik:那个链接非常准确——也许你应该把它转换成答案。 (如果你这样做了,请告诉我——例如对此的回应评论。) Shyam:你几乎肯定需要获得 Valgrind 的更新版本(可能来自源代码)才能正常工作。这不是你的错:你本身并没有做错什么,但是 Linux 内核在valgrind 下发生了变化,它比许多程序更容易受到内核变化的影响。

标签: c linux valgrind


【解决方案1】:

您遇到的错误其实是内核bug,在后续版本中已经修复。更多详情:
https://bugzilla.redhat.com/show_bug.cgi?id=1301093

为了克服这个错误,我建议你更新内核。
注意:我自己在内核版本 3.16.0-67 上运行 Ubuntu 14.04,它运行起来没有任何麻烦.

编辑:正如 cmets 中的 OP 所指出的,该错误已在内核版本 4.5.2 中修复。

【讨论】:

  • @ShyamSaini 如果您认为有帮助,请接受答案
  • @abhishek_naik 我的机器已经安装了最新的 linux 内核版本 4.4.0。正如您所说,它使用的是内核版本 3.16.0-67,但是我的机器运行的最新版本呢?
  • @ShyamSaini,我建议你从另一个内核版本启动。如果您不确定如何从另一个版本启动,请参考askubuntu.com/questions/738790/… 接受答案的开头。
  • @abhishek_naik 我已经检查了另一个内核版本,它在我的机器上运行良好。但我希望它在内核版本 4.4.0 上工作。
  • @abhishek_naik 该错误已在内核版本 4.5.2 中修复。所以,我编辑了你的答案。
猜你喜欢
  • 2020-08-27
  • 2021-10-06
  • 1970-01-01
  • 2017-07-20
  • 1970-01-01
  • 2016-06-03
  • 1970-01-01
  • 2016-02-22
相关资源
最近更新 更多