繁体   English   中英

损坏的双链表

[英]Corrupted double-linked list

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

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

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

更多信息:

紧接着,运行日志打印出:

进程以退出代码 134 结束

我发现错误发生在这一点上:

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

正好在:

game.setScreen(new MenuScreen(game));

一些进口是:

导入 com.badlogic.gdx.Game;
导入 com.packtpub.libgdx.canyonbunny.screens.MenuScreen;

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

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

从谷歌搜索“corrupted double-linked list”的结果来看,该消息是在“malloc”中检测到内部断言错误的结果。 那就是本机(C/C++)库代码使用的本机堆分配函数。 该错误很可能是(在本机代码中)破坏内存的结果。

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

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

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

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

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


更新- 仍然没有足够的信息来诊断这一点,但是当我在 Google 上搜索libgdx "corrupted double-linked list" ,我发现问题是由于在调用dispose后在对象上调用了方法。

可能是您的代码在做类似的事情,或者是 3rd-party MenuScreen代码在做这样的事情。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM