|Anonymous | Login | Signup for a new account||2019-02-24 03:01 CET|
|Main | My View | View Issues | Change Log | Wiki | Tavern | News|
|Viewing Issue Simple Details|
|ID||Category||Severity||Reproducibility||Date Submitted||Last Update|
|0009137||[DCSS] Bug Report||crash||have not tried||2014-11-05 12:17||2016-04-15 11:51|
|Status||closed||Product Branch||0.15 ancient branch|
|Summary||0009137: Frenzied Duvessa and Dowan crash|
CAO ssh console, 0.15.2 at 20141105, near 13:30 GMT.
First turn, I hit Duvessa by Needle of Frenzy (NoF), and she start fight against Dowan.
Second turn, I shoot NoF to Dowan, but game session on CAO ssh imediatly closes to main CAO screen.
I.e. I don't known - Dowan sucessfuly frenzied or not.
After 5-10 sec the game session been auto-recowered at time before frenzing Duvessa.
I tried to reproduce this crash. Apply frenzy to Duvessa, but missed beside the Dowan. And Dowan will be killed by Duvessa at this turn w/o any crashes.
|Tags||No tags attached.|
|Attached Files||0001-Prevent-infinite-recursion-via-frenzied-twins.patch [^] (9,589 bytes) 2015-02-01 01:46 [Show Content]|
edited on: 2015-01-03 03:53
The logs don't show a crash milestone (and your directory doesn't have any crash dumps since 2010), so I wonder if something funny happened to your connection.... But that should have saved, not reverted you.
Reproduced in wizmode, got a segfault and a stack trace. There's an infinite recursion here (the crash dump probably didn't work since there was no stack space):
if (src == &you
&& mon->type != MONS_SPELLFORGED_SERVITOR)
mon->attitude = ATT_HOSTILE;
breakCharm = true;
// XXX: Somewhat hacky, this being here.
behaviour_event(mons, ME_WHACK, &you, you.pos(), false);
That check in behaviour_event is what sets neutral monsters hostile when you attack them, but not for insane monsters. And since putting monsters into a frenzy makes them neutral first, the game goes into a mutual recursion with Down and Duvessa each telling the other about the WHACK notification they just received.
I solved this by adding to the "is not neutral" check in elven_twins_unpacify to also skip insane monsters. The twins should probably also have their old_attitude set to ATT_HOSTILE when frenzied so that if both are pacified, you can't frenzy one (making the other hostile) and let them revert to neutral when frenzy wears off (as then one would still be neutral while the other is hostile).
I thought about moving the "hacky" call into the if block above, but I'm not sure what that would affect...
|Oh, and when they were both frenzied and attacking each other, Duvessa didn't scream or anything when Dowan died. I'm not sure why...|
|Figured that out, too. Turns if you frenzy one twin and kill them, the other becomes pacified, because it thinks it occurred in the case where you pacified one of them on the stairs (so the death message is skipped). Oops! This patch fixes that as well.|
|Zannick's patch is applied in trunk (0.16-a0-4120-gb205902), thanks!|
|2014-11-05 12:17||Karagy||New Issue|
|2015-01-03 03:52||neil||Note Added: 0028212|
|2015-01-03 03:53||neil||Note Edited: 0028212|
|2015-01-27 07:10||Zannick||Note Added: 0028370|
|2015-01-27 07:15||Zannick||Note Added: 0028371|
|2015-02-01 01:46||Zannick||Note Added: 0028416|
|2015-02-01 01:46||Zannick||File Added: 0001-Prevent-infinite-recursion-via-frenzied-twins.patch|
|2015-03-01 22:23||neil||Note Added: 0028585|
|2015-03-01 22:23||neil||Status||new => resolved|
|2015-03-01 22:23||neil||Fixed in Branch||=> 0.16 development branch|
|2015-03-01 22:23||neil||Resolution||open => done|
|2015-03-01 22:23||neil||Assigned To||=> neil|
|2016-04-15 11:51||Karagy||Status||resolved => closed|
|Mantis 1.1.8[^] Copyright © 2000 - 2009 Mantis Group|