2015-07-05 87 views
1

请帮助我,也很少有人感激赞赏!损坏的双链表

当运行Java应用程序,一些次后,来了这个错误:

*** Error in `/usr/lib/jvm/java-1.7.0-openjdk-amd64/bin/java': corrupted double-linked list: 0x00007fd77c2cf640 ***

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

的更多信息:

紧接着,运行记录打印出来:

Process finished with exit code 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下运行应用程序的桌面版本(桌面模块)。

非常感谢!

回答

3

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

这种事情不应该发生在“纯Java”应用程序中。可能的原因包括:

  • 您自己的本地库中存在一个错误。
  • 第三方本机库中的错误。
  • 通过错误地使用Unsafe类导致腐败的后果。
  • JVM错误。

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

The correct instruction must set a variable and restart the application.

这是不可能的,你可以解决这个问题的方式。


UPDATE - 还有没有足够的信息诊断。但是,当我用Google搜索libgdx "corrupted double-linked list",我因为被调用的对象方法命中哪里出了问题竟然是dispose被称为后。

它可能是你的代码做这样的事情,或者第三方代码做它。

总之,它看起来像是错误地使用libgdx包装。

+0

谢谢回复!我在问题中插入了更多信息。 – user2342558