Valgrind:发生了不可能的事情 IA-64 缓存检测到

huangapple go评论97阅读模式
英文:

Valgrind: The Impossible Happened IA-64 cached detected

问题

我在一个C程序上运行了Valgrind,并得到了以下错误:

valgrind: 发生了“不可能的”情况:
   检测到IA-64高速缓存?!

valgrind: m_threadstate.c:100 (vgPlain_get_ThreadState): 断言 'tid >= 0 && tid < VG_N_THREADS' 失败。

在修复了一些内存泄漏并重新构建我的程序之后,这个错误神奇地消失了。但是我在网上搜索了一下,没有找到关于IA-64高速缓存检测错误的信息。IA-64是什么意思?另外,我在虚拟机上运行了这个程序,如果有关系的话。

英文:

I ran valgrind on a c program and got the following error:

valgrind: the &#39;impossible&#39; happened:
   IA-64 cache detected?!

valgrind: m_threadstate.c:100 (vgPlain_get_ThreadState): Assertion &#39;tid &gt;= 0 &amp;&amp; tid &lt; VG_N_THREADS&#39; failed.

After fixing some memory leaks and restructure my program, the error mysteriously went away. But I searched online and find nothing about the IA-64 cache detected error. What does IA-64 means? Also, I ran the program on a virtual machine if that matters.

答案1

得分: 1

如先前在评论中提到的,IA-64 是英特尔架构的Itanium(实际上是与惠普的合资企业)。它可以追溯到2000年初。由于它从未取得巨大成功,Valgrind从未为IA-64架构提供支持。

早期的Itanium芯片确实具有一种双模式,允许它们运行32位x86代码。

Valgrind中的错误消息来自于Intel_cache_info函数。这个函数使用cpuid指令来查询缓存信息。这个函数处理了10个用于IA-64的代码。正如我所说,这从未得到支持,因此Valgrind终止并显示了一个现在相对陈旧的消息。

您还会收到一个TID无效的断言。因此,出现了严重问题。

如果您能够使用一个小示例重现这个问题,请在https://bugs.kde.org上报告它。

英文:

As already mentioned in the comments, IA-64 is the Intel Architecture Itanium (actually a joint venture with HP). It dates back to the early 2000s. Support for the IA-64 architecture was never added to Valgrind since it was never a great success.

Earlier Itanium chips did have a kind of dual-mode which allowed them to run 32bit x86 code.

The error message in Valgrind comes from the Intel_cache_info function. This queries the cpuid instruction to find out about the cache. 10 of the codes handled by this function are for IA-64. As I said, this was never supported, so Valgrind terminates with a now rather dated message.

You are also getting an assert that the TID is not valid. So something is going seriously wrong.

If you can reproduce the problem with a small example then please report it on https://bugs.kde.org

答案2

得分: 0

我之前在一个有5个核心的虚拟机上运行我的程序。我切换到另一个有12个核心的虚拟机上,程序可以正常运行。不过,我仍然不清楚IA-64缓存是什么意思。

英文:

I was running my program on a 5 core VM. I switched to another VM that has 12 cores, and it worked. I still don't know what IA-64 cache means though.

huangapple
  • 本文由 发表于 2023年2月19日 12:27:01
  • 转载请务必保留本文链接:https://go.coder-hub.com/75497989.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定