Return-To-The-Roots / s25client

Return To The Roots (Settlers II(R) Clone)
http://www.rttr.info
GNU General Public License v2.0
478 stars 77 forks source link

Crash - Exit game #374

Closed BlOedsin closed 8 years ago

BlOedsin commented 8 years ago

I have a bug, which I am not sure how to report in a way, that you can reproduce. Sometimes, when I am closing the game (Menü -> End Game -> Yes) the whole game crashes. I attached a savegame, with which it happens to me. But it is not always. My feeling is, it happens mainly, if I was playing for a longer time before.

unbenannt

unbenannt 2

Link: https://www.sendspace.com/file/dh8wyn

Flamefire commented 8 years ago

Can you try to reproduce this with that latest version from today (should be out in a few minutes)?

Do you get any message from RTTR itself "RttR crashed. ..." or just the windows error handler?

BlOedsin commented 8 years ago

I will try with the latest version these days. I directly got the error message as shown in the screen-shot. Nothing before.

Flamefire commented 8 years ago

If you get the crash again, can you send me the replay please?

Flamefire commented 8 years ago

@BlOedsin Are there any news on this? I pushed a new version yesterday. If you can get a crash with that one, send me the replay+savegame. But I hope it should be fixed now...

BlOedsin commented 8 years ago

Sorry, as I need to start a new game, I did not have enough time to do that yet sorry. I will come back to you as soon as I have any results! I hope that weekend I will find some time!

BlOedsin commented 8 years ago

I retested with the latest version. I played about 30-40 minutes. And if you than exit the game, you get the crash. Replay attached.

Replay: https://www.sendspace.com/file/kogpnj

Flamefire commented 8 years ago

I tried a few times but got nothing... Can you try to debug this? Just download gdb for windows and put it into your rttr folder (where s25client is). Then download http://nightly.siedler25.org/s25client/archive/2016/s25rttr-dbg_20160129-1ce3ccead0ebce4ad61c3164ea270693a192babe_windows.i386.zip (for 32bit) or http://nightly.siedler25.org/s25client/archive/2016/s25rttr-dbg_20160129-1ce3ccead0ebce4ad61c3164ea270693a192babe_windows.x86_64.zip (for 64bit) and extract that to your rttr folder (incooperate folders) You should then have a s25client.exe.dbg right next to s25client.exe. Make sure you have the version 20160129 (upgrade/downgrade if required) Then you open a command prompt, navigate to your rttr folder and execute "gdb s25client.exe", in that window you type "symbol-file s25client.exe.dbg" and "run". If you then get the crash, gdb should stop execution. typing "bt" gets you a list of functions called and where it happened. This is what I need (probably just screenshot it, not sure if you can copy the text) If you have problems, ask me in IRC (Flamefire)

This would really help in finding that bug.

BlOedsin commented 8 years ago

A short general comment: I think the debug version is faster than the release version. Same map, same PC, and if I go down to gf = 10, the settlers are moving faster in the debug than in the release version. Unfortionally I did not check the log while playing. So I am not sure when it started with the

“SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!”

messages. Is it possible that this is related, that I have older savegame files in my savegame folder?

Lots of these messages:
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!

The really odd thing is, that somewhere in-between I have a couple of "saving game" lines, without errors...

SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
<scv> Saving game...
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!
SavedFile::Load: ERROR: Old file version (version: 28; expected: 29)!
Savegame::Load: ERROR: File is not a valid RTTR savegame!

The crash itself should be that one:

<scv> Saving game...
client state changed to stop
server state changed to stop

Program received signal SIGSEGV, Segmentation fault.
0x0000000000482437 in remove (__value=<optimized out>, this=<optimized out>)
    at /usr/lib/gcc/x86_64-pc-mingw32/4.4.5/../../../../x86_64-pc-mingw32/includ
e/c++/4.4.5/bits/list.tcc:196
196     /usr/lib/gcc/x86_64-pc-mingw32/4.4.5/../../../../x86_64-pc-mingw32/inclu
de/c++/4.4.5/bits/list.tcc: No such file or directory.
(gdb)
<scv> Saving game...
client state changed to stop
server state changed to stop

Program received signal SIGSEGV, Segmentation fault.
0x0000000000482437 in remove (__value=<optimized out>, this=<optimized out>)
    at /usr/lib/gcc/x86_64-pc-mingw32/4.4.5/../../../../x86_64-pc-mingw32/includ
e/c++/4.4.5/bits/list.tcc:196
196     /usr/lib/gcc/x86_64-pc-mingw32/4.4.5/../../../../x86_64-pc-mingw32/inclu
de/c++/4.4.5/bits/list.tcc: No such file or directory.
(gdb)
Flamefire commented 8 years ago

Short for now: please type in "bt" in gdb after you got the crash. It helps to see that it crashed in remove function but I need to know where it came from

Edit: Longer: The errors there are because you have older savegames in the folder. Once you open the load or save dialog it shows you your saved files and hence shows the errors. Am I correct in assuming you did this: Loaded a game, autosave enabled, then you saved the game manually and exited?

BlOedsin commented 8 years ago

sorry. I have now I savegame, in which I just needed to play a view minutes.... and could reproduce...

