2015-07-05 83 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