Viewing Issue Simple Details Jump to Notes ] Wiki ] View Advanced ] Issue History ] Print ]
ID Category Severity Reproducibility Date Submitted Last Update
0010472 [DCSS] Bug Report minor have not tried 2016-06-02 23:12 2017-02-01 23:43
Reporter TAS2012 View Status public  
Assigned To Brannock
Priority normal Resolution done  
Status resolved   Product Branch 0.19 ancient branch
Summary 0010472: "You kick DEAD MONSTER."
Description Sorry, I don't have so much details about this.
Was tabbing away with my demonspawn chaos knight of Uskayaw with chaos branded hand axe and some mutation aux attacks including hoof-like feet and suddenly I see:
"You kick DEAD MONSTER. You slash the orc! You burn the orc."
Didn't save state or anything, continued without any further anomalies, game is over. :(
Played on CDO, morgue file is [^]

Additional Information
Tags No tags attached.
Attached Files ? file icon pain-bond-fix.diff [^] (1,093 bytes) 2017-01-23 02:04 [Show Content]

- Relationships

-  Notes
PleasingFungus (administrator)
2016-08-14 01:09

Related morgue: [^] . Seems to be another pain bond crash.
johnnyzero (reporter)
2016-08-27 08:24

I also encountered the issue in 0.19-a0-1225-gf887c1c.
 You slash the hell knight!
 You kill the hell knight!
_You headbutt DEAD MONSTER!!

Here's a save immediately after the attack: [^]
advil (administrator)
2016-12-10 17:08

Just saw this in 0.20-a0-270-g8e735b6 with pain bond on an usk character; it's another aux attack.

Here are the last two turns of messages:

_The red ugly thing is no longer paralysed. x2
 You bludgeon the red ugly thing!! You burn the red ugly thing.
 You claw the red ugly thing.
_The red ugly thing is heavily wounded.
 You sock the red ugly thing! You burn the red ugly thing.
 You kill the red ugly thing!
 You can now merge with and destroy a victim.

Here's the save file right after in case it's useful: [^]
advil (administrator)
2017-01-23 02:05
edited on: 2017-01-23 16:04

I think the patch I just uploaded (against 02c11fcf27df) fixes the message issue, not entirely sure if it's the _right_ way to fix it but it's at least a start. The problem is this: an aux attack calls inflict_damage, which then calls hurt and then monster::react_to_damage. At this point, damage may trigger pain bond (radiate_pain_bond) on other monsters, calling hurt etc and potentially killing them. This part is fine, but radiate_pain_bond calls hurt and then radiate on _those_ monsters, which may recurse back to the first one, calling monster::hurt on it again. If this initial monster is killed at this point, monster::hurt will do cleanup on it. Recursion needs to do cleanup on monsters that aren't the initial trigger, so this is a bit tricky to prevent.

The fix in this patch still doesn't get the messages right for this special case -- when a monster dies via recursive pain bond there is aux (or constrict) damage that is never printed.

I only replicated the actual crash on constriction once and couldn't quite figure it out on its own terms, so it's possible there's something else going on there as well. It might have actually been a combination of aux + constriction damage leading to a crash (as opposed to a bad message).

advil (administrator)
2017-01-25 23:05

I just posted a much better fix as a PR: [^]
advil (administrator)
2017-01-30 23:30
edited on: 2017-01-30 23:33

To replicate this bug I had the best luck:

* create a Ds with a big axe, fill up los with monsters (I mostly used ugly things, they need to be something that might not die immediately to regular melee), set piety to 99, and hit repeatedly.
* create an unarmed Op, etc., hit in a circular fashion to get things constricted. (This also gets you tentacle slap.)

I would see a DEAD_MONSTER message every several fights, sometimes less; it's still rare. Also, set invoc high, and don't forget that pain bond has a long timeout when resetting (5 a few times). I replicated the Op crash only once or twice but it is replicable with patience. Edit: oh and set your stats high.

Brannock (developer)
2017-02-01 23:07

To increase the likelihood of reproducing this, set your Str/Dex to 72, be Draconian for tail strikes, grant yourself all the aux attack mutations via &] (talons, fangs, horns), and use an one-handed weapon so you can offhand punch.
Brannock (developer)
2017-02-01 23:43

I've pushed advil's patch in f70bbbcf307fc583d5194bdf2c106e342bb257ec. Excellent job tracking down the bug and fixing it.

We'll keep an eye out for any other odd interactions with pain bond.

- Issue History
Date Modified Username Field Change
2016-06-02 23:12 TAS2012 New Issue
2016-08-14 01:09 PleasingFungus Note Added: 0030895
2016-08-27 08:24 johnnyzero Note Added: 0030932
2016-12-10 17:08 advil Note Added: 0031341
2017-01-23 02:04 advil File Added: pain-bond-fix.diff
2017-01-23 02:05 advil Note Added: 0031441
2017-01-23 15:37 advil Note Edited: 0031441
2017-01-23 16:04 advil Note Edited: 0031441
2017-01-25 23:05 advil Note Added: 0031444
2017-01-30 23:30 advil Note Added: 0031447
2017-01-30 23:33 advil Note Edited: 0031447
2017-02-01 23:07 Brannock Note Added: 0031454
2017-02-01 23:43 Brannock Note Added: 0031455
2017-02-01 23:43 Brannock Status new => resolved
2017-02-01 23:43 Brannock Fixed in Branch => 0.20 development branch
2017-02-01 23:43 Brannock Resolution open => done
2017-02-01 23:43 Brannock Assigned To => Brannock

Mantis 1.1.8[^]
Copyright © 2000 - 2009 Mantis Group
Powered by Mantis Bugtracker