mirror of
				https://github.com/vcmi/vcmi.git
				synced 2025-10-31 00:07:39 +02:00 
			
		
		
		
	full crash dump
This commit is contained in:
		
				
					committed by
					
						 Andrii Danylchenko
						Andrii Danylchenko
					
				
			
			
				
	
			
			
			
						parent
						
							2fc7cf02b0
						
					
				
				
					commit
					e220918230
				
			| @@ -66,6 +66,10 @@ | ||||
| 				"notifications" : { | ||||
| 					"type" : "boolean", | ||||
| 					"default" : false | ||||
| 				}, | ||||
| 				"extraDump" : { | ||||
| 					"type" : "boolean", | ||||
| 					"default" : false | ||||
| 				} | ||||
| 			} | ||||
| 		}, | ||||
|   | ||||
| @@ -9,6 +9,7 @@ | ||||
|  */ | ||||
| #include "StdInc.h" | ||||
| #include "CConsoleHandler.h" | ||||
| #include "CConfigHandler.h" | ||||
|  | ||||
| #include "CThreadHelper.h" | ||||
|  | ||||
| @@ -135,7 +136,27 @@ LONG WINAPI onUnhandledException(EXCEPTION_POINTERS* exception) | ||||
| 	strcat(mname, "_crashinfo.dmp"); | ||||
| 	HANDLE dfile = CreateFileA(mname, GENERIC_READ|GENERIC_WRITE, FILE_SHARE_WRITE|FILE_SHARE_READ, 0, CREATE_ALWAYS, 0, 0); | ||||
| 	logGlobal->error("Crash info will be put in %s", mname); | ||||
| 	MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), dfile, MiniDumpWithDataSegs, &meinfo, 0, 0); | ||||
| 	 | ||||
| 	// flush loggers | ||||
| 	std::string padding(1000, '@'); | ||||
|  | ||||
| 	logGlobal->error(padding); | ||||
| 	logAi->error(padding); | ||||
| 	logNetwork->error(padding); | ||||
|  | ||||
| 	auto dumpType = MiniDumpWithDataSegs; | ||||
| 	 | ||||
| 	if(settings["general"]["extraDump"].Bool()) | ||||
| 	{ | ||||
| 		dumpType = (MINIDUMP_TYPE)( | ||||
| 			MiniDumpWithFullMemory | ||||
| 			| MiniDumpWithFullMemoryInfo | ||||
| 			| MiniDumpWithHandleData | ||||
| 			| MiniDumpWithUnloadedModules | ||||
| 			| MiniDumpWithThreadInfo); | ||||
| 	} | ||||
|  | ||||
| 	MiniDumpWriteDump(GetCurrentProcess(), GetCurrentProcessId(), dfile, dumpType, &meinfo, 0, 0); | ||||
| 	MessageBoxA(0, "VCMI has crashed. We are sorry. File with information about encountered problem has been created.", "VCMI Crashhandler", MB_OK | MB_ICONERROR); | ||||
| 	return EXCEPTION_EXECUTE_HANDLER; | ||||
| } | ||||
|   | ||||
| @@ -334,6 +334,7 @@ void CVCMIServer::threadHandleClient(std::shared_ptr<CConnection> c) | ||||
| 		if(state != EServerState::LOBBY) | ||||
| 			gh->handleClientDisconnection(c); | ||||
| 	} | ||||
| 	/* | ||||
| 	catch(const std::exception & e) | ||||
| 	{ | ||||
|         (void)e; | ||||
| @@ -345,7 +346,7 @@ void CVCMIServer::threadHandleClient(std::shared_ptr<CConnection> c) | ||||
| 		state = EServerState::SHUTDOWN; | ||||
| 		handleException(); | ||||
| 		throw; | ||||
| 	} | ||||
| 	}*/ | ||||
|  | ||||
| 	boost::unique_lock<boost::recursive_mutex> queueLock(mx); | ||||
| //	if(state != ENDING_AND_STARTING_GAME) | ||||
|   | ||||
		Reference in New Issue
	
	Block a user