Dwarf Fortress Bug Tracker - Dwarf Fortress
View Issue Details
0000449Dwarf FortressDwarf Mode -- Combatpublic2010-04-04 23:042014-07-18 12:50
seigenblues 
Toady One 
normalminorhave not tried
resolvedfixed 
0.31.01 
0.40.04 
0000449: Strangling/strangulation doesn't kill people who are already unconscious for other reasons
goblins show up, the military springs into underequipped inaction, everyone gets nicked and heads off to the hospital. The bedridden dwarves snap. One of the dwarven recruits goes berzerk and starts punching the nearest invalid. After a few months, i check up on the combat log:

Dude has been "strangling the Recruit's throat!" for more than a month and a half, without killing him.
binary patch, wrestling
related to 0001403new  Unconscious dwarf not drowning 
related to 0003426resolved Toady One Bare-hands strangulation results in bloodfest 
related to 0001775resolved Footkerchief Miners fail to fall unconscious after cave-in until current job is ended. 
has duplicate 0001490closed Footkerchief strangulation is nerfed heavily. 
has duplicate 0005027resolved Footkerchief Eternal Strangulation 
has duplicate 0006503resolved Footkerchief Minotaur strangles dwarf under water during three months and counting 
related to 0001742new  Unconscious dwarf won't die from lashing 
related to 0002889new  Hydras can be strangled to death by one person 
Issue History
2010-04-04 23:04seigenbluesNew Issue
2010-04-04 23:48FootkerchiefNote Added: 0001013
2010-04-05 00:27QloosTag Attached: wrestling
2010-04-09 03:54Scaevolus_Note Added: 0002288
2010-04-13 09:24FootkerchiefSummarydwarf-on-dwarf strangulation doesn't kill => Strangling/strangulation doesn't kill people who are already unconscious for other reasons
2010-04-21 13:19FootkerchiefRelationship addedparent of 0001403
2010-04-24 10:21toybasherNote Added: 0004889
2010-04-24 11:08FootkerchiefRelationship addedhas duplicate 0001490
2010-04-27 03:29fake_robotNote Added: 0005323
2010-05-04 14:00FootkerchiefRelationship addedparent of 0001742
2010-05-04 14:50derigoNote Added: 0006122
2010-05-04 15:27ProteusNote Added: 0006123
2010-06-22 18:14FootkerchiefRelationship replacedrelated to 0001742
2010-11-18 18:13FootkerchiefRelationship addedrelated to 0003426
2010-11-18 18:14FootkerchiefRelationship deletedrelated to 0003426
2010-11-19 10:36EddyPNote Added: 0014022
2011-06-03 19:06ShmoNote Added: 0017928
2011-06-04 14:47PutIssue Monitored: Put
2012-01-20 15:21Knight OtuRelationship addedhas duplicate 0005027
2012-02-21 13:05d64Note Added: 0020408
2012-02-21 23:22d64Issue Monitored: d64
2012-03-05 08:57FootkerchiefRelationship replacedrelated to 0001403
2012-04-14 20:04MasquerineNote Added: 0022267
2012-04-14 20:07MasquerineNote Edited: 0022267bug_revision_view_page.php?bugnote_id=0022267#r8290
2014-01-22 10:31FootkerchiefRelationship addedrelated to 0003426
2014-01-22 12:19FootkerchiefRelationship addedrelated to 0001775
2014-01-26 09:20FootkerchiefTag Attached: Fixed in 0.34.12?
2014-06-10 08:27FootkerchiefRelationship addedhas duplicate 0006503
2014-06-10 08:27FootkerchiefIssue Monitored: Urist McMontesOca
2014-06-10 08:27FootkerchiefNote Added: 0024806
2014-06-14 01:52UristDaVinciNote Added: 0024811
2014-06-15 01:00FootkerchiefTag Attached: binary patch
2014-07-07 22:23FootkerchiefTag RenamedFixed in 0.34.12? => Fixed in 0.40.01?
2014-07-11 09:31FootkerchiefRelationship addedrelated to 0002889
2014-07-11 09:35TrifNote Added: 0025774
2014-07-18 12:30Toady OneNote Added: 0026892
2014-07-18 12:30Toady OneStatusnew => resolved
2014-07-18 12:30Toady OneFixed in Version => Next Version
2014-07-18 12:30Toady OneResolutionopen => fixed
2014-07-18 12:30Toady OneAssigned To => Toady One
2014-07-18 12:50DwarfuTag Detached: Fixed in 0.40.01?

Notes
(0001013)
Footkerchief   
2010-04-04 23:48   
I don't think it's dwarf-on-dwarf specifically. It seems to often happen with strangling anyone who's unconscious or maybe severely wounded.
(0002288)
Scaevolus_   
2010-04-09 03:54   
This makes adventure mode wrestling quite ineffective-- strangling only seems to cause internal bleeding, so you can't use it as a "kill move".
(0004889)
toybasher   
2010-04-24 10:21   
But I can still strangle elves to death while there are knocked out form pain.
(0005323)
fake_robot   
2010-04-27 03:29   
I've noticed some weirdness surrounding unconscious dorfs. Namely, that they seem to stay unconscious forever, they don't need food or water, and they seem to be invisible to friends and foes alike.
(0006122)
derigo   
2010-05-04 14:50   
Its so strange, because in adventure mode when something falls unconscious, you and pinch off its head (or any other body part) without effort.
(0006123)
Proteus   
2010-05-04 15:27   
I remember having the same thing once...

