Debug Information That May Be Helpful In Fixing (New) Recent TRose.exe Crashes - Bug Reporting - WarpPortal Community Forums

Jump to content


Photo
- - - - -

Debug Information That May Be Helpful In Fixing (New) Recent TRose.exe Crashes


  • Please log in to reply
7 replies to this topic

#1 TwiliteGarden

TwiliteGarden

    Too Legit To Quit

  • Members
  • 1308 posts
  • LocationNew York City
  • Playing:ROSE Online
  • Server:Leonis

Posted 16 June 2012 - 10:56 PM

I used Visual Studio (VS) to attach to the TRose.exe process (the Rose client) so that I could catch the exception causing the recent crashes.

This thread contains the information I was able to obtain by using the VS debugger.

Note that since I do not have the symbol tables or the source code I was only able to view the Assembly. Therefore the information I am providing is very low level.

One interesting thing to mention is that when I attached the the TRose.exe process using VS I was able to catch the exception and continue the game. The VS debugger essentially caught the exception and allowed the program (client) to continue meaning that I didn't have to restart the game. Somewhere in your source code you need to surround the offending method with a try/catch block and catch the exception and continue. This would allow the game to continue but of course it would not fix the underlying problem of memory access violations.

Genesis, you are a smart guy. Perhaps you can make sense of the information I am providing. :)

Posted Image

Assembly
	770904BF  nop			  
	770904C0  nop			  
	770904C1  mov		 edi,edi
	770904C3  push		ebp  
	770904C4  mov		 ebp,esp
	770904C6  mov		 eax,dword ptr fs:[00000018h]
	770904CC  mov		 eax,dword ptr [eax+30h]
	770904CF  cmp		 byte ptr [eax+2],0
	770904D3  je			 770904EC
	770904D5  mov		 eax,dword ptr [ebp+8]
	770904D8  mov		 byte ptr ds:[770C8225h],1
	770904DF  mov		 dword ptr ds:[770C8220h],eax
>  770904E4  int	   	 3	
	770904E5  mov		 byte ptr ds:[770C8225h],0
	770904EC  pop		 ebp  
	770904ED  ret		   4	
	770904F0  nop			  
	770904F1  nop			  
	770904F2  nop			  
	770904F3  nop			  
	770904F4  nop			  
	770904F5  mov		 edi,edi
	770904F7  push		ebp  
	770904F8  mov		 ebp,esp
	770904FA  sub		  esp,1Ch
	770904FD  push		esi

Call Stack
>	ntdll.dll!770904e4()	
	 [Frames below may be incorrect and/or missing, no symbols loaded for ntdll.dll]	
	 ntdll.dll!77052a2a()	
	 ntdll.dll!77021cd7()	
	 ntdll.dll!770072f3()	
	 AcXtrnal.dll!69a28a4c()	
	 AcXtrnal.dll!69a29fb3()	
	 kernel32.dll!763214dd()	
	 TRose.exe!005cae2b()	
	 TRose.exe!00584fd0()	
	 TRose.exe!00451f53()	
	 TRose.exe!00452c67()	
	 TRose.exe!0045e49f()	
	 TRose.exe!007126bb()	
	 TRose.exe!00447a68()	
	 TRose.exe!00447e8c()	
	 AcXtrnal.dll!69a29480()	
	 atiumdag.dll!6b21dfdb()	
	 atiumdva.dll!6af14111()	

Output
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\TRose.exe'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\ntdll.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\kernel32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\KernelBase.dll'
'TRose.exe': Loaded 'D:\Program Files\AVAST Software\Avast\snxhk.dll'
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\TriggerVFS.dll'
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\TriggerInfo.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\d3d9.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\msvcrt.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\sechost.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\rpcrt4.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\sspicli.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\cryptbase.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\user32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\gdi32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\lpk.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\usp10.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\advapi32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\version.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\d3d8thk.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\dwmapi.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\wininet.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\shlwapi.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\normaliz.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\iertutil.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\urlmon.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\ole32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\oleaut32.dll'
'TRose.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcp90.dll'
'TRose.exe': Loaded 'C:\Windows\winsxs\x86_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_50934f2ebcb7eb57\msvcr90.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\shell32.dll'
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\TGameCtrl_r.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\winmm.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\imm32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\msctf.dll'
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\znzin.dll'
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\dbghelp.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\dsound.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\powrprof.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\setupapi.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\cfgmgr32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\devobj.dll'
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\IJL15.dll', Binary was not built with debug information.
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\BugGUARD.dll', Binary was not built with debug information.
'TRose.exe': Loaded 'D:\Program Files (x86)\Gravity\Rose Online\zlib1.dll', Binary was not built with debug information.
'TRose.exe': Loaded 'C:\Windows\SysWOW64\ws2_32.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\nsi.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\apphelp.dll'
'TRose.exe': Loaded 'C:\Windows\AppPatch\AcXtrnal.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\uxtheme.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\atiumdag.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\atiumdva.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\clbcatq.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\MMDevAPI.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\propsys.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\AudioSes.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\avrt.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\msxml3.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\mswsock.dll'
'TRose.exe': Loaded 'C:\Windows\SysWOW64\WSHTCPIP.DLL'
The thread 'Win32 Thread' (0x14b8) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0xe74) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x13a8) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x13e0) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x155c) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1524) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1528) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x41c) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1488) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x434) has exited with code 0 (0x0).
The thread 'Win32 Thread' (0x1690) has exited with code 0 (0x0).
HEAP[TRose.exe]: Invalid address specified to RtlValidateHeap( 03280000, 1676F208 )
Windows has triggered a breakpoint in TRose.exe.

