From 44d511669ba85a0311dc8d0901f22a1f38c0790b Mon Sep 17 00:00:00 2001 From: Aura Linden Date: Mon, 12 Nov 2012 16:25:09 -0800 Subject: Pulled cocoa crash reporter changes from old branch. --- indra/mac_crash_logger/llcrashloggermac.cpp | 167 +--------------------------- 1 file changed, 3 insertions(+), 164 deletions(-) (limited to 'indra/mac_crash_logger/llcrashloggermac.cpp') diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp index 8f1c1a2dd0..5d22b60136 100644 --- a/indra/mac_crash_logger/llcrashloggermac.cpp +++ b/indra/mac_crash_logger/llcrashloggermac.cpp @@ -27,7 +27,6 @@ #include "llcrashloggermac.h" -#include #include #include "indra_constants.h" // CRASH_BEHAVIOR_ASK, CRASH_SETTING_NAME @@ -38,102 +37,14 @@ #include "lldir.h" #include "llsdserialize.h" -#define MAX_LOADSTRING 100 -const char* const SETTINGS_FILE_HEADER = "version"; -const S32 SETTINGS_FILE_VERSION = 101; - // Windows Message Handlers -BOOL gFirstDialog = TRUE; // Are we currently handling the Send/Don't Send dialog? +BOOL gFirstDialog = TRUE; LLFILE *gDebugFile = NULL; -WindowRef gWindow = NULL; -EventHandlerRef gEventHandler = NULL; std::string gUserNotes = ""; bool gSendReport = false; bool gRememberChoice = false; -IBNibRef nib = NULL; - -OSStatus dialogHandler(EventHandlerCallRef handler, EventRef event, void *userdata) -{ - OSStatus result = eventNotHandledErr; - OSStatus err; - UInt32 evtClass = GetEventClass(event); - UInt32 evtKind = GetEventKind(event); - if((evtClass == kEventClassCommand) && (evtKind == kEventCommandProcess)) - { - HICommand cmd; - err = GetEventParameter(event, kEventParamDirectObject, typeHICommand, NULL, sizeof(cmd), NULL, &cmd); - - - - if(err == noErr) - { - //Get the value of the checkbox - ControlID id; - ControlRef checkBox = NULL; - id.signature = 'remb'; - id.id = 0; - err = GetControlByID(gWindow, &id, &checkBox); - - if(err == noErr) - { - if(GetControl32BitValue(checkBox) == kControlCheckBoxCheckedValue) - { - gRememberChoice = true; - } - else - { - gRememberChoice = false; - } - } - switch(cmd.commandID) - { - case kHICommandOK: - { - char buffer[65535]; /* Flawfinder: ignore */ - Size size = sizeof(buffer) - 1; - ControlRef textField = NULL; - - id.signature = 'text'; - id.id = 0; - - err = GetControlByID(gWindow, &id, &textField); - if(err == noErr) - { - // Get the user response text - err = GetControlData(textField, kControlNoPart, kControlEditTextTextTag, size, (Ptr)buffer, &size); - } - if(err == noErr) - { - // Make sure the string is terminated. - buffer[size] = 0; - gUserNotes = buffer; - - llinfos << buffer << llendl; - } - - // Send the report. - - QuitAppModalLoopForWindow(gWindow); - gSendReport = true; - result = noErr; - } - break; - - case kHICommandCancel: - QuitAppModalLoopForWindow(gWindow); - result = noErr; - break; - default: - result = eventNotHandledErr; - } - } - } - - return(result); -} - LLCrashLoggerMac::LLCrashLoggerMac(void) { @@ -146,73 +57,16 @@ LLCrashLoggerMac::~LLCrashLoggerMac(void) bool LLCrashLoggerMac::init(void) { bool ok = LLCrashLogger::init(); - if(!ok) return false; - if(mCrashBehavior != CRASH_BEHAVIOR_ASK) return true; - - // Real UI... - OSStatus err; - - err = CreateNibReference(CFSTR("CrashReporter"), &nib); - - if(err == noErr) - { - err = CreateWindowFromNib(nib, CFSTR("CrashReporter"), &gWindow); - } - - if(err == noErr) - { - // Set focus to the edit text area - ControlRef textField = NULL; - ControlID id; - - id.signature = 'text'; - id.id = 0; - - // Don't set err if any of this fails, since it's non-critical. - if(GetControlByID(gWindow, &id, &textField) == noErr) - { - SetKeyboardFocus(gWindow, textField, kControlFocusNextPart); - } - } - - if(err == noErr) - { - ShowWindow(gWindow); - } - - if(err == noErr) - { - // Set up an event handler for the window. - EventTypeSpec handlerEvents[] = - { - { kEventClassCommand, kEventCommandProcess } - }; - - InstallWindowEventHandler( - gWindow, - NewEventHandlerUPP(dialogHandler), - GetEventTypeCount (handlerEvents), - handlerEvents, - 0, - &gEventHandler); - } - return true; + return ok; } void LLCrashLoggerMac::gatherPlatformSpecificFiles() { - updateApplication("Gathering hardware information..."); } bool LLCrashLoggerMac::mainLoop() { - OSStatus err = noErr; - - if(err == noErr && mCrashBehavior == CRASH_BEHAVIOR_ASK) - { - RunAppModalLoopForWindow(gWindow); - } - else if (mCrashBehavior == CRASH_BEHAVIOR_ALWAYS_SEND) + if (mCrashBehavior == CRASH_BEHAVIOR_ALWAYS_SEND) { gSendReport = true; } @@ -229,24 +83,9 @@ bool LLCrashLoggerMac::mainLoop() sendCrashLogs(); } - if(gWindow != NULL) - { - DisposeWindow(gWindow); - } - - if(nib != NULL) - { - DisposeNibReference(nib); - } - return true; } -void LLCrashLoggerMac::updateApplication(const std::string& message) -{ - LLCrashLogger::updateApplication(message); -} - bool LLCrashLoggerMac::cleanup() { commonCleanup(); -- cgit v1.3 From 53ea30af06f94b5462fada7c4bfea3122b50ff95 Mon Sep 17 00:00:00 2001 From: Aura Linden Date: Tue, 11 Dec 2012 06:56:14 -0800 Subject: Interim debug checkin to test from teamcity --- indra/llcrashlogger/llcrashlogger.cpp | 13 ++++++++++++- indra/llvfs/llvfs_objc.mm | 9 +++++---- indra/mac_crash_logger/llcrashloggermac.cpp | 11 ++++++++++- indra/mac_crash_logger/mac_crash_logger.cpp | 17 +++++++++++++++++ 4 files changed, 44 insertions(+), 6 deletions(-) (limited to 'indra/mac_crash_logger/llcrashloggermac.cpp') diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 7ecb34eaf6..008b0e04b5 100644 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -339,6 +339,10 @@ bool LLCrashLogger::runCrashLogPost(std::string host, LLSD data, std::string msg bool LLCrashLogger::sendCrashLogs() { + std::ofstream wlog; + wlog.open("/Users/samantha/crashlogging2.txt"); + wlog << "SPATTERS sendingCrashLogs.!\n"; + gatherFiles(); LLSD post_data; @@ -350,6 +354,7 @@ bool LLCrashLogger::sendCrashLogs() "SecondLifeCrashReport"); std::string report_file = dump_path + ".log"; + wlog << "SPATTERS looking in dump_path " << dump_path << " report_file " << report_file << "\n"; std::ofstream out_file(report_file.c_str()); LLSDSerialize::toPrettyXML(post_data, out_file); out_file.close(); @@ -359,14 +364,18 @@ bool LLCrashLogger::sendCrashLogs() //*TODO: Translate if(mCrashHost != "") { + wlog << "SPATTERS sending to MAIN host " << mCrashHost << "\n"; sent = runCrashLogPost(mCrashHost, post_data, std::string("Sending to server"), 3, 5); } if(!sent) { + wlog << "SPATTERS sending to MAIN host " << mAltCrashHost << "\n"; sent = runCrashLogPost(mAltCrashHost, post_data, std::string("Sending to alternate server"), 3, 5); } + wlog.close(); + mSentCrashLogs = sent; return true; @@ -384,7 +393,7 @@ bool LLCrashLogger::init() LLCurl::initClass(false); // We assume that all the logs we're looking for reside on the current drive - gDirUtilp->initAppDirs("com.secondlife.indra.viewer"); + gDirUtilp->initAppDirs("SecondLife"); LLError::initForApplication(gDirUtilp->getExpandedFilename(LL_PATH_APP_SETTINGS, "")); @@ -394,6 +403,7 @@ bool LLCrashLogger::init() // Rename current log file to ".old" std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "crashreport.log.old"); std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "crashreport.log"); + llinfos << "SPATTERS moving " << log_file << " to " << old_log_file <prime(gAPRPoolp); LLHTTPClient::setPump(*gServicePump); diff --git a/indra/llvfs/llvfs_objc.mm b/indra/llvfs/llvfs_objc.mm index 4d7cd3a93e..61cfad99d6 100644 --- a/indra/llvfs/llvfs_objc.mm +++ b/indra/llvfs/llvfs_objc.mm @@ -51,10 +51,10 @@ std::string* findSystemDirectory(NSSearchPathDirectory searchPathDirectory, YES); if ([paths count]) { - NSString *bundleName = - [[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; - path = [[paths objectAtIndex:0] stringByAppendingPathComponent:bundleName]; - + //NSString *bundleName = @"SecondLife"; + //[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; + //path = [[paths objectAtIndex:0] stringByAppendingPathComponent:bundleName]; + path = [paths objectAtIndex:0]; //SPATTERS HACK: Always attempt to create directory, ignore errors. NSError *error = nil; @@ -88,6 +88,7 @@ std::string* getSystemApplicationSupportFolder() { return findSystemDirectory (NSApplicationSupportDirectory, NSUserDomainMask); + } #endif // LL_DARWIN diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp index 5d22b60136..64064d9cee 100644 --- a/indra/mac_crash_logger/llcrashloggermac.cpp +++ b/indra/mac_crash_logger/llcrashloggermac.cpp @@ -66,22 +66,31 @@ void LLCrashLoggerMac::gatherPlatformSpecificFiles() bool LLCrashLoggerMac::mainLoop() { + std::ofstream wlog; + wlog.open("/Users/samantha/crashlogging1.txt"); + wlog << "SPATTERS mainloop.!\n"; + if (mCrashBehavior == CRASH_BEHAVIOR_ALWAYS_SEND) { + wlog << "sending\n"; gSendReport = true; } if(gRememberChoice) { + wlog << "momento\n"; if(gSendReport) saveCrashBehaviorSetting(CRASH_BEHAVIOR_ALWAYS_SEND); else saveCrashBehaviorSetting(CRASH_BEHAVIOR_NEVER_SEND); } if(gSendReport) { + wlog << "Send report!"; setUserText(gUserNotes); sendCrashLogs(); - } + } + + wlog.close(); return true; } diff --git a/indra/mac_crash_logger/mac_crash_logger.cpp b/indra/mac_crash_logger/mac_crash_logger.cpp index 5e6806c08e..0d4f2855c7 100644 --- a/indra/mac_crash_logger/mac_crash_logger.cpp +++ b/indra/mac_crash_logger/mac_crash_logger.cpp @@ -34,22 +34,39 @@ int main(int argc, char **argv) { + std::ofstream wlog; + wlog.open("/Users/samantha/crashlogging.txt"); + wlog << "SPATTERS starting crash reporter.!\n"; LLCrashLoggerMac app; + wlog << "SPATTERS created app instance.!\n"; + for (int x=0;x Date: Tue, 11 Dec 2012 07:40:26 -0800 Subject: Crash reporter fixed, debugging removed. --- indra/llcrashlogger/llcrashlogger.cpp | 13 +------------ indra/llvfs/llvfs_objc.mm | 3 --- indra/mac_crash_logger/llcrashloggermac.cpp | 11 +---------- indra/mac_crash_logger/mac_crash_logger.cpp | 17 ----------------- 4 files changed, 2 insertions(+), 42 deletions(-) (limited to 'indra/mac_crash_logger/llcrashloggermac.cpp') diff --git a/indra/llcrashlogger/llcrashlogger.cpp b/indra/llcrashlogger/llcrashlogger.cpp index 008b0e04b5..34e25a8a71 100644 --- a/indra/llcrashlogger/llcrashlogger.cpp +++ b/indra/llcrashlogger/llcrashlogger.cpp @@ -339,10 +339,6 @@ bool LLCrashLogger::runCrashLogPost(std::string host, LLSD data, std::string msg bool LLCrashLogger::sendCrashLogs() { - std::ofstream wlog; - wlog.open("/Users/samantha/crashlogging2.txt"); - wlog << "SPATTERS sendingCrashLogs.!\n"; - gatherFiles(); LLSD post_data; @@ -354,7 +350,6 @@ bool LLCrashLogger::sendCrashLogs() "SecondLifeCrashReport"); std::string report_file = dump_path + ".log"; - wlog << "SPATTERS looking in dump_path " << dump_path << " report_file " << report_file << "\n"; std::ofstream out_file(report_file.c_str()); LLSDSerialize::toPrettyXML(post_data, out_file); out_file.close(); @@ -364,18 +359,14 @@ bool LLCrashLogger::sendCrashLogs() //*TODO: Translate if(mCrashHost != "") { - wlog << "SPATTERS sending to MAIN host " << mCrashHost << "\n"; sent = runCrashLogPost(mCrashHost, post_data, std::string("Sending to server"), 3, 5); } if(!sent) { - wlog << "SPATTERS sending to MAIN host " << mAltCrashHost << "\n"; sent = runCrashLogPost(mAltCrashHost, post_data, std::string("Sending to alternate server"), 3, 5); } - - wlog.close(); - + mSentCrashLogs = sent; return true; @@ -403,7 +394,6 @@ bool LLCrashLogger::init() // Rename current log file to ".old" std::string old_log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "crashreport.log.old"); std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS, "crashreport.log"); - llinfos << "SPATTERS moving " << log_file << " to " << old_log_file <prime(gAPRPoolp); LLHTTPClient::setPump(*gServicePump); diff --git a/indra/llvfs/llvfs_objc.mm b/indra/llvfs/llvfs_objc.mm index 61cfad99d6..16cfefda26 100644 --- a/indra/llvfs/llvfs_objc.mm +++ b/indra/llvfs/llvfs_objc.mm @@ -51,9 +51,6 @@ std::string* findSystemDirectory(NSSearchPathDirectory searchPathDirectory, YES); if ([paths count]) { - //NSString *bundleName = @"SecondLife"; - //[[[NSBundle mainBundle] infoDictionary] objectForKey:@"CFBundleIdentifier"]; - //path = [[paths objectAtIndex:0] stringByAppendingPathComponent:bundleName]; path = [paths objectAtIndex:0]; //SPATTERS HACK: Always attempt to create directory, ignore errors. NSError *error = nil; diff --git a/indra/mac_crash_logger/llcrashloggermac.cpp b/indra/mac_crash_logger/llcrashloggermac.cpp index 64064d9cee..c5f660ca6e 100644 --- a/indra/mac_crash_logger/llcrashloggermac.cpp +++ b/indra/mac_crash_logger/llcrashloggermac.cpp @@ -66,32 +66,23 @@ void LLCrashLoggerMac::gatherPlatformSpecificFiles() bool LLCrashLoggerMac::mainLoop() { - std::ofstream wlog; - wlog.open("/Users/samantha/crashlogging1.txt"); - wlog << "SPATTERS mainloop.!\n"; - if (mCrashBehavior == CRASH_BEHAVIOR_ALWAYS_SEND) { - wlog << "sending\n"; gSendReport = true; } if(gRememberChoice) { - wlog << "momento\n"; if(gSendReport) saveCrashBehaviorSetting(CRASH_BEHAVIOR_ALWAYS_SEND); else saveCrashBehaviorSetting(CRASH_BEHAVIOR_NEVER_SEND); } if(gSendReport) { - wlog << "Send report!"; setUserText(gUserNotes); sendCrashLogs(); } - - wlog.close(); - + return true; } diff --git a/indra/mac_crash_logger/mac_crash_logger.cpp b/indra/mac_crash_logger/mac_crash_logger.cpp index 0d4f2855c7..6add74556f 100644 --- a/indra/mac_crash_logger/mac_crash_logger.cpp +++ b/indra/mac_crash_logger/mac_crash_logger.cpp @@ -29,44 +29,27 @@ #include "indra_constants.h" #include -#include - int main(int argc, char **argv) { - std::ofstream wlog; - wlog.open("/Users/samantha/crashlogging.txt"); - wlog << "SPATTERS starting crash reporter.!\n"; LLCrashLoggerMac app; - wlog << "SPATTERS created app instance.!\n"; - for (int x=0;x