Crash report

Hello ,
I tried playing this yesterday . Once the first 3DO image appeared the screen went blank for like 4 mins until it finally let me into the game. Then it was really sluggish to play. In the first battle it crashed,

Im not sure IF i am meant to send this to you here as i have never been involved in any open-source projects before so if this is the wrong spot let me know.

The link below takes you to the Crashinfo.dump

hey it’s good to post buginfos about the project - it is valuable to developers.
however you should put it not exactly here. on main menu of vcmi homepage there’s “tracker” button. tracker make menaging bugs easier than on forum. you see there many bugreports of which most are resolved. note you must make register there independently.

but it’s not wrong you posted there. the help&bugs board used to be used like this before they moved to tracker. also when you post about bugs you need post both crashdumps (for client and for server) and both logs (logs are human redable info that is noted in text file and is almost same as the infos in the console)

4 minutes to start the game? That’s something wrong here - it shouldn’t take more than several seconds. What system do you have (OS, CPU, memory size)

Crashdump may help but it isn’t best way to report bugs.
Check this page: Bug reporting guidelines

Hi luke83,
are the issues you describe reproducible? Can you tell us what is the output in the console window at the moment of that 4min freeze (or just post the screenshot)? It may tell us which part of loading took so long. Also, the log files will be helpful.

Translated stacktrace:

