-
Notifications
You must be signed in to change notification settings - Fork 70
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
Principia Crashing in principia__CollisionDeleteExecutor #4136
Comments
I have stared at this code before, and I have wondered about this |
|
I was able to reproduce the problem in a unit test. There is a curious race in the construction of Principia/base/push_pull_callback.hpp Lines 82 to 85 in e384167
and the constructor is as follows: Principia/base/push_pull_callback_body.hpp Lines 87 to 96 in e384167
Note how the (implicit) construction of the member variables lock_ and result_ occurs after the construction of the member thread_ . So if thread_ is executing "fast enough" it can assign a value to result_ at line 93 before the construction of that member variable has happened. Some time after the thread terminates, result_ would be reset to std::nullopt and the invariant of the class (if the thread has terminated, result_ contains a value) would be violated.
Now, can this happen? Can the thread execute so quickly that it finishes before |
The vessel in question was in a tundra orbit with a very high AP, so it's certainly possible that it qualified as "far enough from the centre of the celestial" for at least some part of the orbit. |
In general my game has been pretty unstable, with frequent crashes. This one in particular seemed to have a fairly useful stack trace, so posting it here. I loaded the game and immediately switched to the flight view of an vessel orbiting earth. After changing the plotting frame of reference and time warping a bit I dropped out of timewarp to perform a manual maneuver and the game crashed. No error was displayed.
Not sure if it's related to my previous crash report here. Hopefully this one is a bit more actionable as it contains a full stack trace, though I do acknowledge that the linux distro isn't supported.
INFO.20241121-150731.31589.log
WARNING.20241121-150731.31589.log
ERROR.20241121-150731.31589.log
player_and_ksp_log.zip
The text was updated successfully, but these errors were encountered: