Bug Error when trying to call BitmapModifierCollection for modifiers - Thread race?

Irrat

Member
Got an error while maximizing, and it appears to have occurred while my charpane was refreshing. I suspect the charpane refreshing is also to blame for mafia reporting the wrong location when I adventure somewhere.

I'm running a fork, but I don't think the fork is especially relevant here. The problem seems more likely to involve multiple threads accessing or accessing shared stuff at the same time, such as modifiers. Or to be more specific for the below stack, my belief is that the map failed a map.get for map.getOrDefault, but another thread placed an object in, just in time for map.containsKey of the native function to fire, meaning map.getOrDefault thought the map naturally contains a null value.

It's a rare issue thankfully, I'm pretty certain I only ran into it because I am automatically refreshing my charpane though <complicated stuff>.

Code:
class java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "net.sourceforge.kolmafia.modifiers.BitmapModifierCollection.get(net.sourceforge.kolmafia.modifiers.BitmapModifier)" is null
java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "net.sourceforge.kolmafia.modifiers.BitmapModifierCollection.get(net.sourceforge.kolmafia.modifiers.BitmapModifier)" is null
    at net.sourceforge.kolmafia.textui.parsetree.LibraryFunction.executeWithoutInterpreter(LibraryFunction.java:118)
    at net.sourceforge.kolmafia.textui.javascript.LibraryFunctionStub.execute(LibraryFunctionStub.java:46)
    at net.sourceforge.kolmafia.textui.javascript.AshStub.call(AshStub.java:81)
    at net.sourceforge.kolmafia.textui.javascript.LibraryFunctionStub.call(LibraryFunctionStub.java:88)
    at org.mozilla.javascript.Interpreter$DoCallByteCode.execute(Interpreter.java:3738)
    at org.mozilla.javascript.Interpreter.interpretFunction(Interpreter.java:2057)
    at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1833)
    at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1452)
    at org.mozilla.javascript.InterpreterData.execute(InterpreterData.java:104)
    at org.mozilla.javascript.JSFunction.call(JSFunction.java:136)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.lambda$executeRun$6(JavascriptRuntime.java:451)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.executeFunction(JavascriptRuntime.java:285)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.executeRun(JavascriptRuntime.java:428)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.execute(JavascriptRuntime.java:250)
    at net.sourceforge.kolmafia.textui.AbstractRuntime.execute(AbstractRuntime.java:24)
    at net.sourceforge.kolmafia.textui.command.CallScriptCommand.call(CallScriptCommand.java:205)
    at net.sourceforge.kolmafia.KoLmafiaCLI.doExecuteCommand(KoLmafiaCLI.java:520)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeCommand(KoLmafiaCLI.java:476)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeLine(KoLmafiaCLI.java:395)
    at net.sourceforge.kolmafia.textui.RuntimeLibrary.cli_execute(RuntimeLibrary.java:4643)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:565)
    at net.sourceforge.kolmafia.textui.parsetree.LibraryFunction.executeWithoutInterpreter(LibraryFunction.java:108)
    at net.sourceforge.kolmafia.textui.javascript.LibraryFunctionStub.execute(LibraryFunctionStub.java:46)
    at net.sourceforge.kolmafia.textui.javascript.AshStub.call(AshStub.java:81)
    at net.sourceforge.kolmafia.textui.javascript.LibraryFunctionStub.call(LibraryFunctionStub.java:88)
    at org.mozilla.javascript.Interpreter$DoCallByteCode.execute(Interpreter.java:3738)
    at org.mozilla.javascript.Interpreter.interpretFunction(Interpreter.java:2057)
    at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1833)
    at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1452)
    at org.mozilla.javascript.InterpreterData.execute(InterpreterData.java:104)
    at org.mozilla.javascript.JSFunction.call(JSFunction.java:136)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.lambda$executeRun$6(JavascriptRuntime.java:451)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.executeFunction(JavascriptRuntime.java:285)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.executeRun(JavascriptRuntime.java:428)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.lambda$execute$3(JavascriptRuntime.java:254)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:351)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:4799)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.execute(JavascriptRuntime.java:253)
    at net.sourceforge.kolmafia.textui.AbstractRuntime.execute(AbstractRuntime.java:24)
    at net.sourceforge.kolmafia.textui.command.CallScriptCommand.call(CallScriptCommand.java:205)
    at net.sourceforge.kolmafia.KoLmafiaCLI.doExecuteCommand(KoLmafiaCLI.java:520)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeCommand(KoLmafiaCLI.java:476)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeLine(KoLmafiaCLI.java:395)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeLine(KoLmafiaCLI.java:282)
    at net.sourceforge.kolmafia.KoLmafiaCLI$CommandProcessorThread.run(KoLmafiaCLI.java:202)
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Integer.intValue()" because the return value of "net.sourceforge.kolmafia.modifiers.BitmapModifierCollection.get(net.sourceforge.kolmafia.modifiers.BitmapModifier)" is null
    at net.sourceforge.kolmafia.Modifiers.getRawBitmap(Modifiers.java:410)
    at net.sourceforge.kolmafia.KoLCharacter.currentRawBitmapModifier(KoLCharacter.java:2144)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.getScore(MaximizerSpeculation.java:82)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.compareTo(MaximizerSpeculation.java:128)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.checkBest(MaximizerSpeculation.java:763)
    at net.sourceforge.kolmafia.maximizer.CodpieceMaximizer.searchGems(CodpieceMaximizer.java:429)
    at net.sourceforge.kolmafia.maximizer.CodpieceMaximizer.searchGems(CodpieceMaximizer.java:446)
    at net.sourceforge.kolmafia.maximizer.CodpieceMaximizer.searchGems(CodpieceMaximizer.java:446)
    at net.sourceforge.kolmafia.maximizer.CodpieceMaximizer.search(CodpieceMaximizer.java:391)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryOffhands(MaximizerSpeculation.java:844)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryWeapons(MaximizerSpeculation.java:744)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.trySixguns(MaximizerSpeculation.java:684)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryPants(MaximizerSpeculation.java:652)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryShirts(MaximizerSpeculation.java:612)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryHats(MaximizerSpeculation.java:571)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:519)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:496)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:496)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:496)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryContainers(MaximizerSpeculation.java:427)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryFamiliarItems(MaximizerSpeculation.java:370)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryOutfits(MaximizerSpeculation.java:326)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAll(MaximizerSpeculation.java:231)
    at net.sourceforge.kolmafia.maximizer.Evaluator.enumerateEquipment(Evaluator.java:2591)
    at net.sourceforge.kolmafia.maximizer.Maximizer.maximize(Maximizer.java:194)
    at net.sourceforge.kolmafia.maximizer.Maximizer.maximize(Maximizer.java:119)
    at net.sourceforge.kolmafia.maximizer.Maximizer.maximize(Maximizer.java:135)
    at net.sourceforge.kolmafia.textui.RuntimeLibrary.maximize(RuntimeLibrary.java:9550)
    at net.sourceforge.kolmafia.textui.RuntimeLibrary.maximize(RuntimeLibrary.java:9530)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:565)
    at net.sourceforge.kolmafia.textui.parsetree.LibraryFunction.executeWithoutInterpreter(LibraryFunction.java:108)
    ... 45 more
