Bug - Fixed Infinite recursion starting BIG! ascension

Veracity

Developer
Staff member
The last several times I ascended, KoLmafia looped. Today's session log:

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Beginning New Ascension
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Ascension #232:
Hardcore BIG! Seal Clubber
Mongoose
...

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Visiting Doc Galaktik

forestvillage.php?action=floristfriar
Encounter: The Florist Friar's Cottage
Took choice 720/4: unknown
choice.php?whichchoice=720&option=4
Encounter: The Florist Friar's Cottage

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Beginning New Ascension
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Ascension #232:
Hardcore BIG! Seal Clubber
Mongoose
...

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Visiting Doc Galaktik

forestvillage.php?action=floristfriar
Unexpected error, debug log printed.

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Beginning New Ascension
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Ascension #232:
Hardcore BIG! Seal Clubber
Mongoose
...

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

Visiting Doc Galaktik
At which point I hit ESC. It did this last time, too.

Here is the debug log - which shows the recursion.

Code:
class java.lang.NullPointerException: null
java.lang.NullPointerException
	at net.sourceforge.kolmafia.request.FloristRequest.run(FloristRequest.java:204)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:222)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:185)
	at net.sourceforge.kolmafia.KoLmafia.refreshSessionData(KoLmafia.java:994)
	at net.sourceforge.kolmafia.KoLmafia.refreshSession(KoLmafia.java:837)
	at net.sourceforge.kolmafia.session.ValhallaManager.postAscension(ValhallaManager.java:230)
	at net.sourceforge.kolmafia.session.ChoiceManager.postChoice2(ChoiceManager.java:4621)
	at net.sourceforge.kolmafia.request.GenericRequest.processResponse(GenericRequest.java:2216)
	at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2106)
	at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:1764)
	at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1450)
	at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1343)
	at net.sourceforge.kolmafia.request.GalaktikRequest.run(GalaktikRequest.java:182)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:222)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:185)
	at net.sourceforge.kolmafia.session.ValhallaManager.postAscension(ValhallaManager.java:256)
	at net.sourceforge.kolmafia.session.ChoiceManager.postChoice2(ChoiceManager.java:4621)
	at net.sourceforge.kolmafia.request.GenericRequest.processResponse(GenericRequest.java:2216)
	at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2106)
	at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:1764)
	at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1450)
	at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1343)
	at net.sourceforge.kolmafia.request.GalaktikRequest.run(GalaktikRequest.java:182)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:222)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:185)
	at net.sourceforge.kolmafia.session.ValhallaManager.postAscension(ValhallaManager.java:256)
	at net.sourceforge.kolmafia.session.ChoiceManager.postChoice2(ChoiceManager.java:4621)
	at net.sourceforge.kolmafia.request.GenericRequest.processResponse(GenericRequest.java:2216)
	at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:2106)
	at net.sourceforge.kolmafia.request.GenericRequest.retrieveServerReply(GenericRequest.java:1764)
	at net.sourceforge.kolmafia.request.GenericRequest.execute(GenericRequest.java:1450)
	at net.sourceforge.kolmafia.request.GenericRequest.run(GenericRequest.java:1343)
	at net.sourceforge.kolmafia.request.RelayRequest.run(RelayRequest.java:2000)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:222)
	at net.sourceforge.kolmafia.RequestThread.postRequest(RequestThread.java:185)
	at net.sourceforge.kolmafia.webui.RelayAgent.readServerResponse(RelayAgent.java:526)
	at net.sourceforge.kolmafia.webui.RelayAgent.performRelay(RelayAgent.java:158)
	at net.sourceforge.kolmafia.webui.RelayAgent.run(RelayAgent.java:131)
- I click on the "ascend" button
- ChoiceManager.postChoice2 calls ValhallaManager.postAscension
- It calls GalaktikRequest to accept his quest
- ChoiceManager.postChoice2 calls ValhallaManager.postAscension
- It calls GalaktikRequest to accept his quest
- ChoiceManager.postChoice2 calls ValhallaManager.postAscension
- This time it takes an NPE in FloristRequest.

The issue seems to be that we set ChoiceManager.action to ASCEND, so that we will do ValhallaManager.postAscension() after the final choice after you land back in the kingdom - zombie, jarlsberg, BIG! - happens, but there are choice adventures that happen at startup - in particular, the Forest Friar.

That would explain why the session log shows it recursing after we visit the Friar. I do not understand why GalaktikRequest is in the stack trace, though.
 

Veracity

Developer
Staff member
Revision 12251 resets the PostChoiceAction to NONE before calling the post choice action method.
This is untested. If someone ascends into BIG! and has a Florist Friar, let me know if it works for you.
 

Crowther

Active member
Revision 12251 resets the PostChoiceAction to NONE before calling the post choice action method.
This is untested. If someone ascends into BIG! and has a Florist Friar, let me know if it works for you.
Drat. I just missed testing that.
 
Top