>	VCMI_lib.dll!BattleInfo::getAccessibility(const CStack * stack=0x00000000, bool addOccupiable=true, std::vector<THex,std::allocator<THex> > * attackable=0x055d6fb8 ...]())  Line 327 + 0x3e bytes	C++
 	VCMI_lib.dll!CBattleInfoCallback::battleGetAvailableHexes(const CStack * stack=0x00000000, bool addOccupiable=true, std::vector<THex,std::allocator<THex> > * attackable=0x055d6fb8 ...]())  Line 226 + 0x15 bytes	C++
 	VCMI_client.exe!CBattleInterface::redrawBackgroundWithHexes(const CStack * activeStack=0x00000000)  Line 3545 + 0x1e bytes	C++
 	VCMI_client.exe!CBattleInterface::setPrintCellBorders(bool set=true)  Line 1468	C++
 	VCMI_client.exe!boost::detail::function::void_function_obj_invoker0<boost::_bi::bind_t<void,boost::_mfi::mf1<void,OptionsTab,int>,boost::_bi::list2<boost::_bi::value<OptionsTab *>,boost::_bi::value<unsigned char> > >,void>::invoke(boost::detail::function::function_buffer & function_obj_ptr={...})  Line 154	C++
 	VCMI_client.exe!CFunctionList<void __cdecl(void)>::operator()()  Line 64 + 0x12 bytes	C++
 	VCMI_client.exe!CHighlightableButton::select(bool on=true)  Line 291	C++
 	VCMI_client.exe!CBattleOptionsWindow::CBattleOptionsWindow(const SDL_Rect & position={...}, CBattleInterface * owner=0x055d6fb8)  Line 4431	C++
 	VCMI_client.exe!CBattleInterface::bOptionsf()  Line 2303 + 0x2d bytes	C++
 	VCMI_client.exe!CFunctionList<void __cdecl(void)>::operator()()  Line 64 + 0x12 bytes	C++
 	VCMI_client.exe!AdventureMapButton::clickLeft(boost::logic::tribool down={...}, bool previousState=true)  Line 168	C++
 	VCMI_client.exe!CGuiHandler::handleEvent(SDL_Event * sEvent=0x00000001)  Line 255	C++
 	VCMI_client.exe!CGuiHandler::handleEvents()  Line 155	C++
 	VCMI_client.exe!CPlayerInterface::update()  Line 1350	C++
 	VCMI_client.exe!CGuiHandler::run()  Line 363	C++
 	VCMI_client.exe!boost::`anonymous namespace'::thread_start_function()  + 0x63 bytes	C++
 	msvcr100.dll!_callthreadstartex()  Line 314 + 0x6 bytes	C
 	msvcr100.dll!_threadstartex(void * ptd=0x0538f130)  Line 292 + 0x5 bytes	C
 	[Frames below may be incorrect and/or missing, no symbols loaded for kernel32.dll]

Seems to be reading from NULL+78h at that huge if in BattleInfo::getAccessibility (BattleState.cpp line 324-327). Strange, as I don’t see, what can be NULL there (if stack was, that should’ve crashed much earlier).

ok , this weekend i will try to reproduce the bug.

I would like to support this project as much as i can but unfortunately finding errors is pretty much all i can do for you. :stuck_out_tongue:

Also to answer a previous questions :

Windows XP - Virtual Box VM running on Ubuntu.

it seems to run somewhat slower (but not 4 min only for intro) in virtualbox than native in linux, maybe if you use ubuntu you should compile it and run it native.

Got same backtrace - happens if options window opened during move of our creature. Check for NULL in redrawBackgroundWithHexes works fine.

If you can’t or don’t want to compile VCMI yourself then try running it in Wine. It should be more-less stable and you won’t get several minutes startup time.

Ivan , Currently, i Cant compile form source as i have never learned how , i only made the switch from windows about 1 year ago and until now i have not needed to try. I wil lstart reading up on HOW to do this.

IssJBrolli , I didn’t actually time it , it just felt like forever :), Maybe it just felt like 4 mins because i really wanted to play it :slight_smile: I will try to have more accurate information in the future.

I have another error after start vcmi:

Creating console and logfile: 0
Loading settings: 344
VCMI 0.85c (client)
New screen flags: 0
        Initializing screen: 609
        Initializing video: 594
        Initializing minors: 0
        Loading default system settings: 234
        Initializing sound: 2125
Initializing screen and sound handling: 2359
Loading .lod files: 1453
        General text handler: 1218
        Hero handler: 391
        Artifact handler: 172
Not parsed bonus L#64
Not parsed bonus k#71
        Creature handler: 969
        Town handler: 453
        Object handler: 234
        Def information handler: 985
        Building handler: 93
        Spell handler: 172
Initializing VCMI_Lib: 6422
Screen handler: 78
Loading and transforming heroes' flags: 1156
        Main graphics: 2532
Initializing game graphics: 0
Message handler: 62
Initialization of VCMI (together): 16219
Assertion failed: Mix_GetMusicType(music) == MUS_MP3_MAD, file e:\game\vcmi\trun
k\client\cmusichandler.cpp, line 495

And than i got:
Debug Error!
Program: E:\game\vcmi\trunk\VCMI_client.exe

  • abort() has been called

I tested with VC2010 and msvc-pack.7z from forum (contain libs and include files) on Win XP SP3. Compiled fine:
========== Build: 6 succeeded, 0 failed, 0 up-to-date, 0 skipped ==========

Can somebody fix it, if it’s bug, or help me?)

You have to copy DLL files from libraries pack to the VCMI folder.

I did it. The same error.
By the way,

#ifdef _WIN32
	//The assertion will fail if old MSVC libraries pack .dll is used
	assert(Mix_GetMusicType(music) == MUS_MP3_MAD);
  • is this checking VC runtime dlls or SDL and other?

That assertion is meant to fail when an old version of SDL_mixer.dll is used.

You have either copied old files or put them in a wrong place (it has to be VCMI working directory).
Go to the folder of VCMI and check SDL_mixer.dll file. It should have size of 233.5kB and date of 2011-08-11.

Try deleting the file and run VCMI. It should not start at all, giving a message about missing library. If VCMI starts, it means there is somewhere another copy of DLL that VCMI is using.

You my also want to try last development build ]. Does it work for you?

Yes, it’s 239104 B and date of 2011-08-11.

When i delete SDL_mixer.dll, i go message like “This application has failed to start because SDL_mixer.dll was not found. Re-installing the application may fix this problem.”

No, the same error:

Initializing game graphics: 0
Message handler: 0
Initialization of VCMI (together): 1671
Assertion failed: Mix_GetMusicType(music) == MUS_MP3_MAD, file CMusicHandler.cpp
, line 495

But if i comment 493-496 lines and build solution, it starts fine =)

Huh… I really have no further ideas, what’s going on. If even the development build is crashing, it’s not anything with your dev environment. Rather something strange in system, making the DLL behave in a different way… but why would SDL_mixer.dll return objects of one type on one machine and different type on another? Especially when I built it deliberately without SMPEG support, to force it to use MAD.

Of course, you can keep the assertion commented out but it’s like shooting the messenger: a workaround instead of solution. Something inside is going wrong.

Now, having the official build issued with a new music support, we’ll see if more reports like yours show up.

I found the reason of error in VCMI_Client_log.txt:

Initializing game graphics: 0
Message handler: 0
Initialization of VCMI (together): 6047
Loading music file ./Mp3/MAINMENU.MP3

And I did’t copy Mp3 folder at all. You can see the same error, if you remove this folder.
So, can you add some clear error message like “File ./Mp3/MAINMENU.MP3 not found!” ?

My current list of files added to trunk version:

In root:

Create folder "Games" for savegames
Copy folders "Maps" and "Mp3"

-*.pxc (for using other resolutions)

-*.DEF (for using other resolutions)

*.pxc and *.DEF files taken from development build ]

Many thanks for the information.
The strangest issues are often caused by the simplest causes. I’ll soon fix VCMI to give reasonable error message and not crash on missing MP3.