Internal error in maximize()
And another fun one, not sure if this is charpane but probably.

Code:
class java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.Comparable.compareTo(Object)" because "left" is null
java.lang.RuntimeException: java.lang.NullPointerException: Cannot invoke "java.lang.Comparable.compareTo(Object)" because "left" is null
    at net.sourceforge.kolmafia.textui.parsetree.LibraryFunction.executeWithoutInterpreter(LibraryFunction.java:118)
    at net.sourceforge.kolmafia.textui.javascript.LibraryFunctionStub.execute(LibraryFunctionStub.java:46)
    at net.sourceforge.kolmafia.textui.javascript.AshStub.call(AshStub.java:81)
    at net.sourceforge.kolmafia.textui.javascript.LibraryFunctionStub.call(LibraryFunctionStub.java:88)
    at org.mozilla.javascript.Interpreter$DoCallByteCode.execute(Interpreter.java:3738)
    at org.mozilla.javascript.Interpreter.interpretFunction(Interpreter.java:2057)
    at org.mozilla.javascript.Interpreter.interpretLoop(Interpreter.java:1833)
    at org.mozilla.javascript.Interpreter.interpret(Interpreter.java:1452)
    at org.mozilla.javascript.InterpreterData.execute(InterpreterData.java:104)
    at org.mozilla.javascript.JSFunction.call(JSFunction.java:136)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.lambda$executeRun$6(JavascriptRuntime.java:451)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.executeFunction(JavascriptRuntime.java:285)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.executeRun(JavascriptRuntime.java:428)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.lambda$execute$3(JavascriptRuntime.java:254)
    at org.mozilla.javascript.ContextFactory.doTopCall(ContextFactory.java:351)
    at org.mozilla.javascript.ScriptRuntime.doTopCall(ScriptRuntime.java:4799)
    at net.sourceforge.kolmafia.textui.javascript.JavascriptRuntime.execute(JavascriptRuntime.java:253)
    at net.sourceforge.kolmafia.textui.AbstractRuntime.execute(AbstractRuntime.java:24)
    at net.sourceforge.kolmafia.textui.command.CallScriptCommand.call(CallScriptCommand.java:205)
    at net.sourceforge.kolmafia.KoLmafiaCLI.doExecuteCommand(KoLmafiaCLI.java:520)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeCommand(KoLmafiaCLI.java:476)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeLine(KoLmafiaCLI.java:395)
    at net.sourceforge.kolmafia.KoLmafiaCLI.executeLine(KoLmafiaCLI.java:282)
    at net.sourceforge.kolmafia.KoLmafiaCLI$CommandProcessorThread.run(KoLmafiaCLI.java:202)