This may be due to a corruption of the heap, which indicates a bug in TRose.exe or any of the DLLs it has loaded.

This may also be due to the user pressing F12 while TRose.exe has focus.

The output window may have more diagnostic information.

Posted Image

Edited by TwiliteGarden, 16 June 2012 - 11:13 PM.

  • 0

#2 TwiliteGarden

TwiliteGarden

    Too Legit To Quit

  • Members
  • 1308 posts
  • LocationNew York City
  • Playing:ROSE Online
  • Server:Leonis

Posted 16 June 2012 - 11:07 PM

Another thing that might be helpful is the TRose.RPT file. Each time the TRose.exe crash occurs this file is updated with debugging information.

Here is my TRose.RPT file after 5 crashes. Please note the C0000005 ACCESS_VIOLATION. This occurs when code attempts to read memory that it hasn't allocated. The dll (ntdll.dll) is doing something bad when it loads or during the construction of an object.


//=====================================================
Exception code: C0000005 ACCESS_VIOLATION
Fault address:  76FF331F 01:0002331F C:\Windows\SysWOW64\ntdll.dll

Registers:
EAX:2D857950
EBX:2D850C80
ECX:6D657400
EDX:626D754E
ESI:2D857948
EDI:02900000
CS:EIP:0023:76FF331F
SS:ESP:002B:0018E530  EBP:0018E558
DS:002B  ES:002B  FS:0053  GS:002B
Flags:00010246

Call stack:
Address   Frame	 Function			SourceFile
76FF331F  0018E558  RtlImageNtHeader+19B
76FF35A7  0018E650  RtlImageNtHeader+423
76FF3492  0018E670  RtlImageNtHeader+30E
763214DD  0018E684  HeapFree+14
005CAE2B  0018E6C4  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe
00584FD0  FFFFFFFF  0001:00183FD0 D:\Program Files (x86)\Gravity\Rose Online\TRose.exe
========================
Local Variables And Parameters

Call stack:
Address   Frame	 Function			SourceFile
76FF331F  0018E558  RtlImageNtHeader+19B

76FF35A7  0018E650  RtlImageNtHeader+423

76FF3492  0018E670  RtlImageNtHeader+30E

763214DD  0018E684  HeapFree+14

005CAE2B  0018E6C4  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe

00584FD0  FFFFFFFF  0001:00183FD0 D:\Program Files (x86)\Gravity\Rose Online\TRose.exe

========================

//=====================================================
Exception code: C0000005 ACCESS_VIOLATION
Fault address:  770180D8 01:000480D8 C:\Windows\SysWOW64\ntdll.dll

Registers:
EAX:12FA2438
EBX:02D00000
ECX:45917800
EDX:C4E8C000
ESI:12FA2430
EDI:12F9F188
CS:EIP:0023:770180D8
SS:ESP:002B:0018F72C  EBP:0018F750
DS:002B  ES:002B  FS:0053  GS:002B
Flags:00010246

Call stack:
Address   Frame	 Function			SourceFile
770180D8  0018F750  RtlCleanUpTEBLangLists+9A
76FF3C4A  0018F83C  RtlImageNtHeader+AC6
76FF3CEE  0018F8C0  RtlImageNtHeader+B6A
7700266A  0018F9D8  RtlReAllocateHeap+179
7700256F  0018FA4C  RtlReAllocateHeap+7E
005E7CD6  0018FA94  0001:001E6CD6 D:\Program Files (x86)\Gravity\Rose Online\TRose.exe
========================
Local Variables And Parameters

Call stack:
Address   Frame	 Function			SourceFile
770180D8  0018F750  RtlCleanUpTEBLangLists+9A

76FF3C4A  0018F83C  RtlImageNtHeader+AC6

76FF3CEE  0018F8C0  RtlImageNtHeader+B6A

7700266A  0018F9D8  RtlReAllocateHeap+179

7700256F  0018FA4C  RtlReAllocateHeap+7E

