Bug - Fixed Debug Log/Stack Dump Opening Hidden City

MCroft

Developer
Staff member
I think I had this error because I got out of Ronin while using the Dvorak command (great timing, me...), but it could be more general than that.


[1000] The Hidden Temple
Encounter: Beginning at the Beginning of Beginning

> dvorak

Give me a B!
Give me an A!
Give me an N!
Give me an A!
Give me an N!
Give me an A!
Give me an S!
What's that spell? BANANAS!

[1001] The Hidden Temple
Encounter: No Visible Means of Support
Refreshing stash contents...
What's that spell? BANANAS!

[1002] The Hidden Temple
Encounter: No Visible Means of Support
Refreshing stash contents...
Refreshing stash contents...
What's that spell? BANANAS!
What's that spell? BANANAS!

[1003] The Hidden Temple
Encounter: No Visible Means of Support

[1004] The Hidden Temple
Encounter: No Visible Means of Support
Unexpected error, debug log printed.
Unexpected error, debug log printed.
Refreshing stash contents...
Refreshing stash contents...
Stash list retrieved.


=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
KoLmafia v20.7, Mac OS X, Java 13.0.2
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
[...]
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
Timestamp: Wed Sep 16 00:16:00 CDT 2020
=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=


Unexpected error, debug log printed.
class java.lang.ClassCastException: java.lang.Long incompatible with java.lang.Integer
[... see attachment for stack trace...]

View attachment DEBUG_20200916.txt
 
Last edited:

Veracity

Developer
Staff member
I went through this on Wednesday with DEBUG logging.

Code:
// The Hidden Heart of the Hidden Temple
Requesting: choice.php?pwd&whichchoice=580&option=1

// At Least It's Not Full Of Trash
[416] The Hidden Temple
Requesting: choice.php?pwd&whichchoice=123&option=2

// Now What?
Processing result:  Advs Used: -1
(choice.php)
> ash choice_follows_fight() => false
> ash handling_choice() => true

Requesting: choice.php
Location = [tiles.php]
[417] The Hidden Temple
Requesting: tiles.php
// Beginning at the Beginning of Beginning
> ash handling_choice() => false

From Browser: /KoLmafia/specialCommand?cmd=dvorak&pwd
=> start automating
> dvorak
Give me a B!
Requesting: tiles.php?action=jump&whichtile=4
From Browser: /KoLmafia/specialCommand?cmd=wait&pwd
Give me an A!
Requesting: tiles.php?action=jump&whichtile=6
Give me an N!
Requesting: tiles.php?action=jump&whichtile=3
From Browser: /KoLmafia/specialCommand?cmd=wait&pwd
Give me an A!
Requesting: tiles.php?action=jump&whichtile=5
Give me an N!
Requesting: tiles.php?action=jump&whichtile=7
From Browser: /KoLmafia/specialCommand?cmd=wait&pwd
Give me an A!
Requesting: tiles.php?action=jump&whichtile=6
Give me an S!
Requesting: tiles.php?action=jump&whichtile=3
Location = [choice.php?forceoption=0]
Requesting: choice.php?forceoption=0

// No Visible Means of Support
What's that spell? BANANAS!
Processing result:  Advs Used: -1
[418] The Hidden Temple
From Browser: /KoLmafia/specialCommand?cmd=wait&pwd
From Browser: /KoLmafia/specialCommand?cmd=wait&pwd
=> done automating

> ash handling_choice() => true
Requesting: choice.php?pwd&whichchoice=125&option=3
Processing result:  Advs Used: -1
The main thing I took away from that is that at the time when we notice that an adventure has been spent (and we presumably recognized that you broke Ronin) KoLmafia knows that you are in a choice adventure. I bet the same thing could happen if your Doctor's Bag rings after a fight which cost a turn or while you are getting a beehive via a choice chain. And undoubtedly other places.

I've never looked at the code which refreshes things when you break Ronin. I rarely do Normal runs. Possibly the only time I've ever broken Ronin in-run was earlier this year when "most kills on the island battlefield" was a PVP mini for Season 50 and I got a Wossname without doing any side quests. :)

I'll see what I can figure out.
 

Veracity

Developer
Staff member
That was a red herring. We don't do any refreshing when you clear ronin. Perhaps we should do a full "refresh session" or something, but I see no evidence of that.

Your DEBUG log had three stack traces.

1) You were "using" something and when trying to remove it from inventory, that ClassCastException happened. That was 14 minutes and 26 seconds before the subsequent exceptions.

There is nothing I can say about this.

2 & 3) After getting a response from KoL, we decided to call api.php.
We looked at the response, and set your familiar.
We then recalculated your current modifiers.
We wanted to see if you had a fishin' pole.
Since you were out of ronin, it decided to look in the clan stash, since you have autoSatisfyWithStash
Since you had not looked at your stash, it tried to retrieve it
That failed - redirected - since you were in a choice
The automation ended up getting a null responseText from choice.php
Null Pointer Exception

There are no end of issues here.

1) Your familiar didn't actually change, so why do all that work when it "set" your familiar to what you already had?
2) A fishin' pole is a quest item, so is either in your inventory or not; no need to look anywhere else
3) Admittedly, some items became quest items after (some) clans had them in the stash. Perhaps we should allow you to try to retrieve such?
4) If you are in a fight or choice, we should not try to retrieve stash
5) Why did resubmitting the choice adventure result in a null responseText?

I'm inclined to fix 1 and 4, at least, and try and figure out 5.
 

Veracity

Developer
Staff member
Revision 20380 fixes a bunch of this.

- do not attempt to retrieve stash if you are in a fight or choice.
- any TransferItemRequest will not submit a request if you are in a fight or choice, Instead, it will throw an appropriate error
- KoLCharacter.setFamiliar() will do nothing if the familiar already your current familiar.
 

MCroft

Developer
Staff member
Sorry about the red herring. I didn't notice the first error.

Second things first, I'll be on the lookout for the issue around breaking ronin while in a choice.

According to the session log, Stack Trace #1 came from this sequence. The most immediate thing I did was healing after Dr. Awkward's office.
Code:
[943] Visiting Dr. Awkward's office
Took choice 872/1: (secret choice)
choice.php?pwd&whichchoice=872&option=1&photo1=2259&photo2=7264&photo3=7263&photo4=7265
You lose 266 hit points
You acquire an item: "2 Love Me, Vol. 2"

use 1 "2 Love Me, Vol. 2"

use 1 "2 Love Me, Vol. 2"

Visiting Mr. Alarm's office

cast 1 Tongue of the Walrus
You gain 33 hit points
You lose an effect: Beaten Up

use 8 Doc Galaktik's Ailment Ointment
You gain 312 hit points
Unexpected error, debug log printed.

[943] Whitey's Grove
Encounter: Knight in White Satin
 
Top