Caused by: java.lang.NullPointerException: Cannot invoke "java.lang.Comparable.compareTo(Object)" because "left" is null
    at net.java.dev.spellcast.utilities.SortedListModel.compare(SortedListModel.java:262)
    at net.java.dev.spellcast.utilities.SortedListModel.normalIndexOf(SortedListModel.java:175)
    at net.java.dev.spellcast.utilities.SortedListModel.indexOf(SortedListModel.java:132)
    at net.sourceforge.kolmafia.AdventureResult.getCount(AdventureResult.java:1144)
    at net.sourceforge.kolmafia.session.InventoryManager.getCount(InventoryManager.java:151)
    at net.sourceforge.kolmafia.session.InventoryManager.getCount(InventoryManager.java:147)
    at net.sourceforge.kolmafia.KoLCharacter.recalculateAdjustmentsPrefix(KoLCharacter.java:5431)
    at net.sourceforge.kolmafia.KoLCharacter.recalculateAdjustments(KoLCharacter.java:5182)
    at net.sourceforge.kolmafia.Speculation.calculate(Speculation.java:164)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.getScore(MaximizerSpeculation.java:74)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.compareTo(MaximizerSpeculation.java:128)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.checkBest(MaximizerSpeculation.java:763)
    at net.sourceforge.kolmafia.maximizer.CodpieceMaximizer.searchGems(CodpieceMaximizer.java:429)
    at net.sourceforge.kolmafia.maximizer.CodpieceMaximizer.searchGems(CodpieceMaximizer.java:446)
    at net.sourceforge.kolmafia.maximizer.CodpieceMaximizer.search(CodpieceMaximizer.java:391)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryOffhands(MaximizerSpeculation.java:844)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryOffhands(MaximizerSpeculation.java:833)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryWeapons(MaximizerSpeculation.java:744)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.trySixguns(MaximizerSpeculation.java:684)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryPants(MaximizerSpeculation.java:661)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryShirts(MaximizerSpeculation.java:612)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryHats(MaximizerSpeculation.java:581)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:519)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:496)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:496)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAccessories(MaximizerSpeculation.java:496)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryContainers(MaximizerSpeculation.java:421)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryFamiliarItems(MaximizerSpeculation.java:370)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryOutfits(MaximizerSpeculation.java:269)
    at net.sourceforge.kolmafia.maximizer.MaximizerSpeculation.tryAll(MaximizerSpeculation.java:231)
    at net.sourceforge.kolmafia.maximizer.Evaluator.enumerateEquipment(Evaluator.java:2591)
    at net.sourceforge.kolmafia.maximizer.Maximizer.maximize(Maximizer.java:194)
    at net.sourceforge.kolmafia.maximizer.Maximizer.maximize(Maximizer.java:119)
    at net.sourceforge.kolmafia.maximizer.Maximizer.maximize(Maximizer.java:135)
    at net.sourceforge.kolmafia.textui.RuntimeLibrary.maximize(RuntimeLibrary.java:9550)
    at net.sourceforge.kolmafia.textui.RuntimeLibrary.maximize(RuntimeLibrary.java:9530)
    at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:104)
    at java.base/java.lang.reflect.Method.invoke(Method.java:565)
    at net.sourceforge.kolmafia.textui.parsetree.LibraryFunction.executeWithoutInterpreter(LibraryFunction.java:108)
    ... 23 more
Internal error in maximize()
 
Last edited:
Back
Top