005E7CD6  0018FA94  0001:001E6CD6 D:\Program Files (x86)\Gravity\Rose Online\TRose.exe

========================

//=====================================================
Exception code: C0000005 ACCESS_VIOLATION
Fault address:  76FF331F 01:0002331F C:\Windows\SysWOW64\ntdll.dll

Registers:
EAX:2AF3CE68
EBX:2AF383B8
ECX:3378F078
EDX:8C000000
ESI:2AF3CE60
EDI:02E30000
CS:EIP:0023:76FF331F
SS:ESP:002B:0018E530  EBP:0018E558
DS:002B  ES:002B  FS:0053  GS:002B
Flags:00210246

Call stack:
Address   Frame	 Function			SourceFile
76FF331F  0018E558  RtlImageNtHeader+19B
76FF35A7  0018E650  RtlImageNtHeader+423
76FF3492  0018E670  RtlImageNtHeader+30E
763214DD  0018E684  HeapFree+14
005CAE2B  0018E6C4  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe
00584FD0  FFFFFFFF  0001:00183FD0 D:\Program Files (x86)\Gravity\Rose Online\TRose.exe
========================
Local Variables And Parameters

Call stack:
Address   Frame	 Function			SourceFile
76FF331F  0018E558  RtlImageNtHeader+19B

76FF35A7  0018E650  RtlImageNtHeader+423

76FF3492  0018E670  RtlImageNtHeader+30E

763214DD  0018E684  HeapFree+14

005CAE2B  0018E6C4  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe

00584FD0  FFFFFFFF  0001:00183FD0 D:\Program Files (x86)\Gravity\Rose Online\TRose.exe

========================

//=====================================================
Exception code: C0000005 ACCESS_VIOLATION
Fault address:  76FEE3BE 01:0001E3BE C:\Windows\SysWOW64\ntdll.dll

Registers:
EAX:00000001
EBX:13075230
ECX:03090000
EDX:13075230
ESI:6D533592
EDI:13075228
CS:EIP:0023:76FEE3BE
SS:ESP:002B:0018F840  EBP:0018F874
DS:002B  ES:002B  FS:0053  GS:002B
Flags:00210202

Call stack:
Address   Frame	 Function			SourceFile
76FEE3BE  0018F874  RtlInitUnicodeString+196
76FEE023  0018F88C  RtlFreeHeap+7E
763214DD  0018F8A0  HeapFree+14
005CAE2B  0018F8E0  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe
========================
Local Variables And Parameters

Call stack:
Address   Frame	 Function			SourceFile
76FEE3BE  0018F874  RtlInitUnicodeString+196

76FEE023  0018F88C  RtlFreeHeap+7E

763214DD  0018F8A0  HeapFree+14

005CAE2B  0018F8E0  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe

========================

//=====================================================
Exception code: C0000005 ACCESS_VIOLATION
Fault address:  76FEE3BE 01:0001E3BE C:\Windows\SysWOW64\ntdll.dll

Registers:
EAX:00000001
EBX:13075230
ECX:03090000
EDX:13075230
ESI:6D533592
EDI:13075228
CS:EIP:0023:76FEE3BE
SS:ESP:002B:0018F840  EBP:0018F874
DS:002B  ES:002B  FS:0053  GS:002B
Flags:00210202

Call stack:
Address   Frame	 Function			SourceFile
76FEE3BE  0018F874  RtlInitUnicodeString+196
76FEE023  0018F88C  RtlFreeHeap+7E
763214DD  0018F8A0  HeapFree+14
005CAE2B  0018F8E0  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe
========================
Local Variables And Parameters

Call stack:
Address   Frame	 Function			SourceFile
76FEE3BE  0018F874  RtlInitUnicodeString+196

76FEE023  0018F88C  RtlFreeHeap+7E

763214DD  0018F8A0  HeapFree+14

005CAE2B  0018F8E0  0001:001C9E2B D:\Program Files (x86)\Gravity\Rose Online\TRose.exe

========================

Edited by TwiliteGarden, 16 June 2012 - 11:09 PM.

  • 0

#3 Genesis

Genesis

    ROSE Developer

  • Community Managers
  • 2066 posts
  • Playing:ROSE Online
  • Server:Arua

Posted 17 June 2012 - 12:31 AM

A call stack doesn't help very much without the symbol data, but seeing as how you have VS, you could help out by creating some dump files that we can analyze. The access violation suggests a null or bad pointer being read at some point, but not nessecarily at the location in the stack trace (hence we have to trace back to the point within TRose to find whatever is being referenced incorrectly).

If you're able to next time it happens, do the following once you attach TRose to the debugger and hit 'Break' at the message box:

Debug -> Save Dump As...
Save one as a 'Minidump' (small, simple stack trace only) and save another as 'Minidump with Heap' (much larger, contains stack trace and memory of the whole application state)

