From: Rafaël Carré Date: Tue, 15 Nov 2011 01:22:21 +0000 (-0500) Subject: winvlc: include address space layout in crash reports X-Git-Tag: 1.3.0-git~312 X-Git-Url: https://git.sesse.net/?a=commitdiff_plain;h=98f09b5dd844b2126723d6cf0b6f0918444fad1f;p=vlc winvlc: include address space layout in crash reports Will help to 'undo' ASLR and make those reports useful --- diff --git a/bin/Makefile.am b/bin/Makefile.am index 86d7f65596..832d4825c1 100644 --- a/bin/Makefile.am +++ b/bin/Makefile.am @@ -45,7 +45,7 @@ vlc_static_LDADD = $(vlc_LDADD) vlc_static_LDFLAGS = $(vlc_LDFLAGS) if HAVE_WIN32 -vlc_LDADD += -lwininet vlc_win32_rc.$(OBJEXT) +vlc_LDADD += -lpsapi -lwininet vlc_win32_rc.$(OBJEXT) vlc_DEPENDENCIES = vlc_win32_rc.$(OBJEXT) else vlc_LDADD += $(LIBDL) diff --git a/bin/winvlc.c b/bin/winvlc.c index b3ef7983db..1f60123dec 100644 --- a/bin/winvlc.c +++ b/bin/winvlc.c @@ -38,6 +38,8 @@ # endif # include # include +# define PSAPI_VERSION 1 +# include # define HeapEnableTerminationOnCorruption (HEAP_INFORMATION_CLASS)1 static void check_crashdump(void); LONG WINAPI vlc_exception_filter(struct _EXCEPTION_POINTERS *lpExceptionInfo); @@ -343,6 +345,23 @@ LONG WINAPI vlc_exception_filter(struct _EXCEPTION_POINTERS *lpExceptionInfo) pContext->Ebp,pContext->Eip,pContext->Esp ); #endif + HANDLE hpid = OpenProcess(PROCESS_QUERY_INFORMATION | PROCESS_VM_READ, + FALSE, GetCurrentProcessId()); + if (hpid) { + HMODULE mods[1024]; + DWORD size; + if (EnumProcessModules(hpid, mods, sizeof(mods), &size)) { + fwprintf( fd, L"\n\n[modules]\n" ); + for (unsigned int i = 0; i < size / sizeof(HMODULE); i++) { + wchar_t module[ 256 ]; + GetModuleFileName(mods[i], module, 256); + fwprintf( fd, L"%p|%s\n", mods[i], module); + } + } + CloseHandle(hpid); + } + + fwprintf( fd, L"\n[stacktrace]\n#EIP|base|module\n" ); #ifdef WIN64