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
Crash in Alpha 4 due to Assert #409
Comments
What operating system are you using? |
I wonder if this is the same bug as (or related to) #280 |
Ok, I think I can reproduce the assertion with the savegame you provided |
Ah, good :-) As you can see from the error message, I use Linux. To be more precise: Ubuntu 21.04, kernel 5.11.0-31-generic. If you need me to try anything, please let me know. |
This bug is a pain in the ass, because for some reason the debugger quits when inspecting the entity object in the backtrace.. so I'd have to debug the debugger first :-/ (Not sure if gdb or Eclipse CDT's gdb Integration is to blame, but as far as I can tell gdb doesn't crash but exits more or less regularly with exit code 0) This already stopped my progress last August, and now I tried again with a new Eclipse version (back in August I also tried several gdb versions), running into the same problem.. I hope I can get myself to look into the issues (first the one in Eclipse/gdb then the one in dhewm) deeper soon, as this is a bug I'd like to fix before releasing dhewm3 1.5.2 |
OTOH, some information can be gathered from what dhewm3 prints and the backtrace:
Apparently 'ride_of_death2_parent' (which seems to be some kind of physics object) is teleported, and 'ride_of_death2' (which also seems to be some kind of physics object) is "bound" to it (probably connected with a joint or something?). However, this is just a theory based on the backtrace and the warning logged earlier, I couldn't verify if the assertion is indeed caused by these two entities (or physics objects or whatever they are) because the debugger quits first.. maybe I should try again with "pure" gdb, but I think last time getting to the right place/objects was cumbersome and (theoretically) a lot easier by clicking around in Eclipse's debugger frontend |
Turns out the warning and the assertion are (most probably) not related: when moving the assertion in
right before the assertion, so it's some zombie security guard with a shotgun (and not the "ride_of_death" moving platform) that for some reason is yeeted far into the void - that's the other thing, |
Yeah, it's a complex map, with all of those moving platforms. Good to see you're making some progress, thanks for all the efforts! |
Bad news: Still no progress on this bug Good news: While investigating the Eclipse debugger issue I stumbled upon when debugging this, after debugging through Eclipse CDT, gdb and glibc, it turned out to be a kernel bug which I reported: https://bugzilla.kernel.org/show_bug.cgi?id=215611 |
Wow, great effort! Amazing that a dhewm3 bug report leads to a kernel fix by the great Mr. Torvalds :-) |
Great find, hopefully thats the end of the GDB issues |
Finally investigated this bug a bit further. The huge translation of "monster_zsec_shotgun_12" is indeed caused by the huge translation of "ride_of_death2" (which is caused by "ride_of_death2_parent" being teleported by
suggests that one should not teleport parents of pushing movers around, so this should be a bug in the map (or its script), not in the C++ code. I'm also not sure what to do about this:
|
Looks like that monster is even dead (in the savegame), but not gibbed, so that ride_of_death thing moves through the cadaver (and apparently gibs it). Not that it makes a difference, really.. I think I'll just disable the assertion for this case - and probably this whole issue isn't that release-critical anyway, because it only happens if assertions are enabled, i.e. in debug builds. If it ever turns out that there are more levels with the same issue (pushing movers connected to other entities being dragged around when the other entity is teleported and crashing into things on the way) I might look at this again (and maybe try to teleport the connected movers as well), but for now I hope that this isn't a common mistake |
Thanks for looking into it! |
In the savegame from that bugreport, "monster_zsec_shotgun_12" was lying dead pretty much at its spawn point. script/map_alphalabs4.script moves those "ride_of_death" platforms around, and at the end of a cycle teleports "ride_of_death*_parent" back to its starting position - and the "ride_of_death*" bound to it, which is a pushing mover, just gets dragged along by the physics code and thus can collide with that zombie cadaver, which then tries to push it along, causing that assertion in TestHugeTranslation(). This is a map bug - Doom3 even prints a warning: WARNING: script/map_alphalabs4.script(722): Thread 'map_alphalabs4::RideOfDeathPath': teleported 'ride_of_death2_parent' which has the pushing mover 'ride_of_death2' bound to it So I just disable that assertion for this specific case.. Also moved the assertion behind the corresponding warning, so that gets printed before the assertion kills the game.. Also a small change to CMakeLists.txt that should make enabling LINUX_RELEASE_BINS after CMake has already been run without it work
Hello,
After beating the boss in Alpha 4, the game crashes within seconds. I tried walking towards the exit, then saving before it crashes, but when I do so, it does not give me any extra time, i.e. the saved game will crash immediately upon loading, leading me to believe that it's about something going on in the level itself, like those moving platforms? Perhaps when they reach a certain state, something goes wrong? It's 100% reproducible. Attached are the savegame and the error message.
The version is 1.5.1rc2.
Error.zip
Keep up the good work, dhewm3 is awesome!
The text was updated successfully, but these errors were encountered: