StrongJoshua / libgdx-inGameConsole

A LibGdx library that allows a developer to add a console (similar to how it is featured in Source games) to their game.
https://www.strongjoshua.net/projects/games/libgdx-ingame-console
Apache License 2.0
131 stars 35 forks source link

Crash because of fast logging #60

Closed lolomap closed 1 year ago

lolomap commented 1 year ago

I have different random exceptions when use log() if there no long time spent between logging calls (When I add 1 second delay manually there no exceptions ever). Examples of exceptions:

Exception in thread "main" java.lang.StringIndexOutOfBoundsException: offset 20, count 20, length 26 at java.base/java.lang.String.checkBoundsOffCount(String.java:4586) at java.base/java.lang.String.getChars(String.java:1674) at com.badlogic.gdx.utils.StringBuilder.append0(StringBuilder.java:164) at com.badlogic.gdx.utils.StringBuilder.append(StringBuilder.java:985) at com.badlogic.gdx.scenes.scene2d.ui.Label.setText(Label.java:117) at com.strongjoshua.console.GUIConsole$ConsoleDisplay.refresh(GUIConsole.java:516) at com.strongjoshua.console.GUIConsole.log(GUIConsole.java:308) at com.strongjoshua.console.AbstractConsole.log(AbstractConsole.java:70) at com.tagang.glademassacre.Networking.Network.Connect(Network.java:45) at com.tagang.glademassacre.UI.ConnectionMenu.connectButtonClick(ConnectionMenu.java:28) at com.tagang.glademassacre.UI.UIElement.click(UIElement.java:98) at com.tagang.glademassacre.UI.ConnectionMenu.clickM1(ConnectionMenu.java:59) at com.tagang.glademassacre.UI.SceneManager.clickM1(SceneManager.java:44) at com.tagang.glademassacre.InputAction.M1Clicked(InputAction.java:20) at com.tagang.glademassacre.KeyboardAdapter.touchUp(KeyboardAdapter.java:82) at com.badlogic.gdx.InputMultiplexer.touchUp(InputMultiplexer.java:124) at com.badlogic.gdx.InputEventQueue.drain(InputEventQueue.java:70) at com.badlogic.gdx.backends.lwjgl3.DefaultLwjgl3Input.update(DefaultLwjgl3Input.java:189) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:378) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:192) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:166) at com.tagang.glademassacre.DesktopLauncher.main(DesktopLauncher.java:18)

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.badlogic.gdx.scenes.scene2d.ui.Value.get(com.badlogic.gdx.scenes.scene2d.Actor)" because "c.minWidth" is null at com.badlogic.gdx.scenes.scene2d.ui.Table.computeSize(Table.java:828) at com.badlogic.gdx.scenes.scene2d.ui.Table.getPrefWidth(Table.java:432) at com.badlogic.gdx.scenes.scene2d.ui.ScrollPane.layout(ScrollPane.java:406) at com.badlogic.gdx.scenes.scene2d.ui.WidgetGroup.validate(WidgetGroup.java:113) at com.strongjoshua.console.GUIConsole$ConsoleDisplay.refresh(GUIConsole.java:520) at com.strongjoshua.console.GUIConsole.log(GUIConsole.java:308) at com.strongjoshua.console.AbstractConsole.log(AbstractConsole.java:70) at com.tagang.glademassacre.Networking.Network.Connect(Network.java:45) at com.tagang.glademassacre.UI.ConnectionMenu.connectButtonClick(ConnectionMenu.java:28) at com.tagang.glademassacre.UI.UIElement.click(UIElement.java:98) at com.tagang.glademassacre.UI.ConnectionMenu.clickM1(ConnectionMenu.java:59) at com.tagang.glademassacre.UI.SceneManager.clickM1(SceneManager.java:44) at com.tagang.glademassacre.InputAction.M1Clicked(InputAction.java:20) at com.tagang.glademassacre.KeyboardAdapter.touchUp(KeyboardAdapter.java:82) at com.badlogic.gdx.InputMultiplexer.touchUp(InputMultiplexer.java:124) at com.badlogic.gdx.InputEventQueue.drain(InputEventQueue.java:70) at com.badlogic.gdx.backends.lwjgl3.DefaultLwjgl3Input.update(DefaultLwjgl3Input.java:189) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:378) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:192) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:166) at com.tagang.glademassacre.DesktopLauncher.main(DesktopLauncher.java:18)

Exception in thread "main" java.lang.NullPointerException: Cannot invoke "com.badlogic.gdx.scenes.scene2d.ui.Table.row()" because "this.table" is null at com.badlogic.gdx.scenes.scene2d.ui.Cell.row(Cell.java:892) at com.strongjoshua.console.GUIConsole$ConsoleDisplay.refresh(GUIConsole.java:518) at com.strongjoshua.console.GUIConsole.log(GUIConsole.java:308) at com.strongjoshua.console.AbstractConsole.log(AbstractConsole.java:70) at com.tagang.glademassacre.Networking.Network.Connect(Network.java:45) at com.tagang.glademassacre.UI.ConnectionMenu.connectButtonClick(ConnectionMenu.java:28) at com.tagang.glademassacre.UI.UIElement.click(UIElement.java:98) at com.tagang.glademassacre.UI.ConnectionMenu.clickM1(ConnectionMenu.java:59) at com.tagang.glademassacre.UI.SceneManager.clickM1(SceneManager.java:44) at com.tagang.glademassacre.InputAction.M1Clicked(InputAction.java:20) at com.tagang.glademassacre.KeyboardAdapter.touchUp(KeyboardAdapter.java:82) at com.badlogic.gdx.InputMultiplexer.touchUp(InputMultiplexer.java:124) at com.badlogic.gdx.InputEventQueue.drain(InputEventQueue.java:70) at com.badlogic.gdx.backends.lwjgl3.DefaultLwjgl3Input.update(DefaultLwjgl3Input.java:189) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Window.update(Lwjgl3Window.java:378) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.loop(Lwjgl3Application.java:192) at com.badlogic.gdx.backends.lwjgl3.Lwjgl3Application.<init>(Lwjgl3Application.java:166) at com.tagang.glademassacre.DesktopLauncher.main(DesktopLauncher.java:18)

lolomap commented 1 year ago

The cause of the problem was current thread misunderstanding