java - 损坏的双链表

标签 java android error-handling libgdx runtime-error

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

最佳答案

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

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

  • 您自己的 native 库之一中存在错误。
  • 第 3 方原生库中的错误。
  • 错误使用 Unsafe 类导致损坏的后果。
  • JVM 错误。

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

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

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


更新 - 仍然没有足够的信息来诊断这个问题,但是当我在 Google 上搜索libgdx“损坏的双链表”时,我得到了问题所在的结果这是由于在调用 dispose 后调用对象的方法。

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

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

关于java - 损坏的双链表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31232134/

相关文章:

java - 如何在java中关闭包含一些url ("www.xyz.com")的选项卡

java - Retrofit Jackson 转换器无法识别嵌套对象

java.lang.IllegalStateException : Scanner engine is not started. 无法执行任务

android - 这段代码的结构是否适合它的用途?我如何在 Android 中平滑动画?

r - 该函数可以单独运行,但是会返回错误,并且应用函数: attempt to select less than one element in get1index

java - 将 JsonElement addProperty() 合并到一个方法中

java - 膨胀 map View 时出错

java - 定义应用程序中使用的常量的最佳实践

javascript - expressJS promise 和错误处理

ios - 变量已写入,但从未读取过?