Zip up the two dump files, TRose.exe, TGameCtrl_r.dll and znzin.dll, then upload them somewhere that I can grab them from. With the executables and "proper" dump files, I can use the symbol tables we have here to make the stack trace readable and find out where the error occurs.

You may want to wait until after the next maintenance to create dumps as one of the executables are bound to change and the symbol table data will no longer be valid (I have to get the symbol data from the programmer who compiles our release builds so I can't guarantee that he maintains copies of the previous versions).
  • 0

#4 TwiliteGarden

TwiliteGarden

    Too Legit To Quit

  • Members
  • 1308 posts
  • LocationNew York City
  • Playing:ROSE Online
  • Server:Leonis

Posted 17 June 2012 - 12:41 AM

A call stack doesn't help very much without the symbol data, but seeing as how you have VS, you could help out by creating some dump files that we can analyze. The access violation suggests a null or bad pointer being read at some point, but not nessecarily at the location in the stack trace (hence we have to trace back to the point within TRose to find whatever is being referenced incorrectly).

If you're able to next time it happens, do the following once you attach TRose to the debugger and hit 'Break' at the message box:

Debug -> Save Dump As...
Save one as a 'Minidump' (small, simple stack trace only) and save another as 'Minidump with Heap' (much larger, contains stack trace and memory of the whole application state)

Zip up the two dump files, TRose.exe, TGameCtrl_r.dll and znzin.dll, then upload them somewhere that I can grab them from. With the executables and "proper" dump files, I can use the symbol tables we have here to make the stack trace readable and find out where the error occurs.

You may want to wait until after the next maintenance to create dumps as one of the executables are bound to change and the symbol table data will no longer be valid (I have to get the symbol data from the programmer who compiles our release builds so I can't guarantee that he maintains copies of the previous versions).


I'm on it! :)

Edited by TwiliteGarden, 17 June 2012 - 12:44 AM.

  • 0

#5 TwiliteGarden

TwiliteGarden

    Too Legit To Quit

  • Members
  • 1308 posts
  • LocationNew York City
  • Playing:ROSE Online
  • Server:Leonis

Posted 17 June 2012 - 01:11 AM

Okay. I attached to the TRose.exe process and caught the exception and suspended the application by breaking the debugger. I then saved the dump files and continued with the debugging. Interestingly I got another exception immediately after restarting the debugger and so I repeated the dump saves. Hence I am going to provide you with two ZIP files, one for each of the two exceptions (mini dumps).

I have uploaded the ZIP files to my Box.com account. They are pretty big so be prepared to wait a while to download.

Here are the links to both dump zip files:

https://www.box.com/...2730eaabee4ec70 (Crash 1)

https://www.box.com/...1dd4e6c00344b4f (Crash 2)

Edited by TwiliteGarden, 17 June 2012 - 02:04 PM.

  • 0

#6 TwiliteGarden

TwiliteGarden

    Too Legit To Quit

  • Members
  • 1308 posts
  • LocationNew York City
  • Playing:ROSE Online
  • Server:Leonis

Posted 17 June 2012 - 01:39 PM

You may want to wait until after the next maintenance to create dumps as one of the executables are bound to change and the symbol table data will no longer be valid (I have to get the symbol data from the programmer who compiles our release builds so I can't guarantee that he maintains copies of the previous versions).


Wow. No version control??? No branching? At my work we make a branch for every release that way the release code is isolated from the trunk (which is always changing). Any bugs found in a release are then fixed on the branch and merged to the trunk if necessary.

Posted Image

Get Subversion it's free, has many nice features including a graphical interface, and is well supported in the community.

Edited by TwiliteGarden, 17 June 2012 - 01:58 PM.

  • 0

#7 Genesis

Genesis

    ROSE Developer

  • Community Managers
  • 2066 posts
  • Playing:ROSE Online
  • Server:Arua

Posted 18 June 2012 - 05:07 PM

Wow. No version control??? No branching? At my work we make a branch for every release that way the release code is isolated from the trunk (which is always changing). Any bugs found in a release are then fixed on the branch and merged to the trunk if necessary.

We use version control, but not on temporary binary files such as release build symbol tables, as those files change on every compile and are not normally used internally - we develop on debug versions of the client which have even more debugging data embedded than the release builds.
  • 0

#8 TwiliteGarden

TwiliteGarden

    Too Legit To Quit

  • Members
  • 1308 posts
  • LocationNew York City
  • Playing:ROSE Online
  • Server:Leonis

Posted 18 June 2012 - 07:05 PM

We use version control, but not on temporary binary files such as release build symbol tables, as those files change on every compile and are not normally used internally - we develop on debug versions of the client which have even more debugging data embedded than the release builds.


Nice!! Let me know if you need any more debug info or any way I can help. :)
  • 0




0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users