savegame attached: https://www.sendspace.com/file/u34e7b

Result of bt:

server state changed to stop
Program received signal SIGSEGV, Segmentation fault.
0x0000000000482437 in remove (__value=<optimized out>, this=<optimized out>)
    at /usr/lib/gcc/x86_64-pc-mingw32/4.4.5/../../../../x86_64-pc-mingw32/includ
e/c++/4.4.5/bits/list.tcc:196
196     /usr/lib/gcc/x86_64-pc-mingw32/4.4.5/../../../../x86_64-pc-mingw32/inclu
de/c++/4.4.5/bits/list.tcc: No such file or directory.
(gdb) bt
#0  0x0000000000482437 in remove (__value=<optimized out>,
    this=<optimized out>)
    at /usr/lib/gcc/x86_64-pc-mingw32/4.4.5/../../../../x86_64-pc-mingw32/includ
e/c++/4.4.5/bits/list.tcc:196
#1  DataChangedObservable::RemoveListener (this=0x16ed8670,
    listener=0x16bfa5c0)
    at /srv/jenkins/jobs/s25rttr-git/workspace/ARCH/x86_64/PLATFORM/windows/src/
DataChangedObservable.cpp:29
#2  0x0000000000739d18 in iwBaseWarehouse::~iwBaseWarehouse (this=0x16bfa4f0,
    __in_chrg=<optimized out>)
    at /srv/jenkins/jobs/s25rttr-git/workspace/ARCH/x86_64/PLATFORM/windows/src/
ingameWindows/iwBaseWarehouse.cpp:99
#3  0x0000000000959715 in iwStorehouse::~iwStorehouse (this=0x16ed8670,
    __in_chrg=<optimized out>)
    at /srv/jenkins/jobs/s25rttr-git/workspace/ARCH/x86_64/PLATFORM/windows/src/
ingameWindows/iwStorehouse.h:27
#4  0x00000000004b8034 in WindowManager::Switch (this=0x2f9b480)
    at /srv/jenkins/jobs/s25rttr-git/workspace/ARCH/x86_64/PLATFORM/windows/src/
WindowManager.cpp:934
#5  0x00000000004bb1f6 in WindowManager::Draw (this=0x16ed8670)
    at /srv/jenkins/jobs/s25rttr-git/workspace/ARCH/x86_64/PLATFORM/windows/src/
WindowManager.cpp:88
#6  0x00000000004b0cc0 in GameManager::Run (this=0x2f30c90)
    at /srv/jenkins/jobs/s25rttr-git/workspace/ARCH/x86_64/PLATFORM/windows/src-
--Type <return> to continue, or q <return> to quit---
BlOedsin commented 8 years ago

Sorry, forgot the last part:

--Type <return> to continue, or q <return> to quit---
/GameManager.cpp:214
#7  0x0000000000439a9e in main (argc=<optimized out>, argv=<optimized out>)
    at /srv/jenkins/jobs/s25rttr-git/workspace/ARCH/x86_64/PLATFORM/windows/src/
main.cpp:345
Flamefire commented 8 years ago

Ok. I guess you can reproduce this by opening the window of a storehouse and then exit the game without closing it. When you close it before, you don't get the crash. Is this correct?

BlOedsin commented 8 years ago

I can confirm that with an open storehouse it crashes, without it did not. As I normally have at least one storehouse window open, it is quite likely that this is the reason!

Flamefire commented 8 years ago

Thanks for your help. Should be fixed now

BlOedsin commented 8 years ago

Hi Just happened to me again in version 201602015

Can you provide me a debug version again, than I can try to test on sunday again with the debug.

Flamefire commented 8 years ago

Oh no! But thanks for reporting. You can get those yourself: http://nightly.siedler25.org/s25client/archive/2016/ The one for the latest version (20160205) should be: http://nightly.siedler25.org/s25client/archive/2016/s25rttr-dbg_20160205-2c49f5fb9adced47a9bd5214175ded0b5be44348_windows.x86_64.zip (64 bit)

Note: Make sure you have the correct file for the version you are using (check the date and revision in the filename vs in your running game) and this is not a "debug version" but rather the debug symbols for the release version you already have. So it does not change the game itself (hence no different behaviour) and most importantly it will report (probably) rubbish if you use it for the wrong version.

IMPORTANT: The savegame format was changed with the version from today. If you continued a savegame, then this might be the issue. I just forgot to bump the savegame version, so older savegames were still accepted but could lead to unpredictable problems. This is changed now. If you started a new game or can reproduce with a new game then it is a very valid issue

BlOedsin commented 8 years ago

It is a "different" crash! Cause I can send the crash report now! But also triggered by clicking exit game. I also attached you a screenshot, with my open windows, as you thought it might be related to a window which is open…

crash

PS: No it was a fresh game started today. PPS: If this does not help, I will test with gdp.exe on Sunday

Flamefire commented 8 years ago

Does not look like its related to the open windows this time. I'd need at least the savegame and replay. If you can get the backtrace with gdb yourself than it would be even better.

BlOedsin commented 8 years ago

I can confirm, that I did not get any crash after exiting the game with the version from today!