Skip to content
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

There are 22 known save games that crash OpenTTD (latest master) on load. #7602

Closed
James103 opened this issue May 22, 2019 · 7 comments
Closed

There are 22 known save games that crash OpenTTD (latest master) on load. #7602

James103 opened this issue May 22, 2019 · 7 comments

Comments

@James103
Copy link
Contributor

@James103 James103 commented May 22, 2019

Version

c1d26d8 (2019-05-19)

Expected results

The (22+) savegames listed below don't crash.

Actual results

  1. The savegame 'crash.sav' (#964) crashes while loading with Assertion failed at line 205 of d:\a\1\s\src\track_func.h: tracks == INVALID_TRACK_BIT || (tracks != TRACK_BIT_NONE && KillFirstBit(tracks & TRACK_BIT_MASK) == TRACK_BIT_NONE). Crash info has been generated.

  2. The savegame 'crash.sav' (#1627) crashes while loading with Disconnecting road vehicle. Crash info has been generated.

  3. The savegame 'crash.sav' (#1767) crashes while loading with Assertion failed at line 1035 of d:\a\1\s\src\newgrf_engine.cpp: !(e->u.air.subtype & AIR_CTOL). Crash info has been generated.

  4. The savegame 'Screenshot Apr 4th, 1976.sav' (#6169) crashes with Assertion failed at line 305 of d:\a\1\s\src\cargopacket.h: this->action_counts[MTA_KEEP] + this->action_counts[MTA_DELIVER] + this->action_counts[MTA_TRANSFER] + this->action_counts[MTA_LOAD] == this->count when Road Vehicle 3 starts to unload at Wroclaw Woods. Workaround: Send Road Vehicle 3 to depot and sell/replace the vehicle. Crash info has been generated.

  5. The savegame 'crash.sav' (#5965) loads fine, but crashes with Assertion failed at line 113 of d:\a\1\s\src\pool_type.hpp: index < this->first_unused when you zoom out, scroll near certain places, or unpause the game. No crash info has been generated.

  6. The savegame 'TRT03.SV1' (#5965) loads fine, but as soon as you unpause the game, it crashes with Assertion failed at line 225 of d:\a\1\s\src\ground_vehicle.hpp: this->z_pos == GetSlopePixelZ(this->x_pos, this->y_pos). Crash info has been generated.

  7. The savegame 'TRT01.SV1' (#5306) crashes while loading with Assertion failed at line 4036 of d:\a\1\s\src\station_cmd.cpp: st->facilities == (FACIL_AIRPORT | FACIL_DOCK) && st->airport.type == AT_OILRIG. Crash info has been generated.

  8. The savegame 'ThunderHammer.sav' (#5305) crashes while loading with Assertion failed at line 113 of d:\a\1\s\src\core\pool_type.hpp: index < this->first_unused. Crash info has been generated.

  9. The savegame 'Tax Fiddlers Anonymous, 31st Jul 2056.sav' (#5232) crashes while loading with Assertion failed at line 433 of d:\a\1\s\src\core\kdtree.hpp: this->Count() > 0. When I try to do the emergency savegame, it fails with two Windows-style "OpenTTD has stopped working" error messages in a row. Crash info has been generated.

  10. The savegame 'crash.sav' (#4723) loads fine, but after a few game ticks crashes with Assertion failed at line 133 of d:\a\1\s\src\pathfinder\follow_track.hpp: ... No crash info has been generated.

  11. The savegame 'crash.sav' (#4683) loads fine, but after a couple of game days (25th Jan 2028), crashes with Assertion failed at line 74 of d:\a\1\s\src\yapf\yapf_ship.cpp: IsValidTrackDir(trackdir) (if using YAPF, edit: NPF crashes as well). No crash info has been generated.

  12. The savegame 'MC Transport.sav' (#4524) crashes while loading with Assertion failed at line 114 of d:\a\1\s\src\gamelog.cpp: _gamelog_action_type == GLAT_NONE. Crash info has been generated.

  13. The savegame 'MC Transport-fixed2.sav' (#4524) crashes while loading with Assertion failed at line 84 of d:\a\1\s\src\bitmap_type.h: this->Contains(tile) Crash info has been generated.

  14. The savegame 'Islanders Ltd., 18-04-2221.sav' (#3970) loads fine, but crashes after a couple of game days (19th Apr 2221) with Assertion failed at line 263 of d:\a\1\s\src\vehicle.cpp: (this->vehstatus & VS_CRASHED) == 0. This assert is probably triggered by a bugged train in a depot at (412,352). Crash info has been generated.

  15. The savegame 'crash.sav' (#3863) crashes while loading with a Disconnecting train error. No crash info has been generated.

  16. The savegame 'TRT01.SV1' (#3601) crashes while loading with Assertion failed at line 4036 of d:\a\1\s\src\station_cmd.cpp: st->facilities == (FACIL_AIRPORT | FACIL_DOCK) && st->airport.type == AT_OILRIG. Crash info has been generated.

  17. All of the (3) 'crash.sav' savegames from (#3422) crash while loading with Assertion failed at line 1937 of d:\a\1\s\src\economy.cpp: v->load_unload_ticks != 0. No crash info has been generated for either of those savegames.

  18. The savegame 'totr.sav' (#3304) crashes while loading with a Disconnecting train error. Crash info has been generated.

  19. The next 6 savegames from (#3049, #3046) crash after a few days with Assertion failed at line 1271 of d:\a\1\s\src\economy.cpp: front_v->cargo_payment == nullptr:

  • 'Preset#2, 5th Aug 1946.sav' (#3049) crashes on 13th Aug 1946 with this log.
  • 'kwx-eu2.sav' (#3046) crashes on 24th Dec 1947 with this log.
  • 'autosave15.sav' (#3046) has not crashed yet (as of 14th May 1944, savegame from 1942)
  • 'jul_1947.sav' (#3046) crashes on 19th Jul 1947 with this log.
  • 'jan_1947.sav' (#3046) crashes on 20th Feb 1947 with this log.
  • 'kwx-eu2-fixed.sav' (#3046) should not have crashed, and has not crashed yet (as of 3rd Aug 1948)
  1. The savegame 'crash.sav' (#2666) loads fine, but crashes with Assertion failed at line 1621 of d:\a\1\s\src\economy.cpp: front->current_order.IsType(OT_LOADING) when Train 5 starts loading/unloading. Crash info has been generated.

  2. The savegame 'TRT08.SV1' (#2560) crashes while loading with Assertion failed at line 4036 of d:\a\1\s\src\station_cmd.cpp: st->facilities == (FACIL_AIRPORT | FACIL_DOCK) && st->airport.type == AT_OILRIG. Crash info has been generated.

  3. The savegame 'Standard Transport, 20th Dec 1989' (#2311) loads fine, but can crash in two possible ways (both caused by removing level crossing tiles)

Steps to reproduce

Load each of the (22) savegames listed above and follow that savegame's specific crash-reproduction directions (if any).

@James103
Copy link
Contributor Author

@James103 James103 commented Jul 8, 2019

Version of OpenTTD

OpenTTD 1.9.2 (stable release)

Save games that don't crash in this version

  1. [1] The savegame 'crash.sav' (#964) loads fine, but outputs an error saying that 'Train 8' of 'Martin Meridius Transport' has invalid length. Upon closer inspection, the vehicle detail window shows 14 total cars (7 tiles), but the ingame length looks to be between 3 and 6 tiles.

  2. [3] The savegame 'crash.sav' (#1767) loads fine, but outputs many errors saying that all of the trains of 'Friedhaven Transport' has invalid length. Also, 3 out of the 4 NewGRFs loaded in the savegame are marked as 'disabled' for no reason other than that the climate is Toyland.

  3. [4] The savegame 'Screenshot Apr 4th, 1976.sav' (#6169) loads fine, and the road vehicle starts unloading on the 13th of April, 1976. I think of this road vehicle as being a portal to another forest dimension whose trees are being cut down, and the cargo amount as being the health of the forest. The load percentage indicator uses a byte stored in memory, which is why it overflows many times. Also, '1,000 kg of wood' does not actually weigh 1,000 kg as expected, but only 875 kg, which is most likely a bug.

  4. [6] The savegame 'TRT03.SV1' (#5965) loads and simulates fine (as far as my testing goes).

  5. [7] The savegame 'TRT01.SV1' (#5306) loads and simulates fine (as far as my testing goes).

  6. [9] The savegame 'Tax Fiddlers Anonymous, 31st Jul 2056.sav' (#5232) loads and simulates fine (as far as my testing goes).

  7. [11] The savegame 'crash.sav' (#4683) loads and simulates fine (as far as my testing goes). The reason it crashes is partly because the Original pathfinder was removed after 1.9.2, causing it to fallback to YAPF.

  8. [13] The savegame 'MC Transport-fixed2.sav' (#4524) loads and simulates fine (as far as my testing goes).

  9. [14] The savegame 'Islanders Ltd., 18-04-2221.sav' (#3970) loads and simulates fine (as far as my testing goes). When it would crash with the assertion in my original comment, OpenTTD 1.9.2 instead outputs 9 news messages saying "Floods! At least 0 missing, presumed dead after significant flooding!". Those messages don't disappear, indicating that the crashed trains are permanent.

  10. [16] The savegame 'TRT01.SV1' (#3601) loads and simulates fine (as far as my testing goes).

  11. [17] All of the (3) 'crash.sav' savegames from (#3422) load and simulate fine (as far as my testing goes).

  12. [19a] 'Preset#2, 5th Aug 1946.sav' (#3049) loads and simulates fine (as far as my testing goes).

  13. [19b] 'kwx-eu2.sav' (#3046) loads and simulates fine (as far as my testing goes).

  14. [19d] 'jul_1947.sav' (#3046) loads and simulates fine (as far as my testing goes).

  15. [19e] 'jan_1947.sav' (#3046) loads and simulates fine (as far as my testing goes).

  16. [21] The savegame 'TRT08.SV1' (#2560) loads and simulates fine (as far as my testing goes).

  17. [22] The savegame 'Standard Transport, 20th Dec 1989' (#2311) loads and simulates fine, but demolishing the problematic railway tiles yields one error message in the form of "Message from company", and another regular error message. Both state: "Can't clear this area, owned by someone".

Save games that still crash in this version

  1. [2] The savegame 'crash.sav' (#1627) crashes while loading with Disconnecting road vehicle. No crash info has been generated.

  2. [5] The savegame 'crash.sav' (#5965) loads fine, but crashes (no crash log) when you scroll in certain places or unpause the game.

  3. [8] The savegame 'ThunderHammer.sav' (#5305) crashes while loading with this log.

  4. [10] The savegame 'crash.sav' (#4723) loads fine, but after a few game ticks crashes with Disconnecting train. No crash info has been generated.

  5. [15] The savegame 'crash.sav' (#3863) crashes while loading with a Disconnecting train error. No crash info has been generated.

  6. [18] The savegame 'totr.sav' (#3304) crashes while loading with a Disconnecting train error. Crash info has been generated.

  7. [20] The savegame 'crash.sav' (#2666) loads fine, but simulating the next game tick causes the game to crash with this log.

Save games that fail to load

  1. [12] The savegame 'MC Transport.sav' (#4524) fails to load, outputting Game Load Failed?Broken savegame - Invalid road vehicle subtype.
@Eddi-z
Copy link
Contributor

@Eddi-z Eddi-z commented Jul 8, 2019

Note that 1.9.2 is a release build and has assertions disabled. This means it will less aggressively crash, but the invalid values might cause more subtle issues later.

@James103
Copy link
Contributor Author

@James103 James103 commented Jul 25, 2019

Version of OpenTTD

20190707-master-g1e723934a1

New crashed savegame

  1. The savegames "autosave30.sav" and "crash.sav" (#4397) both crash on load with Assertion failed at line 1493 of /usr/src/OpenTTD/compile/src/tunnelbridge_cmd.cpp: GetTunnelBridgeTransportType(tile) != TRANSPORT_RAIL. Crash info has been attached. I'm adding this because the original issue was marked as fixed, without saying whatever it fixed existing savegames or not.
@Eddi-z
Copy link
Contributor

@Eddi-z Eddi-z commented Jul 25, 2019

Uhm, what exactly are you trying to do here?

there is a huge difference between trying to fix a bug that might corrupt a savegame or trying to load a already corrupted savegame to undo the corruption. that second part is never really a goal for anyone.

@nielsmh
Copy link
Contributor

@nielsmh nielsmh commented Jul 25, 2019

I agree that repairing corrupted savegames should not be a goal as such. There's room for exceptions if a released version that was out for a long time had a bug that produced a large number of corrupted savegames, but one-offs are noise and would only add unnecessary complexity to the saveload code.
If you have single broken savegames that really need repair for whatever reason, make a specialised build of OTTD that repairs that specific issue, then re-save the game with the corruption fixed.

@PeterN
Copy link
Member

@PeterN PeterN commented Jul 25, 2019

If it loads in 1.9.2, then yes it's very much valid and should load in master. There were known issues with the k-d tree loading, some of which was fixed, and likely issues with other big things that have been added...

@James103
Copy link
Contributor Author

@James103 James103 commented May 4, 2020

Not very useful in current state, so closing.

@James103 James103 closed this May 4, 2020
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
4 participants
You can’t perform that action at this time.