summaryrefslogtreecommitdiff
path: root/indra
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-03-17 00:19:38 +0200
committerAndrey Kleshchev <andreykproductengine@lindenlab.com>2021-09-08 22:38:46 +0300
commit6e200800eddc374419d6e0e42b9ef63813ddf70f (patch)
tree66202162c85d4e6985ca93e6efc6721ef918bbc8 /indra
parent9aa5be79d9b5be48d7819c983146b3082be4ab83 (diff)
SL-14541 removed breakpad, win_crash_logger
# Conflicts: # autobuild.xml # indra/CMakeLists.txt # indra/newview/CMakeLists.txt # indra/newview/llappviewerwin32.h # indra/win_crash_logger/llcrashloggerwindows.cpp Cherry picked from DRTVWR-520
Diffstat (limited to 'indra')
-rw-r--r--indra/CMakeLists.txt16
-rw-r--r--indra/cmake/CMakeLists.txt2
-rw-r--r--indra/cmake/Copy3rdPartyLibs.cmake1
-rw-r--r--indra/cmake/FindGoogleBreakpad.cmake40
-rw-r--r--indra/cmake/GoogleBreakpad.cmake22
-rw-r--r--indra/llcommon/CMakeLists.txt3
-rw-r--r--indra/llcommon/llapp.cpp173
-rw-r--r--indra/llcommon/llapp.h8
-rw-r--r--indra/llcorehttp/CMakeLists.txt1
-rw-r--r--indra/newview/CMakeLists.txt67
-rwxr-xr-xindra/newview/generate_breakpad_symbols.py166
-rw-r--r--indra/newview/llappviewer.cpp2
-rw-r--r--indra/newview/llappviewer.h1
-rw-r--r--indra/newview/llappviewermacosx.cpp22
-rw-r--r--indra/newview/llappviewermacosx.h1
-rw-r--r--indra/newview/llappviewerwin32.cpp54
-rw-r--r--indra/newview/llappviewerwin32.h1
-rwxr-xr-xindra/newview/viewer_manifest.py1
-rw-r--r--indra/win_crash_logger/CMakeLists.txt105
-rw-r--r--indra/win_crash_logger/StdAfx.cpp34
-rw-r--r--indra/win_crash_logger/StdAfx.h56
-rw-r--r--indra/win_crash_logger/ll_icon.icobin2238 -> 0 bytes
-rw-r--r--indra/win_crash_logger/llcrashloggerwindows.cpp536
-rw-r--r--indra/win_crash_logger/llcrashloggerwindows.h86
-rw-r--r--indra/win_crash_logger/resource.h63
-rw-r--r--indra/win_crash_logger/win_crash_logger.cpp70
-rw-r--r--indra/win_crash_logger/win_crash_logger.h38
-rw-r--r--indra/win_crash_logger/win_crash_logger.icobin1078 -> 0 bytes
-rwxr-xr-xindra/win_crash_logger/win_crash_logger.rc188
29 files changed, 12 insertions, 1745 deletions
diff --git a/indra/CMakeLists.txt b/indra/CMakeLists.txt
index db88e44127..ef72edf75d 100644
--- a/indra/CMakeLists.txt
+++ b/indra/CMakeLists.txt
@@ -72,6 +72,15 @@ if (LINUX)
include(LLAppearanceUtility)
add_subdirectory(${LLAPPEARANCEUTILITY_SRC_DIR} ${LLAPPEARANCEUTILITY_BIN_DIR})
endif (INSTALL_PROPRIETARY)
+ add_dependencies(viewer linux-crash-logger-strip-target)
+elseif (DARWIN)
+ add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
+ add_dependencies(viewer mac-crash-logger)
+elseif (WINDOWS)
+ # cmake EXISTS requires an absolute path, see indra/cmake/Variables.cmake
+ if (EXISTS ${VIEWER_DIR}win_setup)
+ add_subdirectory(${VIEWER_DIR}win_setup)
+ endif (EXISTS ${VIEWER_DIR}win_setup)
endif (LINUX)
if (WINDOWS)
@@ -98,13 +107,6 @@ else (USE_BUGSPLAT)
if (LINUX)
add_subdirectory(${VIEWER_PREFIX}linux_crash_logger)
add_dependencies(viewer linux-crash-logger-strip-target)
- elseif (DARWIN)
- add_subdirectory(${VIEWER_PREFIX}mac_crash_logger)
- add_dependencies(viewer mac-crash-logger)
- elseif (WINDOWS)
- add_subdirectory(${VIEWER_PREFIX}win_crash_logger)
- # add_dependencies(viewer windows-setup windows-crash-logger)
- add_dependencies(viewer windows-crash-logger)
endif (LINUX)
endif (USE_BUGSPLAT)
diff --git a/indra/cmake/CMakeLists.txt b/indra/cmake/CMakeLists.txt
index a17e37cd32..cca305c741 100644
--- a/indra/cmake/CMakeLists.txt
+++ b/indra/cmake/CMakeLists.txt
@@ -28,7 +28,6 @@ set(cmake_SOURCE_FILES
FindAutobuild.cmake
FindBerkeleyDB.cmake
FindGLH.cmake
- FindGoogleBreakpad.cmake
FindHUNSPELL.cmake
FindJsonCpp.cmake
FindNDOF.cmake
@@ -43,7 +42,6 @@ set(cmake_SOURCE_FILES
GLH.cmake
GLOD.cmake
## GStreamer010Plugin.cmake
- GoogleBreakpad.cmake
GoogleMock.cmake
Havok.cmake
Hunspell.cmake
diff --git a/indra/cmake/Copy3rdPartyLibs.cmake b/indra/cmake/Copy3rdPartyLibs.cmake
index 46ddb9d15b..31537a43ef 100644
--- a/indra/cmake/Copy3rdPartyLibs.cmake
+++ b/indra/cmake/Copy3rdPartyLibs.cmake
@@ -158,7 +158,6 @@ elseif(DARWIN)
libapr-1.dylib
libaprutil-1.0.dylib
libaprutil-1.dylib
- libexception_handler.dylib
${EXPAT_COPY}
libGLOD.dylib
libhunspell-1.3.0.dylib
diff --git a/indra/cmake/FindGoogleBreakpad.cmake b/indra/cmake/FindGoogleBreakpad.cmake
deleted file mode 100644
index 1a0493be5e..0000000000
--- a/indra/cmake/FindGoogleBreakpad.cmake
+++ /dev/null
@@ -1,40 +0,0 @@
-# -*- cmake -*-
-
-# - Find Google BreakPad
-# Find the Google BreakPad includes and library
-# This module defines
-# BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR, where to find exception_handler.h, etc.
-# BREAKPAD_EXCEPTION_HANDLER_LIBRARIES, the libraries needed to use Google BreakPad.
-# BREAKPAD_EXCEPTION_HANDLER_FOUND, If false, do not try to use Google BreakPad.
-# also defined, but not for general use are
-# BREAKPAD_EXCEPTION_HANDLER_LIBRARY, where to find the Google BreakPad library.
-
-FIND_PATH(BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR google_breakpad/exception_handler.h)
-
-SET(BREAKPAD_EXCEPTION_HANDLER_NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES} breakpad_client)
-FIND_LIBRARY(BREAKPAD_EXCEPTION_HANDLER_LIBRARY
- NAMES ${BREAKPAD_EXCEPTION_HANDLER_NAMES}
- )
-
-IF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
- SET(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES ${BREAKPAD_EXCEPTION_HANDLER_LIBRARY})
- SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "YES")
-ELSE (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
- SET(BREAKPAD_EXCEPTION_HANDLER_FOUND "NO")
-ENDIF (BREAKPAD_EXCEPTION_HANDLER_LIBRARY AND BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR)
-
-
-IF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
- IF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
- MESSAGE(STATUS "Found Google BreakPad: ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}")
- ENDIF (NOT BREAKPAD_EXCEPTION_HANDLER_FIND_QUIETLY)
-ELSE (BREAKPAD_EXCEPTION_HANDLER_FOUND)
- IF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
- MESSAGE(FATAL_ERROR "Could not find Google BreakPad library")
- ENDIF (BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED)
-ENDIF (BREAKPAD_EXCEPTION_HANDLER_FOUND)
-
-MARK_AS_ADVANCED(
- BREAKPAD_EXCEPTION_HANDLER_LIBRARY
- BREAKPAD_EXCEPTION_HANDLER_INCLUDE_DIR
- )
diff --git a/indra/cmake/GoogleBreakpad.cmake b/indra/cmake/GoogleBreakpad.cmake
deleted file mode 100644
index 829e1ac08a..0000000000
--- a/indra/cmake/GoogleBreakpad.cmake
+++ /dev/null
@@ -1,22 +0,0 @@
-# -*- cmake -*-
-include(Prebuilt)
-
-if (USESYSTEMLIBS)
- set(BREAKPAD_EXCEPTION_HANDLER_FIND_REQUIRED ON)
- include(FindGoogleBreakpad)
-else (USESYSTEMLIBS)
- use_prebuilt_binary(google_breakpad)
- if (DARWIN)
- set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES exception_handler)
- endif (DARWIN)
- if (LINUX)
- set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES breakpad_client)
- endif (LINUX)
- if (WINDOWS)
- set(BREAKPAD_EXCEPTION_HANDLER_LIBRARIES exception_handler crash_generation_client crash_generation_server common)
- endif (WINDOWS)
- # yes, this does look dumb, no, it's not incorrect
- #
- set(BREAKPAD_INCLUDE_DIRECTORIES "${LIBS_PREBUILT_DIR}/include/google_breakpad" "${LIBS_PREBUILT_DIR}/include/google_breakpad/google_breakpad")
-endif (USESYSTEMLIBS)
-
diff --git a/indra/llcommon/CMakeLists.txt b/indra/llcommon/CMakeLists.txt
index dd266630ea..22dfe12e40 100644
--- a/indra/llcommon/CMakeLists.txt
+++ b/indra/llcommon/CMakeLists.txt
@@ -9,7 +9,6 @@ include(Linking)
include(Boost)
include(LLSharedLibs)
include(JsonCpp)
-include(GoogleBreakpad)
include(Copy3rdPartyLibs)
include(ZLIB)
include(URIPARSER)
@@ -19,7 +18,6 @@ include_directories(
${LLCOMMON_INCLUDE_DIRS}
${JSONCPP_INCLUDE_DIR}
${ZLIB_INCLUDE_DIRS}
- ${BREAKPAD_INCLUDE_DIRECTORIES}
${URIPARSER_INCLUDE_DIRS}
)
@@ -288,7 +286,6 @@ endif(LLCOMMON_LINK_SHARED)
target_link_libraries(
llcommon
- ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}
${APRUTIL_LIBRARIES}
${APR_LIBRARIES}
${EXPAT_LIBRARIES}
diff --git a/indra/llcommon/llapp.cpp b/indra/llcommon/llapp.cpp
index 6064a843ae..a5300adf87 100644
--- a/indra/llcommon/llapp.cpp
+++ b/indra/llcommon/llapp.cpp
@@ -46,7 +46,6 @@
#include "llstl.h" // for DeletePointer()
#include "llstring.h"
#include "lleventtimer.h"
-#include "google_breakpad/exception_handler.h"
#include "stringize.h"
#include "llcleanup.h"
#include "llevents.h"
@@ -62,12 +61,6 @@
LONG WINAPI default_windows_exception_handler(struct _EXCEPTION_POINTERS *exception_infop);
BOOL ConsoleCtrlHandler(DWORD fdwCtrlType);
-bool windows_post_minidump_callback(const wchar_t* dump_path,
- const wchar_t* minidump_id,
- void* context,
- EXCEPTION_POINTERS* exinfo,
- MDRawAssertionInfo* assertion,
- bool succeeded);
#else
# include <signal.h>
# include <unistd.h> // for fork()
@@ -146,8 +139,6 @@ void LLApp::commonCtor()
// Set the application to this instance.
sApplication = this;
-
- mExceptionHandler = 0;
// initialize the buffer to write the minidump filename to
// (this is used to avoid allocating memory in the crash handler)
@@ -177,8 +168,6 @@ LLApp::~LLApp()
delete mThreadErrorp;
mThreadErrorp = NULL;
}
-
- if(mExceptionHandler != 0) delete mExceptionHandler;
SUBSYSTEM_CLEANUP_DBG(LLCommon);
}
@@ -394,69 +383,6 @@ void LLApp::setupErrorHandling(bool second_instance)
#if LL_WINDOWS
-#if LL_SEND_CRASH_REPORTS && ! defined(LL_BUGSPLAT)
- EnableCrashingOnCrashes();
-
- // This sets a callback to handle w32 signals to the console window.
- // The viewer shouldn't be affected, sicne its a windowed app.
- SetConsoleCtrlHandler( (PHANDLER_ROUTINE) ConsoleCtrlHandler, TRUE);
-
- // Install the Google Breakpad crash handler for Windows
- if(mExceptionHandler == 0)
- {
- if ( second_instance ) //BUG-5707 Firing teleport from a web browser causes second
- {
- mExceptionHandler = new google_breakpad::ExceptionHandler(
- L"C:\\Temp\\",
- 0, //No filter
- windows_post_minidump_callback,
- 0,
- google_breakpad::ExceptionHandler::HANDLER_ALL); //No custom client info.
- }
- else
- {
- LL_WARNS() << "adding breakpad exception handler" << LL_ENDL;
-
- std::wstring wpipe_name;
- wpipe_name = mCrashReportPipeStr + wstringize(getPid());
-
- const std::wstring wdump_path(utf8str_to_utf16str(mDumpPath));
-
- int retries = 30;
- for (; retries > 0; --retries)
- {
- if (mExceptionHandler != 0) delete mExceptionHandler;
-
- mExceptionHandler = new google_breakpad::ExceptionHandler(
- wdump_path,
- NULL, //No filter
- windows_post_minidump_callback,
- 0,
- google_breakpad::ExceptionHandler::HANDLER_ALL,
- MiniDumpNormal, //Generate a 'normal' minidump.
- wpipe_name.c_str(),
- NULL); //No custom client info.
- if (mExceptionHandler->IsOutOfProcess())
- {
- LL_INFOS("CRASHREPORT") << "Successfully attached to Out of Process exception handler." << LL_ENDL;
- break;
- }
- else
- {
- LL_WARNS("CRASHREPORT") << "Unable to attach to Out of Process exception handler. " << retries << " retries remaining." << LL_ENDL;
- ::Sleep(100); //Wait a tick and try again.
- }
- }
-
- if (retries == 0) LL_WARNS("CRASHREPORT") << "Unable to attach to Out of Process exception handler." << LL_ENDL;
- }
-
- if (mExceptionHandler)
- {
- mExceptionHandler->set_handle_debug_exceptions(true);
- }
- }
-#endif // LL_SEND_CRASH_REPORTS && ! defined(LL_BUGSPLAT)
#else // ! LL_WINDOWS
#if defined(LL_BUGSPLAT)
@@ -511,10 +437,6 @@ void LLApp::setupErrorHandling(bool second_instance)
}
#endif // ! LL_RELEASE_FOR_DOWNLOAD
- if(installHandler && (mExceptionHandler == 0))
- {
- mExceptionHandler = new google_breakpad::ExceptionHandler(mDumpPath, 0, &unix_post_minidump_callback, 0, true, 0);
- }
#elif LL_LINUX
if(installHandler && (mExceptionHandler == 0))
{
@@ -614,31 +536,6 @@ void LLApp::setError()
setStatus(APP_STATUS_ERROR);
}
-void LLApp::setMiniDumpDir(const std::string &path)
-{
- if (path.empty())
- {
- mDumpPath = "/tmp";
- }
- else
- {
- mDumpPath = path;
- }
-
- if(mExceptionHandler == 0) return;
-#ifdef LL_WINDOWS
- std::wstring buffer(utf8str_to_utf16str(mDumpPath));
- if (buffer.size() > MAX_MINDUMP_PATH_LENGTH) buffer.resize(MAX_MINDUMP_PATH_LENGTH);
- mExceptionHandler->set_dump_path(buffer);
-#elif LL_LINUX
- //google_breakpad::MinidumpDescriptor desc("/tmp"); //path works in debug fails in production inside breakpad lib so linux gets a little less stack reporting until it is patched.
- google_breakpad::MinidumpDescriptor desc(mDumpPath); //path works in debug fails in production inside breakpad lib so linux gets a little less stack reporting until it is patched.
- mExceptionHandler->set_minidump_descriptor(desc);
-#else
- mExceptionHandler->set_dump_path(mDumpPath);
-#endif
-}
-
void LLApp::setDebugFileNames(const std::string &path)
{
mStaticDebugFileName = path + "static_debug_info.log";
@@ -647,8 +544,6 @@ void LLApp::setDebugFileNames(const std::string &path)
void LLApp::writeMiniDump()
{
- if(mExceptionHandler == 0) return;
- mExceptionHandler->WriteMinidump();
}
// static
@@ -705,13 +600,6 @@ bool LLApp::isExiting()
void LLApp::disableCrashlogger()
{
- // Disable Breakpad exception handler.
- if (mExceptionHandler != 0)
- {
- delete mExceptionHandler;
- mExceptionHandler = 0;
- }
-
sDisableCrashlogger = TRUE;
}
@@ -1105,64 +993,3 @@ bool unix_post_minidump_callback(const char *dump_dir,
}
#endif // !WINDOWS
-#ifdef LL_WINDOWS
-bool windows_post_minidump_callback(const wchar_t* dump_path,
- const wchar_t* minidump_id,
- void* context,
- EXCEPTION_POINTERS* exinfo,
- MDRawAssertionInfo* assertion,
- bool succeeded)
-{
- char * path = LLApp::instance()->getMiniDumpFilename();
- S32 remaining = LLApp::MAX_MINDUMP_PATH_LENGTH;
- size_t bytesUsed;
-
- LL_INFOS("MINIDUMPCALLBACK") << "Dump file was generated." << LL_ENDL;
- bytesUsed = wcstombs(path, dump_path, static_cast<size_t>(remaining));
- remaining -= bytesUsed;
- path += bytesUsed;
- if(remaining > 0 && bytesUsed > 0 && path[-1] != '\\')
- {
- *path++ = '\\';
- --remaining;
- }
- if(remaining > 0)
- {
- bytesUsed = wcstombs(path, minidump_id, static_cast<size_t>(remaining));
- remaining -= bytesUsed;
- path += bytesUsed;
- }
- if(remaining > 0)
- {
- strncpy(path, ".dmp", remaining);
- }
-
- LL_INFOS("CRASHREPORT") << "generated minidump: " << LLApp::instance()->getMiniDumpFilename() << LL_ENDL;
- // *NOTE:Mani - this code is stolen from LLApp, where its never actually used.
- //OSMessageBox("Attach Debugger Now", "Error", OSMB_OK);
- // *TODO: Translate the signals/exceptions into cross-platform stuff
- // Windows implementation
- LL_INFOS() << "Entering Windows Exception Handler..." << LL_ENDL;
-
- if (LLApp::isError())
- {
- LL_WARNS() << "Got another fatal signal while in the error handler, die now!" << LL_ENDL;
- }
-
- // Flag status to error, so thread_error starts its work
- LLApp::setError();
-
- // Block in the exception handler until the app has stopped
- // This is pretty sketchy, but appears to work just fine
- while (!LLApp::isStopped())
- {
- ms_sleep(10);
- }
-
-#ifndef LL_RELEASE_FOR_DOWNLOAD
- return false;
-#else
- return true;
-#endif
-}
-#endif
diff --git a/indra/llcommon/llapp.h b/indra/llcommon/llapp.h
index 5fa91b8bf5..83f3bf3f93 100644
--- a/indra/llcommon/llapp.h
+++ b/indra/llcommon/llapp.h
@@ -49,10 +49,6 @@ void clear_signals();
#endif
-namespace google_breakpad {
- class ExceptionHandler; // See exception_handler.h
-}
-
class LL_COMMON_API LLApp
{
friend class LLErrorThread;
@@ -236,7 +232,6 @@ public:
static const U32 MAX_MINDUMP_PATH_LENGTH = 256;
// change the directory where Breakpad minidump files are written to
- void setMiniDumpDir(const std::string &path);
void setDebugFileNames(const std::string &path);
// Return the Google Breakpad minidump filename after a crash.
@@ -316,9 +311,6 @@ private:
private:
// the static application instance if it was created.
static LLApp* sApplication;
-
- google_breakpad::ExceptionHandler * mExceptionHandler;
-
#if !LL_WINDOWS
friend void default_unix_signal_handler(int signum, siginfo_t *info, void *);
diff --git a/indra/llcorehttp/CMakeLists.txt b/indra/llcorehttp/CMakeLists.txt
index 8bb6a657b1..6a301ad50d 100644
--- a/indra/llcorehttp/CMakeLists.txt
+++ b/indra/llcorehttp/CMakeLists.txt
@@ -177,7 +177,6 @@ if (DARWIN)
set(copy_dylibs
libapr-1.0.dylib
libaprutil-1.0.dylib
- libexception_handler.dylib
libnghttp2*.dylib
liburiparser*.dylib
${EXPAT_COPY}
diff --git a/indra/newview/CMakeLists.txt b/indra/newview/CMakeLists.txt
index 87caca56af..03d2ea06f0 100644
--- a/indra/newview/CMakeLists.txt
+++ b/indra/newview/CMakeLists.txt
@@ -1847,10 +1847,6 @@ if (WINDOWS)
winmm_shim
)
- if (NOT USE_BUGSPLAT)
- LIST(APPEND COPY_INPUT_DEPENDENCIES windows-crash-logger)
- endif (NOT USE_BUGSPLAT)
-
if (ADDRESS_SIZE EQUAL 64)
list(APPEND COPY_INPUT_DEPENDENCIES
${SHARED_LIB_STAGING_DIR}/${CMAKE_CFG_INTDIR}/vivoxsdk_x64.dll
@@ -1915,10 +1911,6 @@ if (WINDOWS)
add_dependencies(${VIEWER_BINARY_NAME} SLPlugin)
- if (NOT USE_BUGSPLAT)
- add_dependencies(${VIEWER_BINARY_NAME} windows-crash-logger)
- endif (NOT USE_BUGSPLAT)
-
# sets the 'working directory' for debugging from visual studio.
# Condition for version can be moved to requirements once build agents will be updated (see TOOL-3865)
if (NOT UNATTENDED)
@@ -2271,62 +2263,7 @@ endif (INSTALL)
# Note that the conventional VIEWER_SYMBOL_FILE is set by ../../build.sh
if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIEWER_SYMBOL_FILE)
- if (NOT USE_BUGSPLAT)
- # Breakpad symbol-file generation
- set(SYMBOL_SEARCH_DIRS "")
- if (WINDOWS)
- list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
- # slplugin.exe failing symbols dump - need to debug, might have to do with updated version of google breakpad
- # set(VIEWER_EXE_GLOBS "${VIEWER_BINARY_NAME}${CMAKE_EXECUTABLE_SUFFIX} slplugin.exe")
- set(VIEWER_EXE_GLOBS "${VIEWER_BINARY_NAME}${CMAKE_EXECUTABLE_SUFFIX}")
- set(VIEWER_LIB_GLOB "*${CMAKE_SHARED_MODULE_SUFFIX}")
- set(VIEWER_COPY_MANIFEST copy_w_viewer_manifest)
- endif (WINDOWS)
- if (DARWIN)
- list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/${CMAKE_CFG_INTDIR}")
- # *TODO: Generate these search dirs in the cmake files related to each binary.
- list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/llplugin/slplugin/${CMAKE_CFG_INTDIR}")
- list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/mac_crash_logger/${CMAKE_CFG_INTDIR}")
- list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_BINARY_DIR}/media_plugins/gstreamer010/${CMAKE_CFG_INTDIR}")
- set(VIEWER_EXE_GLOBS "'${product}' SLPlugin")
- set(VIEWER_EXE_GLOBS "'${product}' mac-crash-logger")
- set(VIEWER_LIB_GLOB "*.dylib")
- endif (DARWIN)
- if (LINUX)
- list(APPEND SYMBOL_SEARCH_DIRS "${CMAKE_CURRENT_BINARY_DIR}/packaged")
- set(VIEWER_EXE_GLOBS "do-not-directly-run-secondlife-bin SLPlugin")
- set(VIEWER_EXE_GLOBS "do-not-directly-run-secondlife-bin")
- set(VIEWER_LIB_GLOB "*${CMAKE_SHARED_MODULE_SUFFIX}*")
- set(VIEWER_COPY_MANIFEST copy_l_viewer_manifest)
- endif (LINUX)
-
- if(CMAKE_CFG_INTDIR STREQUAL ".")
- set(LLBUILD_CONFIG ${CMAKE_BUILD_TYPE})
- else(CMAKE_CFG_INTDIR STREQUAL ".")
- # set LLBUILD_CONFIG to be a shell variable evaluated at build time
- # reflecting the configuration we are currently building.
- set(LLBUILD_CONFIG ${CMAKE_CFG_INTDIR})
- endif(CMAKE_CFG_INTDIR STREQUAL ".")
- add_custom_command(OUTPUT "${VIEWER_SYMBOL_FILE}"
- COMMAND "${PYTHON_EXECUTABLE}"
- ARGS
- "${CMAKE_CURRENT_SOURCE_DIR}/generate_breakpad_symbols.py"
- "${LLBUILD_CONFIG}"
- "${SYMBOL_SEARCH_DIRS}"
- "${VIEWER_EXE_GLOBS}"
- "${VIEWER_LIB_GLOB}"
- "${AUTOBUILD_INSTALL_DIR}/bin/dump_syms"
- "${VIEWER_SYMBOL_FILE}"
- DEPENDS generate_breakpad_symbols.py
- VERBATIM)
-
- add_custom_target(generate_symbols DEPENDS "${VIEWER_SYMBOL_FILE}" ${VIEWER_BINARY_NAME} "${VIEWER_COPY_MANIFEST}")
- add_dependencies(generate_symbols ${VIEWER_BINARY_NAME})
- if (WINDOWS OR LINUX)
- add_dependencies(generate_symbols "${VIEWER_COPY_MANIFEST}")
- endif (WINDOWS OR LINUX)
-
- else (NOT USE_BUGSPLAT)
+ if (USE_BUGSPLAT)
# BugSplat symbol-file generation
if (WINDOWS)
# Just pack up a tarball containing only the .pdb file for the
@@ -2410,7 +2347,7 @@ if (PACKAGE AND (RELEASE_CRASH_REPORTING OR NON_RELEASE_CRASH_REPORTING) AND VIE
if (LINUX)
# TBD
endif (LINUX)
- endif (NOT USE_BUGSPLAT)
+ endif (USE_BUGSPLAT)
# for both Bugsplat and Breakpad
add_dependencies(llpackage generate_symbols)
diff --git a/indra/newview/generate_breakpad_symbols.py b/indra/newview/generate_breakpad_symbols.py
deleted file mode 100755
index d351c406bc..0000000000
--- a/indra/newview/generate_breakpad_symbols.py
+++ /dev/null
@@ -1,166 +0,0 @@
-#!/usr/bin/env python
-"""\
-@file generate_breakpad_symbols.py
-@author Brad Kittenbrink <brad@lindenlab.com>
-@brief Simple tool for generating google_breakpad symbol information
- for the crash reporter.
-
-$LicenseInfo:firstyear=2010&license=viewerlgpl$
-Second Life Viewer Source Code
-Copyright (C) 2010-2011, Linden Research, Inc.
-
-This library is free software; you can redistribute it and/or
-modify it under the terms of the GNU Lesser General Public
-License as published by the Free Software Foundation;
-version 2.1 of the License only.
-
-This library is distributed in the hope that it will be useful,
-but WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-Lesser General Public License for more details.
-
-You should have received a copy of the GNU Lesser General Public
-License along with this library; if not, write to the Free Software
-Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-
-Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-$/LicenseInfo$
-"""
-
-
-import collections
-import fnmatch
-import itertools
-import os
-import re
-import sys
-import shlex
-import subprocess
-import tarfile
-import StringIO
-import pprint
-
-DEBUG=False
-
-def usage():
- print >>sys.stderr, "usage: %s search_dirs viewer_exes libs_suffix dump_syms_tool viewer_symbol_file" % sys.argv[0]
-
-class MissingModuleError(Exception):
- def __init__(self, modules):
- Exception.__init__(self, "Failed to find required modules: %r" % modules)
- self.modules = modules
-
-def main(configuration, search_dirs, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file):
- print "generate_breakpad_symbols run with args: %s" % str((configuration, search_dirs, viewer_exes, libs_suffix, dump_syms_tool, viewer_symbol_file))
-
- if not re.match("release", configuration, re.IGNORECASE):
- print "skipping breakpad symbol generation for non-release build."
- return 0
-
- # split up list of viewer_exes
- # "'Second Life' SLPlugin" becomes ['Second Life', 'SLPlugin']
- viewer_exes = shlex.split(viewer_exes)
-
- found_required = dict([(module, False) for module in viewer_exes])
-
- def matches(f):
- if f in viewer_exes:
- found_required[f] = True
- return True
- return fnmatch.fnmatch(f, libs_suffix)
-
- search_dirs = search_dirs.split(";")
-
- def list_files():
- for search_dir in search_dirs:
- for (dirname, subdirs, filenames) in os.walk(search_dir):
- if DEBUG:
- print "scanning '%s' for modules..." % dirname
- for f in itertools.ifilter(matches, filenames):
- yield os.path.join(dirname, f)
-
- def dump_module(m):
- print "dumping module '%s' with '%s'..." % (m, dump_syms_tool)
- dsym_full_path = m
- child = subprocess.Popen([dump_syms_tool, dsym_full_path] , stdout=subprocess.PIPE)
- out, err = child.communicate()
- return (m,child.returncode, out, err)
-
-
- modules = {}
-
- for m in list_files():
- if DEBUG:
- print "examining module '%s' ... " % m,
- filename=os.path.basename(m)
- if -1 != m.find("DWARF"):
- # Just use this module; it has the symbols we want.
- modules[filename] = m
- if DEBUG:
- print "found dSYM entry"
- elif filename not in modules:
- # Only use this if we don't already have a (possibly better) entry.
- modules[filename] = m
- if DEBUG:
- print "found new entry"
- elif DEBUG:
- print "ignoring entry"
-
-
- print "Found these following modules:"
- pprint.pprint( modules )
-
- out = tarfile.open(viewer_symbol_file, 'w:bz2')
- for (filename,status,symbols,err) in itertools.imap(dump_module, modules.values()):
- if status == 0:
- module_line = symbols[:symbols.index('\n')]
- module_line = module_line.split()
- hash_id = module_line[3]
- module = ' '.join(module_line[4:])
- if sys.platform in ['win32', 'cygwin']:
- mod_name = module[:module.rindex('.pdb')]
- else:
- mod_name = module
- symbolfile = StringIO.StringIO(symbols)
- info = tarfile.TarInfo("%(module)s/%(hash_id)s/%(mod_name)s.sym" % dict(module=module, hash_id=hash_id, mod_name=mod_name))
- info.size = symbolfile.len
- out.addfile(info, symbolfile)
- else:
- print >>sys.stderr, "warning: failed to dump symbols for '%s': %s" % (filename, err)
-
- out.close()
-
- missing_modules = [m for (m,_) in
- itertools.ifilter(lambda (k,v): not v, found_required.iteritems())
- ]
- if missing_modules:
- print >> sys.stderr, "failed to generate %s" % viewer_symbol_file
- os.remove(viewer_symbol_file)
- raise MissingModuleError(missing_modules)
-
- symbols = tarfile.open(viewer_symbol_file, 'r:bz2')
- tarfile_members = symbols.getnames()
- symbols.close()
-
- for required_module in viewer_exes:
- def match_module_basename(m):
- return os.path.splitext(required_module)[0].lower() \
- == os.path.splitext(os.path.basename(m))[0].lower()
- # there must be at least one .sym file in tarfile_members that matches
- # each required module (ignoring file extensions)
- if not any(itertools.imap(match_module_basename, tarfile_members)):
- print >> sys.stderr, "failed to find required %s in generated %s" \
- % (required_module, viewer_symbol_file)
- os.remove(viewer_symbol_file)
- raise MissingModuleError([required_module])
-
- print "successfully generated %s including required modules '%s'" % (viewer_symbol_file, viewer_exes)
-
- return 0
-
-if __name__ == "__main__":
- if len(sys.argv) != 7:
- usage()
- sys.exit(1)
- sys.exit(main(*sys.argv[1:]))
-
diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index ccd9e76f53..fe844cfa57 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -739,7 +739,7 @@ LLAppViewer::LLAppViewer()
std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, "");
# endif // ! LL_BUGSPLAT
mDumpPath = logdir;
- setMiniDumpDir(logdir);
+
setDebugFileNames(logdir);
}
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 0afb70958c..95f6efa29a 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -109,7 +109,6 @@ public:
virtual bool restoreErrorTrap() = 0; // Require platform specific override to reset error handling mechanism.
// return false if the error trap needed restoration.
- virtual void initCrashReporting(bool reportFreeze = false) = 0; // What to do with crash report?
static void handleViewerCrash(); // Hey! The viewer crashed. Do this, soon.
void checkForCrash();
diff --git a/indra/newview/llappviewermacosx.cpp b/indra/newview/llappviewermacosx.cpp
index 42946e4415..7be5f8117c 100644
--- a/indra/newview/llappviewermacosx.cpp
+++ b/indra/newview/llappviewermacosx.cpp
@@ -347,28 +347,6 @@ bool LLAppViewerMacOSX::restoreErrorTrap()
return reset_count == 0;
}
-void LLAppViewerMacOSX::initCrashReporting(bool reportFreeze)
-{
-#if defined LL_BUGSPLAT
- LL_DEBUGS("InitOSX", "Bugsplat") << "using BugSplat crash logger" << LL_ENDL;
-#elif LL_SEND_CRASH_REPORTS
- LL_DEBUGS("InitOSX") << "Initializing legacy crash logger" << LL_ENDL;
- std::string command_str = "mac-crash-logger.app";
-
- std::stringstream pid_str;
- pid_str << LLApp::getPid();
- std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, "");
- std::string appname = gDirUtilp->getExecutableFilename();
- std::string str[] = { "-pid", pid_str.str(), "-dumpdir", logdir, "-procname", appname.c_str() };
- std::vector< std::string > args( str, str + ( sizeof ( str ) / sizeof ( std::string ) ) );
- LL_WARNS() << "about to launch mac-crash-logger" << pid_str.str()
- << " " << logdir << " " << appname << LL_ENDL;
- launchApplication(&command_str, &args);
-#else
- LL_DEBUGS("InitOSX") << "No crash logger enabled" << LL_ENDL;
-#endif // ! LL_BUGSPLAT
-}
-
std::string LLAppViewerMacOSX::generateSerialNumber()
{
char serial_md5[MD5HEX_STR_SIZE]; // Flawfinder: ignore
diff --git a/indra/newview/llappviewermacosx.h b/indra/newview/llappviewermacosx.h
index d5a80864be..b0e325a955 100644
--- a/indra/newview/llappviewermacosx.h
+++ b/indra/newview/llappviewermacosx.h
@@ -44,7 +44,6 @@ public:
protected:
virtual bool restoreErrorTrap();
- virtual void initCrashReporting(bool reportFreeze);
std::string generateSerialNumber();
virtual bool initParseCommandLine(LLCommandLineParser& clp);
diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp
index 9daea515e5..25d18fa11f 100644
--- a/indra/newview/llappviewerwin32.cpp
+++ b/indra/newview/llappviewerwin32.cpp
@@ -599,9 +599,6 @@ bool LLAppViewerWin32::init()
#if ! defined(LL_BUGSPLAT)
#pragma message("Building without BugSplat")
- LLAppViewer* pApp = LLAppViewer::instance();
- pApp->initCrashReporting();
-
#else // LL_BUGSPLAT
#pragma message("Building with BugSplat")
@@ -846,57 +843,6 @@ bool LLAppViewerWin32::restoreErrorTrap()
return true; // we don't check for handler collisions on windows, so just say they're ok
}
-void LLAppViewerWin32::initCrashReporting(bool reportFreeze)
-{
- if (isSecondInstance()) return; //BUG-5707 do not start another crash reporter for second instance.
-
- const char* logger_name = "win_crash_logger.exe";
- std::string exe_path = gDirUtilp->getExecutableDir();
- exe_path += gDirUtilp->getDirDelimiter();
- exe_path += logger_name;
-
- std::string logdir = gDirUtilp->getExpandedFilename(LL_PATH_DUMP, "");
- std::string appname = gDirUtilp->getExecutableFilename();
-
- S32 slen = logdir.length() -1;
- S32 end = slen;
- while (logdir.at(end) == '/' || logdir.at(end) == '\\') end--;
-
- if (slen !=end)
- {
- logdir = logdir.substr(0,end+1);
- }
- //std::string arg_str = "\"" + exe_path + "\" -dumpdir \"" + logdir + "\" -procname \"" + appname + "\" -pid " + stringize(LLApp::getPid());
- //_spawnl(_P_NOWAIT, exe_path.c_str(), arg_str.c_str(), NULL);
- std::string arg_str = "\"" + exe_path + "\" -dumpdir \"" + logdir + "\" -procname \"" + appname + "\" -pid " + stringize(LLApp::getPid());
-
- STARTUPINFO startInfo={sizeof(startInfo)};
- PROCESS_INFORMATION processInfo;
-
- std::wstring exe_wstr;
- exe_wstr = utf8str_to_utf16str(exe_path);
-
- std::wstring arg_wstr;
- arg_wstr = utf8str_to_utf16str(arg_str);
-
- LL_INFOS("CrashReport") << "Creating crash reporter process " << exe_path << " with params: " << arg_str << LL_ENDL;
- if(CreateProcess(exe_wstr.c_str(),
- &arg_wstr[0], // Application arguments
- 0,
- 0,
- FALSE,
- CREATE_DEFAULT_ERROR_MODE,
- 0,
- 0, // Working directory
- &startInfo,
- &processInfo) == FALSE)
- // Could not start application -> call 'GetLastError()'
- {
- LL_WARNS("CrashReport") << "CreateProcess failed " << GetLastError() << LL_ENDL;
- return;
- }
-}
-
//virtual
bool LLAppViewerWin32::sendURLToOtherInstance(const std::string& url)
{
diff --git a/indra/newview/llappviewerwin32.h b/indra/newview/llappviewerwin32.h
index 83ae875a15..ab52bf15f9 100644
--- a/indra/newview/llappviewerwin32.h
+++ b/indra/newview/llappviewerwin32.h
@@ -53,7 +53,6 @@ protected:
bool beingDebugged() override;
bool restoreErrorTrap() override;
- void initCrashReporting(bool reportFreeze) override;
bool sendURLToOtherInstance(const std::string& url) override;
diff --git a/indra/newview/viewer_manifest.py b/indra/newview/viewer_manifest.py
index 41da8fa328..eb5071c2b8 100755
--- a/indra/newview/viewer_manifest.py
+++ b/indra/newview/viewer_manifest.py
@@ -1025,7 +1025,6 @@ class DarwinManifest(ViewerManifest):
"libapr-1.0.dylib",
"libaprutil-1.0.dylib",
"libexpat.1.dylib",
- "libexception_handler.dylib",
"libGLOD.dylib",
# libnghttp2.dylib is a symlink to
# libnghttp2.major.dylib, which is a symlink to
diff --git a/indra/win_crash_logger/CMakeLists.txt b/indra/win_crash_logger/CMakeLists.txt
deleted file mode 100644
index 86aa655f03..0000000000
--- a/indra/win_crash_logger/CMakeLists.txt
+++ /dev/null
@@ -1,105 +0,0 @@
-# -*- cmake -*-
-
-project(win_crash_logger)
-
-include(00-Common)
-include(LLCommon)
-include(LLCoreHttp)
-include(LLCrashLogger)
-include(LLMath)
-include(LLMessage)
-include(LLVFS)
-include(LLWindow)
-include(LLXML)
-include(Linking)
-include(LLSharedLibs)
-include(GoogleBreakpad)
-include(Boost)
-
-include_directories(
- ${LLCOREHTTP_INCLUDE_DIRS}
- ${LLCOMMON_INCLUDE_DIRS}
- ${LLCRASHLOGGER_INCLUDE_DIRS}
- ${LLMATH_INCLUDE_DIRS}
- ${LLWINDOW_INCLUDE_DIRS}
- ${LLXML_INCLUDE_DIRS}
- ${LLVFS_INCLUDE_DIRS}
- ${BREAKPAD_INCLUDE_DIRECTORIES}
- )
-include_directories(SYSTEM
- ${LLCOMMON_SYSTEM_INCLUDE_DIRS}
- ${LLXML_SYSTEM_INCLUDE_DIRS}
- )
-
-set(win_crash_logger_SOURCE_FILES
- win_crash_logger.cpp
- llcrashloggerwindows.cpp
- )
-
-set(win_crash_logger_HEADER_FILES
- CMakeLists.txt
-
- llcrashloggerwindows.h
- resource.h
- StdAfx.h
- win_crash_logger.h
- )
-
-set_source_files_properties(${win_crash_logger_HEADER_FILES}
- PROPERTIES HEADER_FILE_ONLY TRUE)
-
-set(win_crash_logger_RESOURCE_FILES
- ll_icon.ico
- )
-
-set_source_files_properties(${win_crash_logger_RESOURCE_FILES}
- PROPERTIES HEADER_FILE_ONLY TRUE)
-
-set(win_crash_logger_RESOURCE_FILES
- win_crash_logger.rc
- ${win_crash_logger_RESOURCE_FILES}
- )
-
-SOURCE_GROUP("Resource Files" FILES ${win_crash_logger_RESOURCE_FILES})
-
-list(APPEND
- win_crash_logger_SOURCE_FILES
- ${win_crash_logger_HEADER_FILES}
- ${win_crash_logger_RESOURCE_FILES}
- )
-
-add_executable(windows-crash-logger WIN32 ${win_crash_logger_SOURCE_FILES})
-
-
-target_link_libraries(windows-crash-logger
- ${LEGACY_STDIO_LIBS}
- ${BREAKPAD_EXCEPTION_HANDLER_LIBRARIES}
- ${LLCRASHLOGGER_LIBRARIES}
- ${LLWINDOW_LIBRARIES}
- ${LLVFS_LIBRARIES}
- ${LLXML_LIBRARIES}
- ${LLMESSAGE_LIBRARIES}
- ${LLMATH_LIBRARIES}
- ${LLCOREHTTP_LIBRARIES}
- ${LLCOMMON_LIBRARIES}
- ${BOOST_CONTEXT_LIBRARY}
- ${BOOST_FIBER_LIBRARY}
- ${WINDOWS_LIBRARIES}
- dxguid
- ${GOOGLE_PERFTOOLS_LIBRARIES}
- user32
- gdi32
- oleaut32
- wininet
- Wldap32
- )
-
-if (WINDOWS)
- set_target_properties(windows-crash-logger
- PROPERTIES
- LINK_FLAGS "/NODEFAULTLIB:LIBCMT"
- LINK_FLAGS_DEBUG "/NODEFAULTLIB:\"LIBCMT;LIBCMTD;MSVCRT\""
- )
-endif (WINDOWS)
-
-ll_deploy_sharedlibs_command(windows-crash-logger)
diff --git a/indra/win_crash_logger/StdAfx.cpp b/indra/win_crash_logger/StdAfx.cpp
deleted file mode 100644
index f56711af73..0000000000
--- a/indra/win_crash_logger/StdAfx.cpp
+++ /dev/null
@@ -1,34 +0,0 @@
-/**
- * @file StdAfx.cpp
- * @brief windows crash logger source file for includes
- *
- * $LicenseInfo:firstyear=2003&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-// stdafx.cpp : source file that includes just the standard includes
-// win_crash_logger.pch will be the pre-compiled header
-// stdafx.obj will contain the pre-compiled type information
-
-#include "stdafx.h"
-
-// TODO: reference any additional headers you need in STDAFX.H
-// and not in this file
diff --git a/indra/win_crash_logger/StdAfx.h b/indra/win_crash_logger/StdAfx.h
deleted file mode 100644
index 35976658ac..0000000000
--- a/indra/win_crash_logger/StdAfx.h
+++ /dev/null
@@ -1,56 +0,0 @@
-/**
- * @file StdAfx.h
- * @brief standard system includes
- *
- * $LicenseInfo:firstyear=2003&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-// stdafx.h : include file for standard system include files,
-// or project specific include files that are used frequently, but
-// are changed infrequently
-//
-
-#if !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
-#define AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#define WIN32_LEAN_AND_MEAN // Exclude rarely-used stuff from Windows headers
-
-// Windows Header Files:
-#include <windows.h>
-
-// C RunTime Header Files
-#include <stdlib.h>
-#include <malloc.h>
-#include <memory.h>
-
-// Local Header Files
-
-// TODO: reference additional headers your program requires here
-
-//{{AFX_INSERT_LOCATION}}
-// Microsoft Visual C++ will insert additional declarations immediately before the previous line.
-
-#endif // !defined(AFX_STDAFX_H__A9DB83DB_A9FD_11D0_BFD1_444553540000__INCLUDED_)
diff --git a/indra/win_crash_logger/ll_icon.ico b/indra/win_crash_logger/ll_icon.ico
deleted file mode 100644
index 566346dfe3..0000000000
--- a/indra/win_crash_logger/ll_icon.ico
+++ /dev/null
Binary files differ
diff --git a/indra/win_crash_logger/llcrashloggerwindows.cpp b/indra/win_crash_logger/llcrashloggerwindows.cpp
deleted file mode 100644
index 0cbe0b0d17..0000000000
--- a/indra/win_crash_logger/llcrashloggerwindows.cpp
+++ /dev/null
@@ -1,536 +0,0 @@
-/**
-* @file llcrashloggerwindows.cpp
-* @brief Windows crash logger implementation
-*
-* $LicenseInfo:firstyear=2003&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#include "linden_common.h"
-
-#include "stdafx.h"
-#include "resource.h"
-#include "llcrashloggerwindows.h"
-
-#include <sstream>
-
-#include "boost/tokenizer.hpp"
-
-#include "indra_constants.h" // CRASH_BEHAVIOR_ASK, CRASH_SETTING_NAME
-#include "llerror.h"
-#include "llfile.h"
-#include "lltimer.h"
-#include "llstring.h"
-#include "lldxhardware.h"
-#include "lldir.h"
-#include "llsdserialize.h"
-#include "llsdutil.h"
-#include "stringize.h"
-
-#include <client/windows/crash_generation/crash_generation_server.h>
-#include <client/windows/crash_generation/client_info.h>
-
-#define MAX_LOADSTRING 100
-#define MAX_STRING 2048
-const char* const SETTINGS_FILE_HEADER = "version";
-const S32 SETTINGS_FILE_VERSION = 101;
-
-// Windows Message Handlers
-
-// Global Variables:
-HINSTANCE hInst= NULL; // current instance
-TCHAR szTitle[MAX_LOADSTRING]; /* Flawfinder: ignore */ // The title bar text
-TCHAR szWindowClass[MAX_LOADSTRING]; /* Flawfinder: ignore */ // The title bar text
-
-std::string gProductName;
-HWND gHwndReport = NULL; // Send/Don't Send dialog
-HWND gHwndProgress = NULL; // Progress window
-HCURSOR gCursorArrow = NULL;
-HCURSOR gCursorWait = NULL;
-BOOL gFirstDialog = TRUE; // Are we currently handling the Send/Don't Send dialog?
-std::stringstream gDXInfo;
-bool gSendLogs = false;
-
-LLCrashLoggerWindows* LLCrashLoggerWindows::sInstance = NULL;
-
-//Conversion from char* to wchar*
-//Replacement for ATL macros, doesn't allocate memory
-//For more info see: http://www.codeguru.com/forum/showthread.php?t=337247
-void ConvertLPCSTRToLPWSTR (const char* pCstring, WCHAR* outStr)
-{
- if (pCstring != NULL)
- {
- int nInputStrLen = strlen (pCstring);
- // Double NULL Termination
- int nOutputStrLen = MultiByteToWideChar(CP_ACP, 0, pCstring, nInputStrLen, NULL, 0) + 2;
- if (outStr)
- {
- memset (outStr, 0x00, sizeof (WCHAR)*nOutputStrLen);
- MultiByteToWideChar (CP_ACP, 0, pCstring, nInputStrLen, outStr, nInputStrLen);
- }
- }
-}
-
-void write_debug(const char *str)
-{
- gDXInfo << str; /* Flawfinder: ignore */
-}
-
-void write_debug(std::string& str)
-{
- write_debug(str.c_str());
-}
-
-void show_progress(const std::string& message)
-{
- std::wstring msg = wstring_to_utf16str(utf8str_to_wstring(message));
- if (gHwndProgress)
- {
- SendDlgItemMessage(gHwndProgress, // handle to destination window
- IDC_LOG,
- WM_SETTEXT, // message to send
- FALSE, // undo option
- (LPARAM)msg.c_str());
- }
-}
-
-void update_messages()
-{
- MSG msg;
- while (PeekMessage(&msg, NULL, 0, 0, PM_REMOVE))
- {
- if (msg.message == WM_QUIT)
- {
- exit(0);
- }
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
-}
-
-void sleep_and_pump_messages( U32 seconds )
-{
- const U32 CYCLES_PER_SECOND = 10;
- U32 cycles = seconds * CYCLES_PER_SECOND;
- while( cycles-- )
- {
- update_messages();
- ms_sleep(1000 / CYCLES_PER_SECOND);
- }
-}
-
-// Include product name in the window caption.
-void LLCrashLoggerWindows::ProcessCaption(HWND hWnd)
-{
- TCHAR templateText[MAX_STRING]; /* Flawfinder: ignore */
- TCHAR header[MAX_STRING];
- std::string final;
- GetWindowText(hWnd, templateText, sizeof(templateText));
- final = llformat(ll_convert_wide_to_string(templateText, CP_ACP).c_str(), gProductName.c_str());
- ConvertLPCSTRToLPWSTR(final.c_str(), header);
- SetWindowText(hWnd, header);
-}
-
-
-// Include product name in the diaog item text.
-void LLCrashLoggerWindows::ProcessDlgItemText(HWND hWnd, int nIDDlgItem)
-{
- TCHAR templateText[MAX_STRING]; /* Flawfinder: ignore */
- TCHAR header[MAX_STRING];
- std::string final;
- GetDlgItemText(hWnd, nIDDlgItem, templateText, sizeof(templateText));
- final = llformat(ll_convert_wide_to_string(templateText, CP_ACP).c_str(), gProductName.c_str());
- ConvertLPCSTRToLPWSTR(final.c_str(), header);
- SetDlgItemText(hWnd, nIDDlgItem, header);
-}
-
-bool handle_button_click(WORD button_id)
-{
- // Is this something other than Send or Don't Send?
- if (button_id != IDOK
- && button_id != IDCANCEL)
- {
- return false;
- }
-
- // We're done with this dialog.
- gFirstDialog = FALSE;
-
- // Send the crash report if requested
- if (button_id == IDOK)
- {
- gSendLogs = TRUE;
- WCHAR wbuffer[20000];
- GetDlgItemText(gHwndReport, // handle to dialog box
- IDC_EDIT1, // control identifier
- wbuffer, // pointer to buffer for text
- 20000 // maximum size of string
- );
- std::string user_text(ll_convert_wide_to_string(wbuffer, CP_ACP));
- // Activate and show the window.
- ShowWindow(gHwndProgress, SW_SHOW);
- // Try doing this second to make the progress window go frontmost.
- ShowWindow(gHwndReport, SW_HIDE);
- ((LLCrashLoggerWindows*)LLCrashLogger::instance())->setUserText(user_text);
- ((LLCrashLoggerWindows*)LLCrashLogger::instance())->sendCrashLogs();
- }
- // Quit the app
- LLApp::setQuitting();
- return true;
-}
-
-
-LRESULT CALLBACK WndProc( HWND hwnd, UINT message, WPARAM wParam, LPARAM lParam )
-{
- switch( message )
- {
- case WM_CREATE:
- return 0;
-
- case WM_COMMAND:
- if( gFirstDialog )
- {
- WORD button_id = LOWORD(wParam);
- bool handled = handle_button_click(button_id);
- if (handled)
- {
- return 0;
- }
- }
- break;
-
- case WM_DESTROY:
- // Closing the window cancels
- LLApp::setQuitting();
- PostQuitMessage(0);
- return 0;
- }
-
- return DefWindowProc(hwnd, message, wParam, lParam);
-}
-
-
-LLCrashLoggerWindows::LLCrashLoggerWindows(void)
-{
- if (LLCrashLoggerWindows::sInstance==NULL)
- {
- sInstance = this;
- }
-}
-
-LLCrashLoggerWindows::~LLCrashLoggerWindows(void)
-{
- sInstance = NULL;
-}
-
-bool LLCrashLoggerWindows::getMessageWithTimeout(MSG *msg, UINT to)
-{
- bool res;
- UINT_PTR timerID = SetTimer(NULL, NULL, to, NULL);
- res = GetMessage(msg, NULL, 0, 0);
- KillTimer(NULL, timerID);
- if (!res)
- return false;
- if (msg->message == WM_TIMER && msg->hwnd == NULL && msg->wParam == 1)
- return false; //TIMEOUT! You could call SetLastError() or something...
- return true;
-}
-
-int LLCrashLoggerWindows::processingLoop() {
- const int millisecs=1000;
- int retries = 0;
- const int max_retries = 60;
-
- LL_DEBUGS("CRASHREPORT") << "Entering processing loop for OOP server" << LL_ENDL;
-
- LLSD options = getOptionData( LLApp::PRIORITY_COMMAND_LINE );
-
- MSG msg;
-
- bool result;
-
- while (1)
- {
- result = getMessageWithTimeout(&msg, millisecs);
- if ( result )
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
-
- if ( retries < max_retries ) //Wait up to 1 minute for the viewer to say hello.
- {
- if (mClientsConnected == 0)
- {
- LL_DEBUGS("CRASHREPORT") << "Waiting for client to connect." << LL_ENDL;
- ++retries;
- }
- else
- {
- LL_INFOS("CRASHREPORT") << "Client has connected!" << LL_ENDL;
- retries = max_retries;
- }
- }
- else
- {
- if (mClientsConnected == 0)
- {
- break;
- }
- if (!mKeyMaster.isProcessAlive(mPID, mProcName) )
- {
- break;
- }
- }
- }
-
- LL_INFOS() << "session ending.." << LL_ENDL;
-
- std::string per_run_dir = options["dumpdir"].asString();
- std::string per_run_file = per_run_dir + "\\SecondLife.log";
- std::string log_file = gDirUtilp->getExpandedFilename(LL_PATH_LOGS,"SecondLife.log");
-
- if (gDirUtilp->fileExists(per_run_dir))
- {
- LL_INFOS ("CRASHREPORT") << "Copying " << log_file << " to " << per_run_file << LL_ENDL;
- LLFile::copy(log_file, per_run_file);
- }
- return 0;
-}
-
-
-void LLCrashLoggerWindows::OnClientConnected(void* context,
- const google_breakpad::ClientInfo* client_info)
-{
- sInstance->mClientsConnected++;
- LL_INFOS("CRASHREPORT") << "Client connected. pid = " << client_info->pid() << " total clients " << sInstance->mClientsConnected << LL_ENDL;
-}
-
-void LLCrashLoggerWindows::OnClientExited(void* context,
- const google_breakpad::ClientInfo* client_info)
-{
- sInstance->mClientsConnected--;
- LL_INFOS("CRASHREPORT") << "Client disconnected. pid = " << client_info->pid() << " total clients " << sInstance->mClientsConnected << LL_ENDL;
-}
-
-
-void LLCrashLoggerWindows::OnClientDumpRequest(void* context,
- const google_breakpad::ClientInfo* client_info,
- const std::wstring* file_path)
-{
- if (!file_path)
- {
- LL_WARNS() << "dump with no file path" << LL_ENDL;
- return;
- }
- if (!client_info)
- {
- LL_WARNS() << "dump with no client info" << LL_ENDL;
- return;
- }
-
- LLCrashLoggerWindows* self = static_cast<LLCrashLoggerWindows*>(context);
- if (!self)
- {
- LL_WARNS() << "dump with no context" << LL_ENDL;
- return;
- }
-
- //DWORD pid = client_info->pid();
-}
-
-
-bool LLCrashLoggerWindows::initCrashServer()
-{
- //For Breakpad on Windows we need a full Out of Process service to get good data.
- //This routine starts up the service on a named pipe that the viewer will then
- //communicate with.
- using namespace google_breakpad;
-
- LLSD options = getOptionData( LLApp::PRIORITY_COMMAND_LINE );
- std::string dump_path = options["dumpdir"].asString();
- mClientsConnected = 0;
- mPID = options["pid"].asInteger();
- mProcName = options["procname"].asString();
-
- //Generate a quasi-uniq name for the named pipe. For our purposes
- //this is unique-enough with least hassle. Worst case for duplicate name
- //is a second instance of the viewer will not do crash reporting.
- std::wstring wpipe_name;
- wpipe_name = mCrashReportPipeStr + std::wstring(wstringize(mPID));
-
- std::wstring wdump_path(utf8str_to_utf16str(dump_path));
-
- //Pipe naming conventions: http://msdn.microsoft.com/en-us/library/aa365783%28v=vs.85%29.aspx
- mCrashHandler = new CrashGenerationServer( wpipe_name,
- NULL,
- &LLCrashLoggerWindows::OnClientConnected, this,
- /*NULL, NULL, */ &LLCrashLoggerWindows::OnClientDumpRequest, this,
- &LLCrashLoggerWindows::OnClientExited, this,
- NULL, NULL,
- true, &wdump_path);
-
- if (!mCrashHandler) {
- //Failed to start the crash server.
- LL_WARNS() << "Failed to init crash server." << LL_ENDL;
- return false;
- }
-
- // Start servicing clients.
- if (!mCrashHandler->Start()) {
- LL_WARNS() << "Failed to start crash server." << LL_ENDL;
- return false;
- }
-
- LL_INFOS("CRASHREPORT") << "Initialized OOP server with pipe named " << stringize(wpipe_name) << LL_ENDL;
- return true;
-}
-
-bool LLCrashLoggerWindows::init(void)
-{
- bool ok = LLCrashLogger::init();
- if(!ok) return false;
-
- initCrashServer();
-
- /*
- mbstowcs( gProductName, mProductName.c_str(), LL_ARRAY_SIZE(gProductName) );
- gProductName[ LL_ARRY_SIZE(gProductName) - 1 ] = 0;
- swprintf(gProductName, L"Second Life");
- */
-
- LL_INFOS() << "Loading dialogs" << LL_ENDL;
-
- // Initialize global strings
- LoadString(mhInst, IDS_APP_TITLE, szTitle, MAX_LOADSTRING);
- LoadString(mhInst, IDC_WIN_CRASH_LOGGER, szWindowClass, MAX_LOADSTRING);
-
- gCursorArrow = LoadCursor(NULL, IDC_ARROW);
- gCursorWait = LoadCursor(NULL, IDC_WAIT);
-
- // Register a window class that will be used by our dialogs
- WNDCLASS wndclass;
- wndclass.style = CS_HREDRAW | CS_VREDRAW;
- wndclass.lpfnWndProc = WndProc;
- wndclass.cbClsExtra = 0;
- wndclass.cbWndExtra = DLGWINDOWEXTRA; // Required, since this is used for dialogs!
- wndclass.hInstance = mhInst;
- wndclass.hIcon = LoadIcon(hInst, MAKEINTRESOURCE( IDI_WIN_CRASH_LOGGER ) );
- wndclass.hCursor = gCursorArrow;
- wndclass.hbrBackground = (HBRUSH) (COLOR_BTNFACE + 1);
- wndclass.lpszMenuName = NULL;
- wndclass.lpszClassName = szWindowClass;
- RegisterClass( &wndclass );
-
- return true;
-}
-
-void LLCrashLoggerWindows::gatherPlatformSpecificFiles()
-{
- updateApplication("Gathering hardware information. App may appear frozen.");
- // DX hardware probe blocks, so we can't cancel during it
- //Generate our dx_info.log file
- SetCursor(gCursorWait);
- // At this point we're responsive enough the user could click the close button
- SetCursor(gCursorArrow);
- //mDebugLog["DisplayDeviceInfo"] = gDXHardware.getDisplayInfo(); //Not initialized.
-}
-
-bool LLCrashLoggerWindows::frame()
-{
- LL_INFOS() << "CrashSubmitBehavior is " << mCrashBehavior << LL_ENDL;
-
- // Note: parent hwnd is 0 (the desktop). No dlg proc. See Petzold (5th ed) HexCalc example, Chapter 11, p529
- // win_crash_logger.rc has been edited by hand.
- // Dialogs defined with CLASS "WIN_CRASH_LOGGER" (must be same as szWindowClass)
- gProductName = mProductName;
- gHwndProgress = CreateDialog(hInst, MAKEINTRESOURCE(IDD_PROGRESS), 0, NULL);
- ProcessCaption(gHwndProgress);
- ShowWindow(gHwndProgress, SW_HIDE );
-
- if (mCrashBehavior == CRASH_BEHAVIOR_ALWAYS_SEND)
- {
- LL_INFOS() << "Showing crash report submit progress window." << LL_ENDL;
- //ShowWindow(gHwndProgress, SW_SHOW ); Maint-5707
- sendCrashLogs();
- }
- else if (mCrashBehavior == CRASH_BEHAVIOR_ASK)
- {
- gHwndReport = CreateDialog(hInst, MAKEINTRESOURCE(IDD_PREVREPORTBOX), 0, NULL);
- // Ignore result
- (void) SendDlgItemMessage(gHwndReport, IDC_CHECK_AUTO, BM_SETCHECK, 0, 0);
- // Include the product name in the caption and various dialog items.
- ProcessCaption(gHwndReport);
- ProcessDlgItemText(gHwndReport, IDC_STATIC_MSG);
-
- // Update the header to include whether or not we crashed on the last run.
- std::string headerStr;
- TCHAR header[MAX_STRING];
- if (mCrashInPreviousExec)
- {
- headerStr = llformat("%s appears to have crashed or frozen the last time it ran.", mProductName.c_str());
- }
- else
- {
- headerStr = llformat("%s appears to have crashed.", mProductName.c_str());
- }
- ConvertLPCSTRToLPWSTR(headerStr.c_str(), header);
- SetDlgItemText(gHwndReport, IDC_STATIC_HEADER, header);
- ShowWindow(gHwndReport, SW_SHOW );
-
- MSG msg;
- memset(&msg, 0, sizeof(msg));
- while (!LLApp::isExiting() && GetMessage(&msg, NULL, 0, 0))
- {
- TranslateMessage(&msg);
- DispatchMessage(&msg);
- }
- return true; // msg.wParam;
- }
- else
- {
- LL_WARNS() << "Unknown crash behavior " << mCrashBehavior << LL_ENDL;
- return true; // 1;
- }
- return true; // 0;
-}
-
-void LLCrashLoggerWindows::updateApplication(const std::string& message)
-{
- LLCrashLogger::updateApplication(message);
- if(!message.empty()) show_progress(message);
- update_messages();
-}
-
-bool LLCrashLoggerWindows::cleanup()
-{
- if(gSendLogs)
- {
- if(mSentCrashLogs) show_progress("Done");
- else show_progress("Could not connect to servers, logs not sent");
- sleep_and_pump_messages(3);
- }
- PostQuitMessage(0);
- commonCleanup();
- mKeyMaster.releaseMaster();
- return true;
-}
-
diff --git a/indra/win_crash_logger/llcrashloggerwindows.h b/indra/win_crash_logger/llcrashloggerwindows.h
deleted file mode 100644
index f89b8708dc..0000000000
--- a/indra/win_crash_logger/llcrashloggerwindows.h
+++ /dev/null
@@ -1,86 +0,0 @@
-/**
-* @file llcrashloggerwindows.h
-* @brief Windows crash logger definition
-*
-* $LicenseInfo:firstyear=2003&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-#ifndef LLCRASHLOGGERWINDOWS_H
-#define LLCRASHLOGGERWINDOWS_H
-
-#include "llcrashlogger.h"
-#include "windows.h"
-#include "llstring.h"
-
-class LLSD;
-
-namespace google_breakpad {
- class CrashGenerationServer;
- class ClientInfo;
-}
-
-class LLCrashLoggerWindows : public LLCrashLogger
-{
-public:
- LLCrashLoggerWindows(void);
- ~LLCrashLoggerWindows(void);
- static LLCrashLoggerWindows* sInstance;
-
- virtual bool init();
- virtual bool frame();
- virtual void updateApplication(const std::string& message = LLStringUtil::null);
- virtual bool cleanup();
- virtual void gatherPlatformSpecificFiles();
- void setHandle(HINSTANCE hInst) { mhInst = hInst; }
- int clients_connected() const {
- return mClientsConnected;
- }
- bool getMessageWithTimeout(MSG *msg, UINT to);
-
- // Starts the processing loop. This function does not return unless the
- // user is logging off or the user closes the crash service window. The
- // return value is a good number to pass in ExitProcess().
- int processingLoop();
-private:
- void ProcessDlgItemText(HWND hWnd, int nIDDlgItem);
- void ProcessCaption(HWND hWnd);
- bool initCrashServer();
- google_breakpad::CrashGenerationServer* mCrashHandler;
- static void OnClientConnected(void* context,
- const google_breakpad::ClientInfo* client_info);
-
- static void OnClientDumpRequest(
- void* context,
- const google_breakpad::ClientInfo* client_info,
- const std::wstring* file_path);
-
- static void OnClientExited(void* context,
- const google_breakpad::ClientInfo* client_info);
- int mClientsConnected;
- int mPID;
- std::string mProcName;
-
- HINSTANCE mhInst;
-
-};
-
-#endif
diff --git a/indra/win_crash_logger/resource.h b/indra/win_crash_logger/resource.h
deleted file mode 100644
index 37a387275e..0000000000
--- a/indra/win_crash_logger/resource.h
+++ /dev/null
@@ -1,63 +0,0 @@
-/**
-* @file resource.h
-* @brief Windows crash logger windows resources
-*
-* $LicenseInfo:firstyear=2003&license=viewerlgpl$
-* Second Life Viewer Source Code
-* Copyright (C) 2010, Linden Research, Inc.
-*
-* This library is free software; you can redistribute it and/or
-* modify it under the terms of the GNU Lesser General Public
-* License as published by the Free Software Foundation;
-* version 2.1 of the License only.
-*
-* This library is distributed in the hope that it will be useful,
-* but WITHOUT ANY WARRANTY; without even the implied warranty of
-* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-* Lesser General Public License for more details.
-*
-* You should have received a copy of the GNU Lesser General Public
-* License along with this library; if not, write to the Free Software
-* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
-*
-* Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
-* $/LicenseInfo$
-*/
-
-//{{NO_DEPENDENCIES}}
-// Microsoft Visual C++ generated include file.
-// Used by win_crash_logger.rc
-//
-#define IDC_MYICON 2
-#define IDD_REPORT 9
-#define IDD_WIN_CRASH_LOGGER_DIALOG 102
-#define IDD_ABOUTBOX 103
-#define IDS_APP_TITLE 103
-#define IDM_ABOUT 104
-#define IDM_EXIT 105
-#define IDS_HELLO 106
-#define IDI_WIN_CRASH_LOGGER 107
-#define IDI_SMALL 108
-#define IDC_WIN_CRASH_LOGGER 109
-#define IDR_MAINFRAME 128
-#define IDD_PROGRESS 129
-#define IDD_PREVREPORTBOX 130
-#define IDC_EDIT1 1000
-#define IDC_LOG 1004
-#define IDC_CHECK_AUTO 1006
-#define IDC_STATIC_HEADER 1007
-#define IDC_STATIC_WHATINFO 1008
-#define IDC_STATIC_MOTIVATION 1009
-#define IDC_STATIC_MSG 1010
-#define IDC_STATIC -1
-
-// Next default values for new objects
-//
-#ifdef APSTUDIO_INVOKED
-#ifndef APSTUDIO_READONLY_SYMBOLS
-#define _APS_NEXT_RESOURCE_VALUE 131
-#define _APS_NEXT_COMMAND_VALUE 32771
-#define _APS_NEXT_CONTROL_VALUE 1011
-#define _APS_NEXT_SYMED_VALUE 110
-#endif
-#endif
diff --git a/indra/win_crash_logger/win_crash_logger.cpp b/indra/win_crash_logger/win_crash_logger.cpp
deleted file mode 100644
index 58746eba02..0000000000
--- a/indra/win_crash_logger/win_crash_logger.cpp
+++ /dev/null
@@ -1,70 +0,0 @@
-/**
- * @file win_crash_logger.cpp
- * @brief Windows crash logger implementation
- *
- * $LicenseInfo:firstyear=2003&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-#include "linden_common.h"
-#include "stdafx.h"
-#include <stdlib.h>
-#include "llcrashloggerwindows.h"
-
-#ifdef _UNICODE
-int APIENTRY wWinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPWSTR lpCmdLine,
- int nCmdShow)
-#else
-int APIENTRY WinMain(HINSTANCE hInstance,
- HINSTANCE hPrevInstance,
- LPSTR lpCmdLine,
- int nCmdShow)
-#endif //_UNICODE
-{
- LL_INFOS() << "Starting crash reporter with args" << &lpCmdLine << LL_ENDL;
- LLCrashLoggerWindows app;
- app.setHandle(hInstance);
-#ifdef _UNICODE
- app.parseCommandOptions(__argc, __wargv);
-#else
- app.parseCommandOptions(__argc, __argv);
-#endif //_UNICODE
-
- LLSD options = LLApp::instance()->getOptionData(
- LLApp::PRIORITY_COMMAND_LINE);
- if (!(options.has("pid") && options.has("dumpdir")))
- {
- LL_WARNS() << "Insufficient parameters to crash report." << LL_ENDL;
- }
- if (! app.init())
- {
- LL_WARNS() << "Unable to initialize application." << LL_ENDL;
- return -1;
- }
-
- app.processingLoop();
- app.frame();
- app.cleanup();
- LL_INFOS() << "Crash reporter finished normally." << LL_ENDL;
- return 0;
-}
diff --git a/indra/win_crash_logger/win_crash_logger.h b/indra/win_crash_logger/win_crash_logger.h
deleted file mode 100644
index 2cc2cf3dcf..0000000000
--- a/indra/win_crash_logger/win_crash_logger.h
+++ /dev/null
@@ -1,38 +0,0 @@
-/**
- * @file win_crash_logger.h
- * @brief Windows crash logger project includes
- *
- * $LicenseInfo:firstyear=2003&license=viewerlgpl$
- * Second Life Viewer Source Code
- * Copyright (C) 2010, Linden Research, Inc.
- *
- * This library is free software; you can redistribute it and/or
- * modify it under the terms of the GNU Lesser General Public
- * License as published by the Free Software Foundation;
- * version 2.1 of the License only.
- *
- * This library is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- * Lesser General Public License for more details.
- *
- * You should have received a copy of the GNU Lesser General Public
- * License along with this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Linden Research, Inc., 945 Battery Street, San Francisco, CA 94111 USA
- * $/LicenseInfo$
- */
-
-
-#if !defined(AFX_WIN_CRASH_LOGGER_H__79802F4B_7C37_4F63_A2BB_0768788C3A27__INCLUDED_)
-#define AFX_WIN_CRASH_LOGGER_H__79802F4B_7C37_4F63_A2BB_0768788C3A27__INCLUDED_
-
-#if _MSC_VER > 1000
-#pragma once
-#endif // _MSC_VER > 1000
-
-#include "resource.h"
-
-
-#endif // !defined(AFX_WIN_CRASH_LOGGER_H__79802F4B_7C37_4F63_A2BB_0768788C3A27__INCLUDED_)
diff --git a/indra/win_crash_logger/win_crash_logger.ico b/indra/win_crash_logger/win_crash_logger.ico
deleted file mode 100644
index 386883523b..0000000000
--- a/indra/win_crash_logger/win_crash_logger.ico
+++ /dev/null
Binary files differ
diff --git a/indra/win_crash_logger/win_crash_logger.rc b/indra/win_crash_logger/win_crash_logger.rc
deleted file mode 100755
index 2819722f63..0000000000
--- a/indra/win_crash_logger/win_crash_logger.rc
+++ /dev/null
@@ -1,188 +0,0 @@
-// Microsoft Visual C++ generated resource script.
-//
-#include "resource.h"
-
-#define APSTUDIO_READONLY_SYMBOLS
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 2 resource.
-//
-#define APSTUDIO_HIDDEN_SYMBOLS
-#include "windows.h"
-#undef APSTUDIO_HIDDEN_SYMBOLS
-#include "resource.h"
-
-/////////////////////////////////////////////////////////////////////////////
-#undef APSTUDIO_READONLY_SYMBOLS
-
-/////////////////////////////////////////////////////////////////////////////
-// English (U.S.) resources
-
-#if !defined(AFX_RESOURCE_DLL) || defined(AFX_TARG_ENU)
-#ifdef _WIN32
-LANGUAGE LANG_ENGLISH, SUBLANG_ENGLISH_US
-#pragma code_page(1252)
-#endif //_WIN32
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Icon
-//
-
-// Icon with lowest ID value placed first to ensure application icon
-// remains consistent on all systems.
-IDI_WIN_CRASH_LOGGER ICON "ll_icon.ico"
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Menu
-//
-
-IDC_WIN_CRASH_LOGGER MENU
-BEGIN
- POPUP "&File"
- BEGIN
- MENUITEM "E&xit", IDM_EXIT
- END
- POPUP "&Help"
- BEGIN
- MENUITEM "&About ...", IDM_ABOUT
- END
-END
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// Dialog
-//
-
-IDD_PROGRESS DIALOGEX 100, 100, 234, 33
-STYLE DS_SETFONT | DS_SETFOREGROUND | WS_CAPTION | WS_SYSMENU
-CAPTION "%s Crash Logger"
-CLASS "WIN_CRASH_LOGGER"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
-BEGIN
- LTEXT "Static",IDC_LOG,7,7,220,8
-END
-
-IDD_REPORT DIALOGEX 100, 100, 297, 125
-STYLE DS_SETFONT | DS_SETFOREGROUND | WS_CAPTION | WS_SYSMENU
-CAPTION "%s Crash Logger"
-CLASS "WIN_CRASH_LOGGER"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
-BEGIN
- DEFPUSHBUTTON "Send",IDOK,198,104,45,15,WS_GROUP
- PUSHBUTTON "Don't Send",IDCANCEL,247,104,45,15,WS_GROUP
- LTEXT "%s appears to have crashed.",IDC_STATIC_HEADER,4,4,288,14
- LTEXT "This crash reporter collects information about your computer's hardware, operating system, and some %s logs, which are used for debugging purposes only.",IDC_STATIC_WHATINFO,4,23,288,19,NOT WS_GROUP
- CONTROL "Remember this choice",IDC_CHECK_AUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,4,106,89,13
- LTEXT "Sending crash reports is the best way to help us improve the quality of %s.",IDC_STATIC_MOTIVATION,4,43,288,8
- LTEXT "If you continue to experience this problem, please try:",IDC_STATIC,4,57,251,8
- LTEXT "- Contacting support by visiting http://www.secondlife.com/support",IDC_STATIC,4,67,231,8
-END
-
-IDD_PREVREPORTBOX DIALOGEX 100, 100, 232, 213
-STYLE DS_SETFONT | DS_SETFOREGROUND | WS_CAPTION | WS_SYSMENU
-CAPTION "%s Crash Logger"
-CLASS "WIN_CRASH_LOGGER"
-FONT 8, "MS Sans Serif", 0, 0, 0x0
-BEGIN
- DEFPUSHBUTTON "Send Report",IDOK,131,193,45,15,WS_GROUP
- EDITTEXT IDC_EDIT1,3,100,223,89,ES_MULTILINE | ES_WANTRETURN | WS_VSCROLL
- PUSHBUTTON "Don't Send",IDCANCEL,181,193,45,15,WS_GROUP
- LTEXT "%s appears to have crashed or frozen the last time it ran.",IDC_STATIC_HEADER,4,4,214,8
- LTEXT "This crash reporter collects information about your computer's",IDC_STATIC,4,17,201,8
- LTEXT "hardware configuration, operating system, and some %s",IDC_STATIC_MSG,4,25,212,8
- LTEXT "logs, all of which are used for debugging purposes only.",IDC_STATIC,4,33,210,8
- LTEXT "In the space below, please briefly describe what you were doing",IDC_STATIC,3,48,208,8
- LTEXT "or trying to do just prior to the crash.",IDC_STATIC,3,56,204,8
- LTEXT "If you don't wish to send Linden Lab a crash report, press Don't Send.",IDC_STATIC,3,90,223,8
- LTEXT "This report is NOT read by customer support. If you have billing or",IDC_STATIC,3,68,208,8
- LTEXT "other questions, please go to: www.secondlife.com/support",IDC_STATIC,3,76,206,8
- CONTROL "Remember this choice",IDC_CHECK_AUTO,"Button",BS_AUTOCHECKBOX | WS_TABSTOP,3,193,89,13
-END
-
-
-#ifdef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// TEXTINCLUDE
-//
-
-2 TEXTINCLUDE
-BEGIN
- "#define APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""windows.h""\r\n"
- "#undef APSTUDIO_HIDDEN_SYMBOLS\r\n"
- "#include ""resource.h""\r\n"
- "\0"
-END
-
-3 TEXTINCLUDE
-BEGIN
- "\r\n"
- "\0"
-END
-
-1 TEXTINCLUDE
-BEGIN
- "resource.h\0"
-END
-
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// DESIGNINFO
-//
-
-#ifdef APSTUDIO_INVOKED
-GUIDELINES DESIGNINFO
-BEGIN
- IDD_PROGRESS, DIALOG
- BEGIN
- LEFTMARGIN, 7
- RIGHTMARGIN, 227
- TOPMARGIN, 7
- BOTTOMMARGIN, 26
- END
-
- IDD_REPORT, DIALOG
- BEGIN
- RIGHTMARGIN, 292
- VERTGUIDE, 4
- BOTTOMMARGIN, 119
- HORZGUIDE, 4
- END
-END
-#endif // APSTUDIO_INVOKED
-
-
-/////////////////////////////////////////////////////////////////////////////
-//
-// String Table
-//
-
-STRINGTABLE
-BEGIN
- IDS_APP_TITLE "win_crash_logger"
- IDS_HELLO "Hello World!"
- IDC_WIN_CRASH_LOGGER "WIN_CRASH_LOGGER"
-END
-
-#endif // English (U.S.) resources
-/////////////////////////////////////////////////////////////////////////////
-
-
-
-#ifndef APSTUDIO_INVOKED
-/////////////////////////////////////////////////////////////////////////////
-//
-// Generated from the TEXTINCLUDE 3 resource.
-//
-
-
-/////////////////////////////////////////////////////////////////////////////
-#endif // not APSTUDIO_INVOKED
-