损坏的双链表

时间:2015-07-05 15:49:48

标签: java runtime-error

请帮助我,也很少有人帮助!

运行java应用程序时,经过一段时间后出现错误:

  

***`/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java'中的错误:损坏的双链表:0x00007fd77c2cf640 ***

正确的指令必须设置变量并重新启动应用程序。

更多信息:

紧接着,Run-log打印出来:

  

处理完成,退出代码为134

我发现此时发生了错误:

private Game game;
private void backToMenu ()
{
    // switch to menu screen
    game.setScreen(new MenuScreen(game));
}

完全在:

game.setScreen(new MenuScreen(game));

部分导入是:

  

import com.badlogic.gdx.Game;
  import com.packtpub.libgdx.canyonbunny.screens.MenuScreen;

libgdx版本是1.6.0,指南说本书中使用的libgdx版本是0.1.2(学习LibGDX游戏开发第二版)。

我在Ubuntu 15.04下运行应用程序的桌面版(桌面模块)。

非常感谢!

1 个答案:

答案 0 :(得分:3)

根据"损坏的双链表"的Google搜索结果判断,该消息是在" malloc"中检测到内部断言错误的结果。这是本机堆分配函数,由本机(C / C ++)库代码使用。该错误很可能是由于某些内容(在本机代码中)破坏内存造成的。

这种事情绝不应该发生在纯粹的Java"应用。可能的原因包括:

  • 您自己的一个本地库中的错误。
  • 第三方本机库中的错误。
  • 错误使用Unsafe类导致损坏的后果。
  • JVM错误。

但您提供的最少信息不允许我们诊断您的问题。 (提示!!)

  

正确的指令必须设置变量并重新启动应用程序。

你不太可能以这种方式解决问题。

更新 - 仍然没有足够的信息来诊断这一点,但是当我用Google搜索libgdx "corrupted double-linked list"时,我遇到了问题,原因是{之后的对象调用了方法{1}}已被召集。

可能是您的代码执行类似的操作,或者第三方dispose代码执行此操作。

简而言之,看起来有些东西正在错误地使用MenuScreen包装器。