diff options
| author | Nat Goodspeed <nat@lindenlab.com> | 2018-06-28 12:39:42 -0400 | 
|---|---|---|
| committer | Nat Goodspeed <nat@lindenlab.com> | 2018-06-28 12:39:42 -0400 | 
| commit | f6e7893a6e34190e8080d289a5f89d7f9c47d583 (patch) | |
| tree | aa509218b6fa486a6f41101703e7796b2ed5e8ad | |
| parent | e766d9e697eae29b3f82106603843efbeb7aa01b (diff) | |
MAINT-8797: Resurrect BugSplat crash reporting on Windows.
The Breakpad symbol-file upload in the viewer's build.sh was failing on
BugSplat builds since we weren't generating Breakpad symbol files. That upload
was conditional on RELEASE_CRASH_REPORTING, so my first approach was to set
RELEASE_CRASH_REPORTING=OFF for BugSplat builds. Unfortunately that symbol
also propagates down into C++ compiles, and in llappviewerwin32.cpp, both
Breakpad and BugSplat crash reporting is conditional on it. So that change
inadvertently turned off the C++ logic to engage BugSplat.
Stop forcing RELEASE_CRASH_REPORTING=OFF for BugSplat builds. Instead, make
the Breakpad symbol-file upload check the BUGSPLAT_DB variable as well.
Add #pragma messages to llappviewerwin32.cpp so we can detect whether it's
being built for Breakpad or BugSplat or neither.
| -rwxr-xr-x | build.sh | 6 | ||||
| -rw-r--r-- | indra/newview/llappviewerwin32.cpp | 6 | 
2 files changed, 7 insertions, 5 deletions
@@ -114,8 +114,6 @@ pre_build()           if [ -n "${BUGSPLAT_DB:-}" ]           then echo export BUGSPLAT_DB                export BUGSPLAT_DB -              echo RELEASE_CRASH_REPORTING=OFF -              RELEASE_CRASH_REPORTING=OFF           fi      fi      set -x @@ -428,7 +426,9 @@ then        if [ "$last_built_variant" = "Release" ]        then            # nat 2016-12-22: without RELEASE_CRASH_REPORTING, we have no symbol file. -          if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" ] +          # Likewise, BUGSPLAT_DB suppresses generating the symbol file. +          if [ "${RELEASE_CRASH_REPORTING:-}" != "OFF" \ +               -a -z "${BUGSPLAT_DB:-}" ]            then                # Upload crash reporter file                # These names must match the set of VIEWER_SYMBOL_FILE in indra/newview/CMakeLists.txt diff --git a/indra/newview/llappviewerwin32.cpp b/indra/newview/llappviewerwin32.cpp index 3efc94d7b5..247b94db3e 100644 --- a/indra/newview/llappviewerwin32.cpp +++ b/indra/newview/llappviewerwin32.cpp @@ -559,11 +559,13 @@ bool LLAppViewerWin32::init()  #if LL_SEND_CRASH_REPORTS  #if ! defined(LL_BUGSPLAT) +#pragma message("Building without BugSplat")  	LLAppViewer* pApp = LLAppViewer::instance();  	pApp->initCrashReporting();  #else // LL_BUGSPLAT +#pragma message("Building with BugSplat")  	std::string build_data_fname(  		gDirUtilp->getExpandedFilename(LL_PATH_EXECUTABLE, "build_data.json")); @@ -579,7 +581,7 @@ bool LLAppViewerWin32::init()  		Json::Value build_data;  		if (! reader.parse(inf, build_data, false)) // don't collect comments  		{ -			// gah, the typo is baked into their API +			// gah, the typo is baked into Json::Reader API  			LL_WARNS() << "Can't initialize BugSplat, can't parse '" << build_data_fname  					   << "': " << reader.getFormatedErrorMessages() << LL_ENDL;  		} @@ -609,7 +611,7 @@ bool LLAppViewerWin32::init()  				// engage stringize() overload that converts from wstring  				LL_INFOS() << "Engaged BugSplat(" << LL_TO_STRING(LL_VIEWER_CHANNEL) -						   << stringize(version_string) << ')' << LL_ENDL; +						   << ' ' << stringize(version_string) << ')' << LL_ENDL;  			} // got BugSplat_DB  		} // parsed build_data.json  	} // opened build_data.json  | 
