*** empty log message ***

svn path=/trunk/boinc/; revision=10275
This commit is contained in:
Rom Walton 2006-06-08 19:40:14 +00:00
parent dc91c30c9d
commit b482e39699
3 changed files with 46 additions and 17 deletions

View File

@ -5599,3 +5599,13 @@ Charlie 8 June 2006
SecurityUtility.cpp SecurityUtility.cpp
SetupSecurity.h SetupSecurity.h
SetupSecurity.cpp SetupSecurity.cpp
Rom 8 June 2006
- Bug Fix: When the debugger fails to initialize do not attempt to use
the other debugger functions.
- Bug Fix: Display which functions are not found in dbghelp.dll when one
or more are missing.
lib/
diagnostics_win.C
stackwalker_win.cpp

View File

@ -1795,6 +1795,7 @@ UINT diagnostics_determine_exit_code() {
UINT WINAPI diagnostics_unhandled_exception_monitor(LPVOID lpParameter) { UINT WINAPI diagnostics_unhandled_exception_monitor(LPVOID lpParameter) {
DWORD dwEvent = NULL; DWORD dwEvent = NULL;
BOOL bContinue = TRUE; BOOL bContinue = TRUE;
BOOL bDebuggerInitialized = FALSE;
HANDLE hEvents[2]; HANDLE hEvents[2];
unsigned int i; unsigned int i;
CONTEXT c; CONTEXT c;
@ -1871,7 +1872,7 @@ UINT WINAPI diagnostics_unhandled_exception_monitor(LPVOID lpParameter) {
#ifndef __CYGWIN__ #ifndef __CYGWIN__
// Kickstart the debugger extensions // Kickstart the debugger extensions
DebuggerInitialize( bDebuggerInitialized = !DebuggerInitialize(
diagnostics_get_boinc_dir(), diagnostics_get_boinc_dir(),
diagnostics_get_symstore(), diagnostics_get_symstore(),
diagnostics_is_proxy_enabled(), diagnostics_is_proxy_enabled(),
@ -1879,7 +1880,7 @@ UINT WINAPI diagnostics_unhandled_exception_monitor(LPVOID lpParameter) {
); );
// Dump any useful information // Dump any useful information
DebuggerDisplayDiagnostics(); if (bDebuggerInitialized) DebuggerDisplayDiagnostics();
#endif #endif
// Dump the process statistics // Dump the process statistics
diagnostics_dump_process_information(); diagnostics_dump_process_information();
@ -1900,6 +1901,7 @@ UINT WINAPI diagnostics_unhandled_exception_monitor(LPVOID lpParameter) {
if (diagnostics_is_flag_set(BOINC_DIAG_DUMPCALLSTACKENABLED)) { if (diagnostics_is_flag_set(BOINC_DIAG_DUMPCALLSTACKENABLED)) {
#ifndef __CYGWIN__ #ifndef __CYGWIN__
if (bDebuggerInitialized) {
if (pThreadEntry->crash_exception_record ) { if (pThreadEntry->crash_exception_record ) {
StackwalkFilter( StackwalkFilter(
pThreadEntry->crash_exception_record, pThreadEntry->crash_exception_record,
@ -1916,6 +1918,7 @@ UINT WINAPI diagnostics_unhandled_exception_monitor(LPVOID lpParameter) {
&c &c
); );
} }
}
#else #else
fprintf(stderr, "Warning: Callstack dumps are not supported on CYGWIN\n"); fprintf(stderr, "Warning: Callstack dumps are not supported on CYGWIN\n");
#endif #endif

View File

@ -482,7 +482,23 @@ int DebuggerInitialize( LPCSTR pszBOINCLocation, LPCSTR pszSymbolStore, BOOL bPr
pSI == NULL || pSRC == NULL || pSSO == NULL || pSW == NULL || pSI == NULL || pSRC == NULL || pSSO == NULL || pSW == NULL ||
pUDSN == NULL || pSLM == NULL ) pUDSN == NULL || pSLM == NULL )
{ {
_ftprintf( stderr, "GetProcAddress(): some required function not found.\n" ); if (!pIAV) fprintf( stderr, "GetProcAddress(): ImagehlpApiVersion missing.\n" );
if (!pSC) fprintf( stderr, "GetProcAddress(): SymCleanup missing.\n" );
if (!pSEM) fprintf( stderr, "GetProcAddress(): SymEnumerateModules64 missing.\n" );
if (!pSFTA) fprintf( stderr, "GetProcAddress(): SymFunctionTableAccess64 missing.\n" );
if (!pSGLFA) fprintf( stderr, "GetProcAddress(): SymGetLineFromAddr64 missing.\n" );
if (!pSGMB) fprintf( stderr, "GetProcAddress(): SymGetModuleBase64 missing.\n" );
if (!pSGMI) fprintf( stderr, "GetProcAddress(): SymGetModuleInfo64 missing.\n" );
if (!pSGO) fprintf( stderr, "GetProcAddress(): SymGetOptions missing.\n" );
if (!pSGSP) fprintf( stderr, "GetProcAddress(): SymGetSearchPath missing.\n" );
if (!pSFA) fprintf( stderr, "GetProcAddress(): SymFromAddr missing.\n" );
if (!pSI) fprintf( stderr, "GetProcAddress(): SymInitialize missing.\n" );
if (!pSRC) fprintf( stderr, "GetProcAddress(): SymRegisterCallback64 missing.\n" );
if (!pSSO) fprintf( stderr, "GetProcAddress(): SymSetOptions missing.\n" );
if (!pSW) fprintf( stderr, "GetProcAddress(): StackWalk64 missing.\n" );
if (!pUDSN) fprintf( stderr, "GetProcAddress(): UnDecorateSymbolName missing.\n" );
if (!pSLM) fprintf( stderr, "GetProcAddress(): SymLoadModuleEx missing.\n" );
FreeLibrary( g_hDbgHelpDll ); FreeLibrary( g_hDbgHelpDll );
g_bInitialized = FALSE; g_bInitialized = FALSE;
return 1; return 1;