Cataclysm-dda: Debugmsg: wanted to move the $monster but location already has the $other_monster

Created on 4 Feb 2020  Â·  13Comments  Â·  Source: CleverRaven/Cataclysm-DDA

Describe the bug

Game crashed whilst sleeping

Steps To Reproduce

made some noise cancelling headphones, wore them and slept, error message was thrown on screen

Expected behavior

sleep/wake up/eat breakfast/kill zeds

Screenshots

not applicable

Versions and configuration

0.d-11748-g36402aa
build 10274

Mods:
Dark days ahead
More locations
Fuji's more buildings
Urban Development
Graphical overmap
Graphical overmap More locations
Graphical overmap Fuji's more buildings
Graphical overmap Urban Development

Additional context

Crashlog as follows:

10:19:23.918 ERROR : (error message will follow backtrace)
#0
(dbghelp: @0x7c6e26[cataclysm-tiles.exe+0x3c6e26]),
(libbacktrace: Z21debug_write_backtraceRSo+0x56@0x7c6e26),
(libbacktrace: 0x7c6e26 [unknown src]:0 [unknown func]),
#1
(dbghelp: @0x7c78ba[cataclysm-tiles.exe+0x3c78ba]),
(libbacktrace: Z8DebugLog10DebugLevel10DebugClass+0x34a@0x7c78ba),
(libbacktrace: 0x7c78ba [unknown src]:0 [unknown func]),
#2
(dbghelp: @0x7ca5d6[cataclysm-tiles.exe+0x3ca5d6]),
(libbacktrace: Z12realDebugmsgPKcS0_S0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x76@0x7ca5d6),
(libbacktrace: 0x7ca5d6 [unknown src]:0 [unknown func]),
#3
(dbghelp: @0x7bc7f2[cataclysm-tiles.exe+0x3bc7f2]),
(libbacktrace: ZN16Creature_tracker10update_posERK7monsterRK8tripoint+0x872@0x7bc7f2),
(libbacktrace: 0x7bc7f2 [unknown src]:0 [unknown func]),
#4
(dbghelp: @0xf29088[cataclysm-tiles.exe+0xb29088]),
(libbacktrace: ZN7monster6setposERK8tripoint+0x58@0xf29088),
(libbacktrace: 0xf29088 [unknown src]:0 [unknown func]),
#5
(dbghelp: @0xf09430[cataclysm-tiles.exe+0xb09430]),
(libbacktrace: ZN7monster7move_toERK8tripointbf+0x1b0@0xf09430),
(libbacktrace: 0xf09430 [unknown src]:0 [unknown func]),
#6
(dbghelp: @0xf0cf73[cataclysm-tiles.exe+0xb0cf73]),
(libbacktrace: ZN7monster7stumbleEv+0x3a3@0xf0cf73),
(libbacktrace: 0xf0cf73 [unknown src]:0 [unknown func]),
#7
(dbghelp: @0xf0e6b6[cataclysm-tiles.exe+0xb0e6b6]),
(libbacktrace: ZN7monster4moveEv+0x1426@0xf0e6b6),
(libbacktrace: 0xf0e6b6 [unknown src]:0 [unknown func]),
#8
(dbghelp: @0x9521f1[cataclysm-tiles.exe+0x5521f1]),
(libbacktrace: ZN4game7monmoveEv+0x221@0x9521f1),
(libbacktrace: 0x9521f1 [unknown src]:0 [unknown func]),
#9
(dbghelp: @0x954f5c[cataclysm-tiles.exe+0x554f5c]),
(libbacktrace: ZN4game7do_turnEv+0x96c@0x954f5c),
(libbacktrace: 0x954f5c [unknown src]:0 [unknown func]),
#10
(dbghelp: IMG_LoadWEBP_RW+0x8c93ac@0x1e9d52c[cataclysm-tiles.exe+0x1a9d52c]),
(libbacktrace: main+0x10fc@0x1e9d52c),
(libbacktrace: 0x1e9d52c [unknown src]:0 [unknown func]),
#11
(dbghelp: @0x4013ed[cataclysm-tiles.exe+0x13ed]),
(libbacktrace: _tmainCRTStartup+0x23d@0x4013ed),
(libbacktrace: 0x4013ed /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:336 __tmainCRTStartup),
#12
(dbghelp: @0x4014fb[cataclysm-tiles.exe+0x14fb]),
(libbacktrace: WinMainCRTStartup+0x1b@0x4014fb),
(libbacktrace: 0x4014fb /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:186 WinMainCRTStartup),
#13
(dbghelp: BaseThreadInitThunk+0x14@0x7ffba1657bd4[KERNEL32.DLL+0x17bd4]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#14
(dbghelp: RtlUserThreadStart+0x21@0x7ffba2c4ced1[ntdll.dll+0x6ced1]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
Backtrace emission took 1 seconds.
src/creature_tracker.cpp:127 [bool Creature_tracker::update_pos(const monster&, const tripoint&)] update_zombie_pos: wanted to move the zombie to 126,59,-1, but new location already has the zombie

(S2 - Confirmed) <Bug> Monsters

Most helpful comment

Allright I had a thorough look into this. It seems that monsters stumbling around stairs causes this message - in combination with stairs-teleportation.
The stumble() code looks for any tiles around the monster to have them move around. The stumbling code sets the move_to 'force' parameter true, forcing a move even if something is blocking the way.
https://github.com/CleverRaven/Cataclysm-DDA/blob/9c45bda51007a3550635ea65887054e95f1134b7/src/monmove.cpp#L1732-L1773

However when performing the move_to, there's this special part of the code that teleports zombies up and down stairs.
https://github.com/CleverRaven/Cataclysm-DDA/blob/9c45bda51007a3550635ea65887054e95f1134b7/src/monmove.cpp#L1395-L1414

So the stumbling code does not check if the tiles are free that move_to will bring up when teleporting the creature.

Big question is how to fix this properly. I'm not sure why the stumbling code forces the zombie to move. But setting that force parameter to false avoids the problem.
Alternatively, having the zombies not stumble "downwards" (L1752) also fixes the problem.

But ultimately this comes down to the pretty dirty way that monsters are teleported around stairs.

Bonus: having a glance at #37392 , zombies (or fungals in that case) stumbling into a teleporter can also cause this problem.

All 13 comments

Looks similar to #35560 and #37392

I couldn't reproduce the error using your steps; I was able to sleep a night in a house basement with noise cancelling headgear and unpulped zombies upstairs. Do you get the error every time you sleep in that spot?

In this same game since that error, I have had it happen on a number of occasions. I have been sleeping in the same spot whenever it happens. The creatures it reports are different though.

Log is as follows:
12:50:08.399 ERROR : (error message will follow backtrace)
#0
(dbghelp: @0x7c6e26[cataclysm-tiles.exe+0x3c6e26]),
(libbacktrace: Z21debug_write_backtraceRSo+0x56@0x7c6e26),
(libbacktrace: 0x7c6e26 [unknown src]:0 [unknown func]),
#1
(dbghelp: @0x7c78ba[cataclysm-tiles.exe+0x3c78ba]),
(libbacktrace: Z8DebugLog10DebugLevel10DebugClass+0x34a@0x7c78ba),
(libbacktrace: 0x7c78ba [unknown src]:0 [unknown func]),
#2
(dbghelp: @0x7ca5d6[cataclysm-tiles.exe+0x3ca5d6]),
(libbacktrace: Z12realDebugmsgPKcS0_S0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x76@0x7ca5d6),
(libbacktrace: 0x7ca5d6 [unknown src]:0 [unknown func]),
#3
(dbghelp: @0x7bc7f2[cataclysm-tiles.exe+0x3bc7f2]),
(libbacktrace: ZN16Creature_tracker10update_posERK7monsterRK8tripoint+0x872@0x7bc7f2),
(libbacktrace: 0x7bc7f2 [unknown src]:0 [unknown func]),
#4
(dbghelp: @0xf29088[cataclysm-tiles.exe+0xb29088]),
(libbacktrace: ZN7monster6setposERK8tripoint+0x58@0xf29088),
(libbacktrace: 0xf29088 [unknown src]:0 [unknown func]),
#5
(dbghelp: @0xf09430[cataclysm-tiles.exe+0xb09430]),
(libbacktrace: ZN7monster7move_toERK8tripointbf+0x1b0@0xf09430),
(libbacktrace: 0xf09430 [unknown src]:0 [unknown func]),
#6
(dbghelp: @0xf0cf73[cataclysm-tiles.exe+0xb0cf73]),
(libbacktrace: ZN7monster7stumbleEv+0x3a3@0xf0cf73),
(libbacktrace: 0xf0cf73 [unknown src]:0 [unknown func]),
#7
(dbghelp: @0xf0e964[cataclysm-tiles.exe+0xb0e964]),
(libbacktrace: ZN7monster4moveEv+0x16d4@0xf0e964),
(libbacktrace: 0xf0e964 [unknown src]:0 [unknown func]),
#8
(dbghelp: @0x9521f1[cataclysm-tiles.exe+0x5521f1]),
(libbacktrace: ZN4game7monmoveEv+0x221@0x9521f1),
(libbacktrace: 0x9521f1 [unknown src]:0 [unknown func]),
#9
(dbghelp: @0x954f5c[cataclysm-tiles.exe+0x554f5c]),
(libbacktrace: ZN4game7do_turnEv+0x96c@0x954f5c),
(libbacktrace: 0x954f5c [unknown src]:0 [unknown func]),
#10
(dbghelp: IMG_LoadWEBP_RW+0x8c93ac@0x1e9d52c[cataclysm-tiles.exe+0x1a9d52c]),
(libbacktrace: main+0x10fc@0x1e9d52c),
(libbacktrace: 0x1e9d52c [unknown src]:0 [unknown func]),
#11
(dbghelp: @0x4013ed[cataclysm-tiles.exe+0x13ed]),
(libbacktrace: _tmainCRTStartup+0x23d@0x4013ed),
(libbacktrace: 0x4013ed /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:336 __tmainCRTStartup),
#12
(dbghelp: @0x4014fb[cataclysm-tiles.exe+0x14fb]),
(libbacktrace: WinMainCRTStartup+0x1b@0x4014fb),
(libbacktrace: 0x4014fb /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:186 WinMainCRTStartup),
#13
(dbghelp: BaseThreadInitThunk+0x14@0x7ffba1657bd4[KERNEL32.DLL+0x17bd4]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#14
(dbghelp: RtlUserThreadStart+0x21@0x7ffba2c4ced1[ntdll.dll+0x6ced1]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
Backtrace emission took 0 seconds.
src/creature_tracker.cpp:127 [bool Creature_tracker::update_pos(const monster&, const tripoint&)] update_zombie_pos: wanted to move the rattlesnake to 126,59,-1, but new location already has the zombie
13:04:03.805 ERROR : (error message will follow backtrace)
#0
(dbghelp: @0x7c6e26[cataclysm-tiles.exe+0x3c6e26]),
(libbacktrace: Z21debug_write_backtraceRSo+0x56@0x7c6e26),
(libbacktrace: 0x7c6e26 [unknown src]:0 [unknown func]),
#1
(dbghelp: @0x7c78ba[cataclysm-tiles.exe+0x3c78ba]),
(libbacktrace: Z8DebugLog10DebugLevel10DebugClass+0x34a@0x7c78ba),
(libbacktrace: 0x7c78ba [unknown src]:0 [unknown func]),
#2
(dbghelp: @0x7ca5d6[cataclysm-tiles.exe+0x3ca5d6]),
(libbacktrace: Z12realDebugmsgPKcS0_S0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x76@0x7ca5d6),
(libbacktrace: 0x7ca5d6 [unknown src]:0 [unknown func]),
#3
(dbghelp: @0x7bc7f2[cataclysm-tiles.exe+0x3bc7f2]),
(libbacktrace: ZN16Creature_tracker10update_posERK7monsterRK8tripoint+0x872@0x7bc7f2),
(libbacktrace: 0x7bc7f2 [unknown src]:0 [unknown func]),
#4
(dbghelp: @0xf29088[cataclysm-tiles.exe+0xb29088]),
(libbacktrace: ZN7monster6setposERK8tripoint+0x58@0xf29088),
(libbacktrace: 0xf29088 [unknown src]:0 [unknown func]),
#5
(dbghelp: @0xf09430[cataclysm-tiles.exe+0xb09430]),
(libbacktrace: ZN7monster7move_toERK8tripointbf+0x1b0@0xf09430),
(libbacktrace: 0xf09430 [unknown src]:0 [unknown func]),
#6
(dbghelp: @0xf0cf73[cataclysm-tiles.exe+0xb0cf73]),
(libbacktrace: ZN7monster7stumbleEv+0x3a3@0xf0cf73),
(libbacktrace: 0xf0cf73 [unknown src]:0 [unknown func]),
#7
(dbghelp: @0xf0e6b6[cataclysm-tiles.exe+0xb0e6b6]),
(libbacktrace: ZN7monster4moveEv+0x1426@0xf0e6b6),
(libbacktrace: 0xf0e6b6 [unknown src]:0 [unknown func]),
#8
(dbghelp: @0x9521f1[cataclysm-tiles.exe+0x5521f1]),
(libbacktrace: ZN4game7monmoveEv+0x221@0x9521f1),
(libbacktrace: 0x9521f1 [unknown src]:0 [unknown func]),
#9
(dbghelp: @0x954f5c[cataclysm-tiles.exe+0x554f5c]),
(libbacktrace: ZN4game7do_turnEv+0x96c@0x954f5c),
(libbacktrace: 0x954f5c [unknown src]:0 [unknown func]),
#10
(dbghelp: IMG_LoadWEBP_RW+0x8c93ac@0x1e9d52c[cataclysm-tiles.exe+0x1a9d52c]),
(libbacktrace: main+0x10fc@0x1e9d52c),
(libbacktrace: 0x1e9d52c [unknown src]:0 [unknown func]),
#11
(dbghelp: @0x4013ed[cataclysm-tiles.exe+0x13ed]),
(libbacktrace: _tmainCRTStartup+0x23d@0x4013ed),
(libbacktrace: 0x4013ed /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:336 __tmainCRTStartup),
#12
(dbghelp: @0x4014fb[cataclysm-tiles.exe+0x14fb]),
(libbacktrace: WinMainCRTStartup+0x1b@0x4014fb),
(libbacktrace: 0x4014fb /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:186 WinMainCRTStartup),
#13
(dbghelp: BaseThreadInitThunk+0x14@0x7ffba1657bd4[KERNEL32.DLL+0x17bd4]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#14
(dbghelp: RtlUserThreadStart+0x21@0x7ffba2c4ced1[ntdll.dll+0x6ced1]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
Backtrace emission took 0 seconds.
src/creature_tracker.cpp:127 [bool Creature_tracker::update_pos(const monster&, const tripoint&)] update_zombie_pos: wanted to move the shriekling to 126,59,-1, but new location already has the zombie
13:17:31.319 ERROR : (error message will follow backtrace)
#0
(dbghelp: @0x7c6e26[cataclysm-tiles.exe+0x3c6e26]),
(libbacktrace: Z21debug_write_backtraceRSo+0x56@0x7c6e26),
(libbacktrace: 0x7c6e26 [unknown src]:0 [unknown func]),
#1
(dbghelp: @0x7c78ba[cataclysm-tiles.exe+0x3c78ba]),
(libbacktrace: Z8DebugLog10DebugLevel10DebugClass+0x34a@0x7c78ba),
(libbacktrace: 0x7c78ba [unknown src]:0 [unknown func]),
#2
(dbghelp: @0x7ca5d6[cataclysm-tiles.exe+0x3ca5d6]),
(libbacktrace: Z12realDebugmsgPKcS0_S0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x76@0x7ca5d6),
(libbacktrace: 0x7ca5d6 [unknown src]:0 [unknown func]),
#3
(dbghelp: @0x7bc7f2[cataclysm-tiles.exe+0x3bc7f2]),
(libbacktrace: ZN16Creature_tracker10update_posERK7monsterRK8tripoint+0x872@0x7bc7f2),
(libbacktrace: 0x7bc7f2 [unknown src]:0 [unknown func]),
#4
(dbghelp: @0xf29088[cataclysm-tiles.exe+0xb29088]),
(libbacktrace: ZN7monster6setposERK8tripoint+0x58@0xf29088),
(libbacktrace: 0xf29088 [unknown src]:0 [unknown func]),
#5
(dbghelp: @0xf09430[cataclysm-tiles.exe+0xb09430]),
(libbacktrace: ZN7monster7move_toERK8tripointbf+0x1b0@0xf09430),
(libbacktrace: 0xf09430 [unknown src]:0 [unknown func]),
#6
(dbghelp: @0xf0cf73[cataclysm-tiles.exe+0xb0cf73]),
(libbacktrace: ZN7monster7stumbleEv+0x3a3@0xf0cf73),
(libbacktrace: 0xf0cf73 [unknown src]:0 [unknown func]),
#7
(dbghelp: @0xf0e6b6[cataclysm-tiles.exe+0xb0e6b6]),
(libbacktrace: ZN7monster4moveEv+0x1426@0xf0e6b6),
(libbacktrace: 0xf0e6b6 [unknown src]:0 [unknown func]),
#8
(dbghelp: @0x9521f1[cataclysm-tiles.exe+0x5521f1]),
(libbacktrace: ZN4game7monmoveEv+0x221@0x9521f1),
(libbacktrace: 0x9521f1 [unknown src]:0 [unknown func]),
#9
(dbghelp: @0x954f5c[cataclysm-tiles.exe+0x554f5c]),
(libbacktrace: ZN4game7do_turnEv+0x96c@0x954f5c),
(libbacktrace: 0x954f5c [unknown src]:0 [unknown func]),
#10
(dbghelp: IMG_LoadWEBP_RW+0x8c93ac@0x1e9d52c[cataclysm-tiles.exe+0x1a9d52c]),
(libbacktrace: main+0x10fc@0x1e9d52c),
(libbacktrace: 0x1e9d52c [unknown src]:0 [unknown func]),
#11
(dbghelp: @0x4013ed[cataclysm-tiles.exe+0x13ed]),
(libbacktrace: _tmainCRTStartup+0x23d@0x4013ed),
(libbacktrace: 0x4013ed /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:336 __tmainCRTStartup),
#12
(dbghelp: @0x4014fb[cataclysm-tiles.exe+0x14fb]),
(libbacktrace: WinMainCRTStartup+0x1b@0x4014fb),
(libbacktrace: 0x4014fb /home/narc/src/mxe/tmp-gcc-x86_64-w64-mingw32.static/gcc-5.4.0.build_/mingw-w64-v5.0.2/mingw-w64-crt/crt/crtexe.c:186 WinMainCRTStartup),
#13
(dbghelp: BaseThreadInitThunk+0x14@0x7ffba1657bd4[KERNEL32.DLL+0x17bd4]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
#14
(dbghelp: RtlUserThreadStart+0x21@0x7ffba2c4ced1[ntdll.dll+0x6ced1]),
(backtrace_syminfo failed: errno = -1, msg = no symbol table in PE/COFF executable),
(backtrace_pcinfo failed: errno = -1, msg = no debug info in PE/COFF executable),
Backtrace emission took 0 seconds.
src/creature_tracker.cpp:127 [bool Creature_tracker::update_pos(const monster&, const tripoint&)] update_zombie_pos: wanted to move the zombie to 126,83,-1, but new location already has the zombie
13:17:32.803 ERROR : src/creature_tracker.cpp:127 [bool Creature_tracker::update_pos(const monster&, const tripoint&)] update_zombie_pos: wanted to move the zombie to 121,86,0, but new location already has the zombie

It seems that there is more to repro this issue than just noise cancelling headphones, as I also could not reproduce it. I tried sleeping on a floor adjacent to many monsters, as well as in a basement below a group of monsters, with noise cancelling headphones on, and could not reproduce.

I have seen a similar error in fairly recent experimental builds just while fighting enemies, so I suspect there is some edge case with movement code. I wasn't using noise cancelling headphones at the time, so it seems possible the headphones are a red herring?

it seems possible the headphones are a red herring?

Seems likely to me. I just reproduced this by accident while driving through a town. Running a debug build on linux so the backtrace is a little nicer to read.

-----------------------------------------
10:51:00.382 : Starting log.
10:51:00.382 INFO : Cataclysm DDA version 0.D-12235-g3a8c5fb920
10:51:00.530 WARNING : opendir [./mods/] failed with "No such file or directory".
10:51:05.867 WARNING : opendir [./save/Shaw Island/mods] failed with "No such file or directory".
10:53:15.971 WARNING : opendir [./save/Shaw Island/mods] failed with "No such file or directory".
10:58:22.212 ERROR : (error message will follow backtrace)
    ./cataclysm(_Z21debug_write_backtraceRSo+0x38) [0x564fadb7ef6b]
    ./cataclysm(_Z8DebugLog10DebugLevel10DebugClass+0x303) [0x564fadb7f931]
    ./cataclysm(_Z12realDebugmsgPKcS0_S0_RKNSt7__cxx1112basic_stringIcSt11char_traitsIcESaIcEEE+0x5e) [0x564fadb82004]
    ./cataclysm(_ZN16Creature_tracker10update_posERK7monsterRK8tripoint+0x6ee) [0x564fadb74fd6]
    ./cataclysm(_ZN4game17update_zombie_posERK7monsterRK8tripoint+0x10) [0x564fadd83d9c]
    ./cataclysm(_ZN7monster6setposERK8tripoint+0x4f) [0x564fae6f9205]
    ./cataclysm(_ZN7monster7move_toERK8tripointbf+0x284) [0x564fae6eb5a8]
    ./cataclysm(_ZN7monster7stumbleEv+0x522) [0x564fae6ef646]
    ./cataclysm(_ZN7monster4moveEv+0x1ad5) [0x564fae6f113d]
    ./cataclysm(_ZN4game7monmoveEv+0xd00) [0x564faddc6830]
    ./cataclysm(_ZN4game7do_turnEv+0x103b) [0x564faddea1eb]
    ./cataclysm(main+0x12c2) [0x564fae2f98a3]
    /usr/lib/libc.so.6(__libc_start_main+0xf3) [0x7f60e7e3c023]
    ./cataclysm(_start+0x2e) [0x564fad5f71be]

    Attempting to repeat stack trace using debug symbols…
    debug_write_backtrace(std::ostream&)
    …/src/debug.cpp:760
    DebugLog(DebugLevel, DebugClass)
    …/src/debug.cpp:926
    realDebugmsg(char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    …/src/debug.cpp:110
    void realDebugmsg<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int const&, int const&, int const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*, char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, int const&, int const&, int const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
    …/src/debug.h:79
    Creature_tracker::update_pos(monster const&, tripoint const&)
    …/src/creature_tracker.cpp:125
    game::update_zombie_pos(monster const&, tripoint const&)
    …/src/game.cpp:4685
    monster::setpos(tripoint const&)
    …/src/monster.cpp:162
    monster::move_to(tripoint const&, bool, float)
    …/src/monmove.cpp:1488
    monster::stumble()
    …/src/monmove.cpp:1767
    std::vector<tripoint, std::allocator<tripoint> >::clear()
    /usr/include/c++/9.2.1/bits/stl_vector.h:1496
    monster::move()
    …/src/monmove.cpp:930
    game::monmove()
    …/src/game.cpp:4127
    game::do_turn()
    …/src/game.cpp:1525
    main
    …/src/main.cpp:688
    __libc_start_main
    ??:?
    _start
    ??:?
Backtrace emission took 1 seconds.
src/creature_tracker.cpp:125 [bool Creature_tracker::update_pos(const monster&, const tripoint&)] update_zombie_pos: wanted to move the zombie dog to 106,63,-1, but new location already has the zombie

See #37392 for a save file just after this debugmsg

I thought this was caused by having too many monsters in an area trying to cross paths? I come across it fairly normally when approaching areas densely populated with monsters.

I thought this was caused by having too many monsters in an area trying to cross paths? I come across it fairly normally when approaching areas densely populated with monsters.

That could very well be what's causing this bug to trigger, do you have a way to 100% reproduce this? My attempts haven't been very reliable so far.

That could very well be what's causing this bug to trigger, do you have a way to 100% reproduce this? My attempts haven't been very reliable so far.

Not off-hand but I have the whole of tomorrow off so I can dive into it to try and pin it down. I just sort of assumed it was a well known path finding error that had a fallback since it only throws a warning without actually crashing. I’ve been getting it for at least a few months, normally when going through large cities. Reminds me of the error that got thrown when a mob tried to spawn where another mob was moving to.

Can't seem to reproduce today, put the game through some stress testing, increased spawn rates, tried to spawn overmap specials that spawned a lot of creatures, no cigar. Even tried getting in a car and just driving past cities at high speed, nada on latest.

I would look for code that tries to setpos() a monster directly, without first checking if it can move there.

Perhaps zombies shoving other zombies or similar? ( just guessing here )

Allright I had a thorough look into this. It seems that monsters stumbling around stairs causes this message - in combination with stairs-teleportation.
The stumble() code looks for any tiles around the monster to have them move around. The stumbling code sets the move_to 'force' parameter true, forcing a move even if something is blocking the way.
https://github.com/CleverRaven/Cataclysm-DDA/blob/9c45bda51007a3550635ea65887054e95f1134b7/src/monmove.cpp#L1732-L1773

However when performing the move_to, there's this special part of the code that teleports zombies up and down stairs.
https://github.com/CleverRaven/Cataclysm-DDA/blob/9c45bda51007a3550635ea65887054e95f1134b7/src/monmove.cpp#L1395-L1414

So the stumbling code does not check if the tiles are free that move_to will bring up when teleporting the creature.

Big question is how to fix this properly. I'm not sure why the stumbling code forces the zombie to move. But setting that force parameter to false avoids the problem.
Alternatively, having the zombies not stumble "downwards" (L1752) also fixes the problem.

But ultimately this comes down to the pretty dirty way that monsters are teleported around stairs.

Bonus: having a glance at #37392 , zombies (or fungals in that case) stumbling into a teleporter can also cause this problem.

Just got a "wanted to move" error with #38497 applied on my local branch. Looking at the stack-trace, it was probably from a nearby portal:

    Attempting to repeat stack trace using debug symbols…
    debug_write_backtrace(std::ostream&)
    ??:?
    DebugLog(DebugLevel, DebugClass)
    ??:?
    realDebugmsg(char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > const&)
    ??:?
    void realDebugmsg<std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >, int const&, int const&, int const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> > >(char const*, char const*, char const*, char const*, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&, int const&, int const&, int const&, std::__cxx11::basic_string<char, std::char_traits<char>, std::allocator<char> >&&)
    ??:?
    Creature_tracker::update_pos(monster const&, tripoint const&)
    ??:?
    monster::setpos(tripoint const&)
    ??:?
    teleport::teleport(Creature&, int, int, bool, bool)
    ??:?
    trapfunc::telepad(tripoint const&, Creature*, item*)
    ??:?
    trapfunc::portal(tripoint const&, Creature*, item*)
    ??:?
    trap::trigger(tripoint const&, Creature*, item*) const
    ??:?
    monster::move_to(tripoint const&, bool, float)
    ??:?
    monster::stumble()
    ??:?
    monster::move()
    ??:?
    game::monmove()
    ??:?
    game::do_turn()
    ??:?
    main
    ??:?
    __libc_start_main
    /build/glibc-Cl5G7W/glibc-2.23/csu/../csu/libc-start.c:325
    _start
    ??:?
Backtrace emission took 1 seconds.
src/creature_tracker.cpp:127 [bool Creature_tracker::update_pos(const monster &, const tripoint &)] update_zombie_pos: wanted to move the small blob to 125,110,2, but new location already has the small blob

I'm curious if a teleporting monster should be telefragging the occupying monster/player (or itself) if the destination of the teleport is being occupied. Either that or the teleport should refuse to work.

Was this page helpful?
0 / 5 - 0 ratings