After reforking the post-viewer64, viewer-release repository, I pulled in all the changes from my viewer64 based viewe64-bugsplat repository. This repository is the canonical one going forwards
commit
bdd7bdf390
|
|
@ -225,6 +225,48 @@
|
|||
<key>version</key>
|
||||
<string>1.57</string>
|
||||
</map>
|
||||
<key>bugsplat</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
<string>Copyright 2003-2017, BugSplat</string>
|
||||
<key>description</key>
|
||||
<string>Bugsplat crash reporting package</string>
|
||||
<key>license</key>
|
||||
<string>Proprietary</string>
|
||||
<key>license_file</key>
|
||||
<string>LICENSES/BUGSPLAT_LICENSE.txt</string>
|
||||
<key>name</key>
|
||||
<string>bugsplat</string>
|
||||
<key>platforms</key>
|
||||
<map>
|
||||
<key>windows</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>2710e051eb1b12dba574f470834baa9e</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/9992/49191/bugsplat-3.5.0.5-windows-509980.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows</string>
|
||||
</map>
|
||||
<key>windows64</key>
|
||||
<map>
|
||||
<key>archive</key>
|
||||
<map>
|
||||
<key>hash</key>
|
||||
<string>f2bb37c69f35522e49aae547d3408fd8</string>
|
||||
<key>url</key>
|
||||
<string>http://s3-proxy.lindenlab.com/private-builds-secondlife-com/ct2/9991/49185/bugsplat-3.5.0.5-windows64-509980.tar.bz2</string>
|
||||
</map>
|
||||
<key>name</key>
|
||||
<string>windows64</string>
|
||||
</map>
|
||||
</map>
|
||||
<key>version</key>
|
||||
<string>3.5.0.5</string>
|
||||
</map>
|
||||
<key>chardet</key>
|
||||
<map>
|
||||
<key>copyright</key>
|
||||
|
|
|
|||
|
|
@ -42,6 +42,18 @@ if(WINDOWS)
|
|||
libhunspell.dll
|
||||
)
|
||||
|
||||
# Filenames are different for 32/64 bit BugSplat file and we don't
|
||||
# have any control over them so need to branch.
|
||||
if(ADDRESS_SIZE EQUAL 32)
|
||||
set(release_files ${release_files} BugSplat.dll)
|
||||
set(release_files ${release_files} BugSplatRc.dll)
|
||||
set(release_files ${release_files} BsSndRpt.exe)
|
||||
else(ADDRESS_SIZE EQUAL 32)
|
||||
set(release_files ${release_files} BugSplat64.dll)
|
||||
set(release_files ${release_files} BugSplatRc64.dll)
|
||||
set(release_files ${release_files} BsSndRpt64.exe)
|
||||
endif(ADDRESS_SIZE EQUAL 32)
|
||||
|
||||
if (FMODEX)
|
||||
|
||||
if(ADDRESS_SIZE EQUAL 32)
|
||||
|
|
|
|||
|
|
@ -0,0 +1,20 @@
|
|||
include(Prebuilt)
|
||||
|
||||
set(BUGSPLAT_FIND_QUIETLY ON)
|
||||
set(BUGSPLAT_FIND_REQUIRED ON)
|
||||
|
||||
if (USESYSTEMLIBS)
|
||||
include(FindBUGSPLAT)
|
||||
else (USESYSTEMLIBS)
|
||||
use_prebuilt_binary(bugsplat)
|
||||
if (WINDOWS)
|
||||
set(BUGSPLAT_LIBRARIES
|
||||
${ARCH_PREBUILT_DIRS_RELEASE}/bugsplat.lib
|
||||
)
|
||||
elseif (DARWIN)
|
||||
|
||||
else (WINDOWS)
|
||||
|
||||
endif (WINDOWS)
|
||||
set(BUGSPLAT_INCLUDE_DIR ${LIBS_PREBUILT_DIR}/include/bugsplat)
|
||||
endif (USESYSTEMLIBS)
|
||||
|
|
@ -13,6 +13,8 @@ include(GoogleBreakpad)
|
|||
include(Copy3rdPartyLibs)
|
||||
include(ZLIB)
|
||||
include(URIPARSER)
|
||||
include(BUGSPLAT)
|
||||
include(BuildVersion)
|
||||
|
||||
include_directories(
|
||||
${EXPAT_INCLUDE_DIRS}
|
||||
|
|
@ -21,6 +23,7 @@ include_directories(
|
|||
${ZLIB_INCLUDE_DIRS}
|
||||
${BREAKPAD_INCLUDE_DIRECTORIES}
|
||||
${URIPARSER_INCLUDE_DIRS}
|
||||
${BUGSPLAT_INCLUDE_DIR}
|
||||
)
|
||||
|
||||
# add_executable(lltreeiterators lltreeiterators.cpp)
|
||||
|
|
@ -253,7 +256,14 @@ set(llcommon_HEADER_FILES
|
|||
)
|
||||
|
||||
set_source_files_properties(${llcommon_HEADER_FILES}
|
||||
PROPERTIES HEADER_FILE_ONLY TRUE)
|
||||
PROPERTIES HEADER_FILE_ONLY TRUE
|
||||
)
|
||||
|
||||
# bring in version information for BugSplat crash reporting
|
||||
set_source_files_properties(${llcommon_SOURCE_FILES}
|
||||
PROPERTIES
|
||||
COMPILE_DEFINITIONS "${VIEWER_CHANNEL_VERSION_DEFINES}" # see BuildVersion.cmake
|
||||
)
|
||||
|
||||
list(APPEND llcommon_SOURCE_FILES ${llcommon_HEADER_FILES})
|
||||
|
||||
|
|
@ -291,6 +301,7 @@ target_link_libraries(
|
|||
${BOOST_SYSTEM_LIBRARY}
|
||||
${GOOGLE_PERFTOOLS_LIBRARIES}
|
||||
${URIPARSER_LIBRARIES}
|
||||
${BUGSPLAT_LIBRARIES}
|
||||
)
|
||||
|
||||
if (DARWIN)
|
||||
|
|
|
|||
|
|
@ -49,6 +49,20 @@
|
|||
#include "google_breakpad/exception_handler.h"
|
||||
#include "stringize.h"
|
||||
#include "llcleanup.h"
|
||||
#include "BugSplat.h"
|
||||
|
||||
// TESTING ONLY - REMOVE FOR PRODUCTION
|
||||
// (Want to only invoke BugSplat crash reporting in the same way we did for Breakpad - for Release viewers
|
||||
// but need to test here in a ReleaseWithDebugInfo environment)
|
||||
#if BUGSPLAT_ENABLED
|
||||
#define LL_SEND_CRASH_REPORTS 1
|
||||
#endif
|
||||
|
||||
// BugSplat crash reporting tool - http://bugsplat.com
|
||||
#if BUGSPLAT_ENABLED
|
||||
bool BugSplatExceptionCallback(unsigned int nCode, void* lpVal1, void* lpVal2);
|
||||
MiniDmpSender *gBugSplatSender;
|
||||
#endif
|
||||
|
||||
//
|
||||
// Signal handling
|
||||
|
|
@ -385,6 +399,26 @@ void EnableCrashingOnCrashes()
|
|||
}
|
||||
#endif
|
||||
|
||||
#if BUGSPLAT_ENABLED
|
||||
bool BugSplatExceptionCallback(unsigned int nCode, void* lpVal1, void* lpVal2)
|
||||
{
|
||||
switch (nCode)
|
||||
{
|
||||
case MDSCB_EXCEPTIONCODE:
|
||||
{
|
||||
// send the main viewer log file (Clearly a temporary hack since we don't have access to the gDir*** set of functions in newview
|
||||
const std::string appdata = std::string(getenv("APPDATA"));
|
||||
const std::string logfile = appdata + "\\SecondLife\\logs\\Secondlife.log";
|
||||
const std::wstring wide_logfile(logfile.begin(), logfile.end());
|
||||
gBugSplatSender->sendAdditionalFile((const __wchar_t *)wide_logfile.c_str());
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
#endif
|
||||
|
||||
void LLApp::setupErrorHandling(bool second_instance)
|
||||
{
|
||||
// Error handling is done by starting up an error handling thread, which just sleeps and
|
||||
|
|
@ -393,6 +427,25 @@ void LLApp::setupErrorHandling(bool second_instance)
|
|||
#if LL_WINDOWS
|
||||
|
||||
#if LL_SEND_CRASH_REPORTS
|
||||
|
||||
#if BUGSPLAT_ENABLED
|
||||
// TODOCP: populate these fields correctly
|
||||
static const wchar_t *bugdb_name = L"second_life_callum_test";
|
||||
|
||||
// build (painfully) the app/channel name
|
||||
#define stringize_inner(x) L#x
|
||||
#define stringize_outer(x) stringize_inner(x)
|
||||
std::wstring app_name(stringize_outer(LL_VIEWER_CHANNEL));
|
||||
|
||||
// build in real app version now we leveraged CMake to build in BuildVersion.cmake into LLCommon
|
||||
wchar_t version_string[MAX_STRING];
|
||||
wsprintf(version_string, L"%d.%d.%d.%d", LL_VIEWER_VERSION_MAJOR, LL_VIEWER_VERSION_MINOR, LL_VIEWER_VERSION_PATCH, LL_VIEWER_VERSION_BUILD);
|
||||
|
||||
gBugSplatSender = new MiniDmpSender((const __wchar_t *)bugdb_name, (const __wchar_t *)app_name.c_str(), (const __wchar_t *)version_string, NULL);
|
||||
|
||||
gBugSplatSender->setCallback(BugSplatExceptionCallback);
|
||||
#else
|
||||
|
||||
EnableCrashingOnCrashes();
|
||||
|
||||
// This sets a callback to handle w32 signals to the console window.
|
||||
|
|
@ -454,8 +507,9 @@ void LLApp::setupErrorHandling(bool second_instance)
|
|||
mExceptionHandler->set_handle_debug_exceptions(true);
|
||||
}
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
#endif // BUGSPLAT_ENABLED
|
||||
#endif // LL_SEND_CRASH_REPORTS
|
||||
#else // not LL_WINDOWS
|
||||
//
|
||||
// Start up signal handling.
|
||||
//
|
||||
|
|
@ -516,7 +570,7 @@ void LLApp::setupErrorHandling(bool second_instance)
|
|||
}
|
||||
#endif
|
||||
|
||||
#endif
|
||||
#endif // LL_WINDOWS
|
||||
startErrorThread();
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -30,6 +30,7 @@
|
|||
#include <map>
|
||||
#include "llrun.h"
|
||||
#include "llsd.h"
|
||||
|
||||
// Forward declarations
|
||||
template <typename Type> class LLAtomic32;
|
||||
typedef LLAtomic32<U32> LLAtomicU32;
|
||||
|
|
@ -39,6 +40,14 @@ class LLLiveFile;
|
|||
#include <signal.h>
|
||||
#endif
|
||||
|
||||
// first version of Bugsplat (http://bugsplat.com) crash reporting tool
|
||||
// is only supported on Windows - macOS to follow.
|
||||
#define BUGSPLAT_ENABLED LL_WINDOWS
|
||||
|
||||
#if BUGSPLAT_ENABLED
|
||||
class __declspec(dllexport) MiniDmpSender;
|
||||
#endif
|
||||
|
||||
typedef void (*LLAppErrorHandler)();
|
||||
|
||||
#if !LL_WINDOWS
|
||||
|
|
@ -316,7 +325,6 @@ private:
|
|||
|
||||
google_breakpad::ExceptionHandler * mExceptionHandler;
|
||||
|
||||
|
||||
#if !LL_WINDOWS
|
||||
friend void default_unix_signal_handler(int signum, siginfo_t *info, void *);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -578,6 +578,16 @@ class WindowsManifest(ViewerManifest):
|
|||
# Hunspell
|
||||
self.path("libhunspell.dll")
|
||||
|
||||
# BugSplat
|
||||
if(self.address_size == 64):
|
||||
self.path("BsSndRpt64.exe")
|
||||
self.path("BugSplat64.dll")
|
||||
self.path("BugSplatRc64.dll")
|
||||
else:
|
||||
self.path("BsSndRpt.exe")
|
||||
self.path("BugSplat.dll")
|
||||
self.path("BugSplatRc.dll")
|
||||
|
||||
# For google-perftools tcmalloc allocator.
|
||||
try:
|
||||
if self.args['configuration'].lower() == 'debug':
|
||||
|
|
@ -587,7 +597,6 @@ class WindowsManifest(ViewerManifest):
|
|||
except:
|
||||
print "Skipping libtcmalloc_minimal.dll"
|
||||
|
||||
|
||||
self.path(src="licenses-win32.txt", dst="licenses.txt")
|
||||
self.path("featuretable.txt")
|
||||
self.path("ca-bundle.crt")
|
||||
|
|
@ -689,10 +698,10 @@ class WindowsManifest(ViewerManifest):
|
|||
self.path("zh-CN.pak")
|
||||
self.path("zh-TW.pak")
|
||||
|
||||
with self.prefix(src=os.path.join(pkgdir, 'bin', 'release'), dst="llplugin"):
|
||||
self.path("libvlc.dll")
|
||||
self.path("libvlccore.dll")
|
||||
self.path("plugins/")
|
||||
with self.prefix(src=os.path.join(pkgdir, 'bin', 'release'), dst="llplugin"):
|
||||
self.path("libvlc.dll")
|
||||
self.path("libvlccore.dll")
|
||||
self.path("plugins/")
|
||||
|
||||
# pull in the crash logger and updater from other projects
|
||||
# tag:"crash-logger" here as a cue to the exporter
|
||||
|
|
|
|||
Loading…
Reference in New Issue