Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Game crash after fire trap causes multiple potions to explode #13

Closed
gregorp opened this issue Jul 30, 2020 · 4 comments
Closed

Game crash after fire trap causes multiple potions to explode #13

gregorp opened this issue Jul 30, 2020 · 4 comments

Comments

@gregorp
Copy link

gregorp commented Jul 30, 2020

Hi there, just had a game crash (playing on Hardfought, xNetHack 5.1) after I stepped on a fire trap. I got the "flames erupt from the floor" message, my shield smouldered, a potion exploded and I healed a little bit - and I was prompted to name that potion, then another potion exploded "strange feeling for a moment, then it passes", I named the second potion, and basically as soon as I hit enter with that name I was back at the Hardfought home screen - no more messages, no dying, etc. Starting up xNetHack again I got the new game screen.

@copperwater
Copy link
Owner

What account do you play under on Hardfought? K2 hasn't found any crash logs or anything to restore. Is it possible you disconnected from the server at that time?

@gregorp
Copy link
Author

gregorp commented Aug 4, 2020

Account name is zoya.

It didn't seem like a disconnection - I'm playing on Windows using PuTTY, and when I disconnect usually there's a error message and I have to reconnect, and the game is recovered. With this, there was no reconnection, no need to log in again, I was just at the Hardfought play selection menu.

Since it was potions exploding, it seemed similar to #10, not sure if there's anything to that.

@copperwater
Copy link
Owner

K2 discovered an emergency save which was playable, but I loaded it and didn't find anything broken when repeatedly stepping on the magic trap. The paniclog contained an 'extract_nobj: object lost' panic, but I don't know if this was related to your game. If it was, it could be related to the trap ammo code, which contains some extract_nobj calls, but I don't see how that would happen as magic traps don't have ammo, and the trap wasn't being destroyed. For now I don't have enough information to figure it out.

Shouldn't be related to #10 as that specifically dealt with wetting items and the acid-water interaction; there's no general exploding potion code.

If you tell K2 you want your game recovered while you don't have some other game in progress, he'll recover it for you.

@gregorp
Copy link
Author

gregorp commented Aug 12, 2020

Thanks, I appreciate the investigation! I've got another game going now, so I'll just chalk that up to a strange YASD :)

copperwater added a commit that referenced this issue Dec 21, 2020
Partial merge #13 of vanilla. No noteworthy conflicts.
copperwater pushed a commit that referenced this issue May 13, 2023
If you were on a level teleporter, the spoteffects() call after
the hero gets expelled could end up going to a new level and
freeing all the monst chains from the level you were originally
engulfed on.

    #0 0xba0507 in free
    #1 0x87feda in dealloc_monst src/mon.c:2369
    #2 0x880a02 in dmonsfree src/mon.c:2194
    #3 0x9a7aa2 in savelev_core src/save.c:507
    #4 0x9a7a21 in savelev src/save.c:466
    #5 0x71eb9d in goto_level src/do.c:1483
    #6 0x71833f in deferred_goto src/do.c:1903
    #7 0xa2533f in level_tele src/teleport.c:1117
    #8 0xa2567b in level_tele_trap src/teleport.c:1198
    #9 0xa5c007 in trapeffect_level_telep src/trap.c:1861
    #10 0xa5f856 in trapeffect_selector src/trap.c:2497
    #11 0xa47497 in dotrap src/trap.c:2586
    #12 0x7d669b in spoteffects src/hack.c:2859
    #13 0x89d495 in xkilled src/mon.c:3187

The latter parts of xkilled() after the spoteffects() call would
then attempt to dereference the free'd monst pointer.

Save a copy of the monst struct prior to spoteffects() if you were
expelled, then point at the reference copy afterwards.

Resolves #938
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants