Opened 9 years ago

Closed 9 years ago

Last modified 8 years ago

#3320 closed defect (needsinfo)

[NEEDS INFO] 0AD Alpha 18 Crash on Start

Reported by: Jérôme Kell Owned by:
Priority: Should Have Milestone:
Component: Core engine Keywords:
Cc: Patch:

Description

I was about to play it for fun as i encounterd that the exe crash while starting.

When i start it with Quickstart.bat it works but without sound.

My system is Windows 7 x64

I´ll add the Systeminfo.txt, the mainlog & a crashlog made with debugview.

Attachments (4)

mainlog.html (16.6 KB ) - added by Jérôme Kell 9 years ago.
mainlog from the gamefolder
Debugview.LOG (1.8 KB ) - added by Jérôme Kell 9 years ago.
Debuglog made with Debugview
systeminfo.txt (19.0 KB ) - added by Jérôme Kell 9 years ago.
Debug.txt (9.8 KB ) - added by Jérôme Kell 9 years ago.

Download all attachments as: .zip

Change History (19)

by Jérôme Kell, 9 years ago

Attachment: mainlog.html added

mainlog from the gamefolder

by Jérôme Kell, 9 years ago

Attachment: Debugview.LOG added

Debuglog made with Debugview

by Jérôme Kell, 9 years ago

Attachment: systeminfo.txt added

comment:1 by elexis, 9 years ago

The very first line in 0ad's command line output has an error (the only one I could find):

[12276] HRT: activating HPET failed: Unknown error (-100022, 0xFFFFFFFFFFFE794A)   

HPET means High Precision Event Timer I think.

Are you sure you started pyrogenesis.exe? Can you still reproduce the issue after rebooting?


Quickstart.bat only contains this

start pyrogenesis.exe -quickstart

So it should be the same thing as starting the .exe file.

In Config.cpp and Gamesetup.cpp I could find the only queries of the quickstart argument:

if (args.Has("quickstart"))
{
	g_Quickstart = true;
	g_DisableAudio = true; // do this for backward-compatibility with user expectations
}

if (!g_Quickstart)
	g_UserReporter.Initialize(); // after config

if(!g_Quickstart)
{
	WriteSystemInfo();
	// note: no longer vfs_display here. it's dog-slow due to unbuffered
	// file output and very rarely needed.
}

So having no sound is expected with the quickstart.

comment:2 by Jérôme Kell, 9 years ago

yes, i meant the pyrogenesis.exe and yes i can reproduce the error even after reboot

in reply to:  1 comment:3 by elexis, 9 years ago

Replying to elexis:

[12276] HRT: activating HPET failed: Unknown error (-100022, 0xFFFFFFFFFFFE794A)   

HPET means High Precision Event Timer I think.

This error is generated in whrt.cpp. Looking at the code tells me that this error wasn't the cause for the crash, as the program continued after the error with seemingly proper timer values:

/**
 * @return the newly created and unique instance of the next best counter
 * that is deemed safe, or 0 if all have already been created.
 **/
static ICounter* GetNextBestSafeCounter()
{
	for(;;)
	{
		static size_t nextCounterId = 0;
		ICounter* counter = CreateCounter(nextCounterId++);
		if(!counter)
			return 0;	// tried all, none were safe

		Status err = ActivateCounter(counter);
		if(err == INFO::OK)
		{
			debug_printf("HRT: using name=%s freq=%f\n", counter->Name(), counter->NominalFrequency());
			return counter;	// found a safe counter
		}
		else
		{
			wchar_t buf[100];
			debug_printf("HRT: activating %s failed: %s\n", counter->Name(), utf8_from_wstring(StatusDescription(err, buf, ARRAY_SIZE(buf))).c_str());
			DestroyCounter(counter);
		}
	}
}

We need a crashdump to find out where it actually crashed. See http://trac.wildfiregames.com/wiki/ReportingErrors

comment:4 by Jérôme Kell, 9 years ago

I dont have any crashdumps, just the mainlog in the Appdata\Local & Game Logs folder, thats why i made a crashlog with debugview.

Now i mader another Debug file with Windebug, maybe that helps. its the debug.txt.

by Jérôme Kell, 9 years ago

Attachment: Debug.txt added

comment:5 by elexis, 9 years ago

According to the errors in your attachment, the symbol search path is not setup correctly, thats why it doesn't find most of the *.dll files (if I'm reading that file correctly).

The last two lines of the error tell you a possible solution to setup your debugger correctly:

You can troubleshoot most symbol related issues by turning on symbol loading diagnostics (!sym noisy) and repeating the command that caused symbols to be loaded.

You should also verify that your symbol search path (.sympath) is correct.

comment:6 by Jérôme Kell, 9 years ago

How do i manage the symbol loading diags & .sympath part?

comment:7 by elexis, 9 years ago

Unfortunately I have never worked with that debugger, so I don't know any specifics.

You probably only have to tell the debugger where to find those missing DLL files. It says that you didn't specify a search path for the DLLs:

Symbol loading may be unreliable without a symbol search path

This should be the documentation: https://msdn.microsoft.com/en-us/library/windows/hardware/ff558829%28v=vs.85%29.aspx

Also a websearch for the error messages might return some useful results.

comment:8 by historic_bruno, 9 years ago

The HPET failing is "normal", at least I always get that error. Also those symbols failing to load is "normal", they aren't in SVN and Microsoft won't have them on their servers. It looks WinDbg is already searching the right places for symbols.

Can you get the call stack with ~* kp ?

Also, is the game failing to create a system_info.txt in the log folder? I notice you attached a different info file.

comment:9 by Jérôme Kell, 9 years ago

yes the only file the game creates before it crashes is the mainlog. Nothing else.

I am not familiar with debugging it all so i dont know how to do the call stack.

comment:10 by historic_bruno, 9 years ago

If you already had the game open in WinDbg, you know most of the details :) Just run the ~* kp command after it crashes.

comment:11 by Jérôme Kell, 9 years ago

Thats what happend after the ~+ kp command:

0:000:x86> ~* kp

. 0 Id: 2e14.2f44 Suspend: 1 Teb: 7efdb000 Unfrozen ChildEBP RetAddr WARNING: Stack unwind information not available. Following frames may be wrong. 0044f7f4 771a1607 ntdll32LdrVerifyImageMatchesChecksum+0x96c 0044f970 771658ad ntdll32RtlUlonglongByteSwap+0x4017 0044f9c0 77159269 ntdll32RtlSetUnhandledExceptionFilter+0x50 0044f9d0 00000000 ntdll32LdrInitializeThunk+0x10

comment:12 by historic_bruno, 9 years ago

You still need to perform the earlier steps to set up the symbols, the way they were before, see also DebuggingOnWindows.

comment:13 by historic_bruno, 9 years ago

Milestone: Backlog

comment:14 by historic_bruno, 9 years ago

Milestone: Backlog
Resolution: needsinfo
Status: newclosed
Summary: 0AD Alpha 18 Crash on Start[NEEDS INFO] 0AD Alpha 18 Crash on Start

comment:15 by historic_bruno, 8 years ago

Wonder if this could be related to #3660. We have found a problem and solution there. Do you have many sound devices by chance? (You can check by running misinfo32.exe from the start menu, looking in Components > Sound Device, copy paste the output here).

Note: See TracTickets for help on using tickets.