I activated a squad (my first 7)to pursue a goblin thief,
after a short pursuit I deactivated them again,
believing that the goblin had already fled.

What I didn´t know was that my cook already had reached the goblin and was strangling him.
Over a month later I checked my health screen and saw, that my cook was totally dehydrated. Checking his location I saw, that he was still strangling said goblin.
Despite immediately activating my squad again, I couldn´t save my cook.
He died of dehydration while strangling the goblin, while the rst of the squad stood around them, watching (which seems to be another (reported) bug, maybe related to this one, i.e. squadmembers won´t attack unconscious enemies).ö

Only after the cooks death his former squadmembers went active and killed the goblin with a pick
(0014022)
EddyP   
2010-11-19 10:36   
I've had an Ettin strangling a dwarf straight for roughly half a year now. There are about 3000 strangling messages in the combat report.
(0017928)
Shmo   
2011-06-03 19:06   
I can confirm this. I've had a Roc strangling a hapless unconscious, heavily bleeding fisherdwarf for about 6 months now to no avail. I expected he would die of blood loss if not the strangulation, but it's like the two are frozen solid in deadlock. 32 pages of messages now.
(0020408)
d64   
2012-02-21 13:05   
Strangling still seems to be problematic in 34.02. It takes many many turns for a bronze colossus to strangle a dingo. The messages:

Bronze Colossus 1 strangles Dingo 21's throat, tearing apart the hair!
Bronze Colossus 1 strangles Dingo 21's throat, tearing apart the hair!
Bronze Colossus 1 strangles Dingo 21's throat, tearing apart the hair!
(several pages of these)

I think a colossus should be able to crush a small canine in its hands with relative ease...
(0022267)
Masquerine   
2012-04-14 20:04   
(edited on: 2012-04-14 20:07)
I had this happen in version 34.07 with two giant gargoyles and a single axedwarf. The gargoyles fought the axedwarf for two days normally, causing various injuries (many broken bones, oozing/gushing blood). The main injury was a broken neck to the dwarf, after which the gargoyles both started strangling the dwarf. As soon as they started strangling, that was the only attack they used. If they were not attacked or interrupted by any means, the strangling would go on for months or even years.

If they were interrupted, the dwarf was immediately pronounced dead as soon as the strangling stopped. She never seemed to receive new injuries during the strangle time, even from other enemies. She never once got a hunger or thirst message. It seems like she was dead the entire time but the gargoyles just got stuck in strangle mode, which prevented her from updating to dead status.

Her hospital screen said heavy bleeding, ability to stand/grasp lost, exhausted and nerve/motor damage. I don't think it changed at all during the strangle time.

(0024806)
Footkerchief   
2014-06-10 08:27   
From UristDaVinci at 0006503:0024802: "it looks like the part of the code which increments the air loss counter/data does not run for the dwarf while the dwarf is being strangled. Even removed from the water, the dwarf has a broken upper spine and will eventually suffocate when separated from the wrestling minotaur."
(0024811)
UristDaVinci   
2014-06-14 01:52   
OK, I used WinDbg on dwarf fortress and explored where other dwarves run the "air loss code", and then followed the higher-level function for the eternally-strangled dwarf from the minotaur case until I came to the part where it differs and doesn't run the "air loss/hunger/thirst/etc" code.

It looks like a pathfinding or path-cost related code section gets upset when a wrestling victim hasn't generated some kind of pathing-related data. I guess this might have something to do with being unconscious or invalid. At any rate, if this happens the code skips to the very end of the higher function. Other parts of the pathing-related code, if conditions are not met, merely skip forwards to what appears to be "the next step" in the AI logic. The problem might be a misplaced "Break" statement in the C code?

The following binary edit is for Win32 v0.34.11 SDL:
   0x0045da72 : e9 77 1b 00 00 => e9 65 03 00 00

Re-targeting the jump statement to the same destination as the other nearby jumps appears to solve the problem for the minotaur-strangle-dwarf-in-river bug 6503. The dwarf resumes drowning/running out of air and dies. The minotaur then leaves the river and wanders around. No known side-effects of this change.
(0025774)
Trif   
2014-07-11 09:35   
This has been... kind of fixed as of 0.40.02.
I tested strangling a kobold as a bronze colossus in the arena.
First I pulped his leg, causing him to fall unconscious. I then strangled him. He suffocated after 389 chokes. That seemed seemed a bit excessive (any other strangler would have fallen unconscious from over-exertion multiple times), so I was pretty sure that the bug was still around.
Still, for completeness, I tried a control kobold. This one I didn't knock out before strangling him. Amount of chokes until death: 389.

It seems like - strictly speaking - this bug has been fixed. Unconsciousness has no effect on strangulation anymore. But it's pretty clear that strangling has massive problems.
So yeah, not sure what to do with this bug. If you guys want to close it, I'll make a new report about the bugged strangling in general. If not, Toady can go by this note here.
(0026892)
Toady One   
2014-07-18 12:30   
I think this is worked out. In 0.40.03-, if you put someone in a chokehold, they will be on the road to suffocation, and strangling just makes them pass out so you don't get attacked. So once they are unconscious, you can just press period and wait... for like 40-70 presses. Strangling is a much faster action (2 ticks), so it actually takes about 5 times as long.

For next time, I've made strangulation push them much further up the air loss count, so if you tap the movement toward them for an auto-strangle a handful of times, that should be enough. You can still also wait with period and a chokehold, but that takes also still takes a while.

I couldn't find any indication that the weird logic mentioned for the WinDbg analysis still exists, but it's possible there's still some problem out there.