Commit Graph

158 Commits (0f121d042da4be5b28f60c4eba7a6325fda2d588)

Author SHA1 Message Date
Ansariel 0f121d042d Merge viewer-bugsplat 2018-07-27 11:19:42 +02:00
Nat Goodspeed 234ca77f19 DRTVWR-447: Revert BugSplat diagnostic logging; add platform tag. 2018-07-14 08:52:58 -04:00
Nat Goodspeed 3888d1862a DRTVWR-447: For want of a 'const', the build was lost. 2018-07-12 16:07:06 -04:00
Nat Goodspeed b883ffaa75 DRTVWR-447: More diagnostic logging for BugSplat metadata strings. 2018-07-12 14:45:14 -04:00
Nat Goodspeed c7616af624 DRTVWR-447: Diagnostically try naively widening BugSplat metadata. 2018-07-11 21:52:03 -04:00
Nat Goodspeed 869d2f1fb2 DRTVWR-447: Fix silly typos 2018-07-11 18:26:27 -04:00
Nat Goodspeed 66d083967e DRTVWR-447: Add more diagnostic logging to Windows BugSplat crash. 2018-07-11 16:01:48 -04:00
Nat Goodspeed 62eecd87a5 SL-932: Attach user's settings.xml file to Windows crash reports.
It is not obvious whether the BugsplatMac attachment API even supports
multiple file attachments. I've contacted BugSplat support.
2018-07-10 17:47:00 -04:00
Nat Goodspeed cd52724ef8 DRTVWR-447: Suppress BugSplat UI; auto-fill certain BugSplat data.
Direct BugSplat to send crash reports without prompting, on both Windows and
Mac.

Add a mechanism by which code called after LL_ERRS() can retrieve the fatal
log message string. (How did the crash logger extract that for Linden crash
logging?)

Add that fatal message to crash reports on Windows. But as BugsplatMac is
engaged only on the run _after_ the crash, we no longer have that message in
memory.

Also add user name and region location to Windows crash reports. On Mac, (a)
we don't have the information from the previous run and (b) BugsplatMac
doesn't provide an API to attach that information to the crash report.

Add Mac logging to indicate the success or failure of sending the crash
report. Add Windows logging to indicate we're about to send.
2018-06-28 21:49:07 -04:00
Nat Goodspeed f6e7893a6e 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.
2018-06-28 12:39:42 -04:00
Nat Goodspeed bb757b937c SL-820: gDirUtilp is never nullptr.
It might point to an uninitialized LLDir, but that's a whole separate problem,
one that wouldn't be detected by checking for nullptr. If we hit that, time to
change to an LLSingleton.
2018-06-15 11:28:01 -04:00
Nat Goodspeed 6b17202a07 Automated merge with ssh://bitbucket.org/lindenlab/viewer-bugsplat 2018-05-26 08:45:19 -04:00
Nat Goodspeed a5c17472fb SL-823: Fix typo in code that sets up BugSplat. 2018-05-26 08:44:57 -04:00
Nat Goodspeed 3ca76065b0 SL-823: Fix minor compile errors in code to read build_data.json. 2018-05-25 19:02:53 -04:00
Nat Goodspeed 63fe7d802a SL-821, SL-826: Use BUGSPLAT_DB from environment on Windows and Mac.
On TeamCity, set BUGSPLAT_DB from build-secrets.

Use the presence of $BUGSPLAT_DB, rather than a new CMake BUGSPLAT option, to
control whether CMake searches for BugSplat -- and passes LL_BUGSPLAT into C++.

When BUGSPLAT_DB is present, make viewer_manifest.py set "BugSplat DB" in
build_data.json, and "BugsplatServerURL" in Mac Info.plist.

Make llappviewerwin32.cpp read "BugSplat DB" from build_data.json.

Add placeholders for Mac hooks to suppress BugSplat prompt and send
SecondLife.log.
2018-05-25 12:09:50 -04:00
Nat Goodspeed 800b47ec23 SL-821: Use classic-C BugSplat callback and static dumb pointer.
BugSplat has no business introducing a new C++ API based on classic-C function
pointers without even a generic pass-through user data pointer!
2018-05-17 15:02:26 -04:00
Nat Goodspeed cd21556aef SL-821: Convert wstrings to strings of __wchar_t for BugSplat API. 2018-05-17 10:58:59 -04:00
Nat Goodspeed c5f618d096 SL-821: Move Windows BugSplat engagement from llcommon to newview.
Use WSTRINGIZE(), LL_TO_WSTRING(), wstringize() to produce required wide
strings. Use a lambda for callback that sends log file; use LLDir, if set, to
find the log file.

Introduce BUGSPLAT CMake variable to allow suppressing BugSplat.
Make BUGSPLAT CMake variable set LL_BUGSPLAT for C++ compilations.

Set viewer version macros on llappviewerwin32.cpp, llappviewerlinux.cpp and
llappdelegate-objc.mm -- because BugSplat needs the viewer version data, and
because the macOS BugSplat hook is engaged in an Objective-C++ function we
override in the app delegate.
2018-05-17 06:53:42 -04:00
Nat Goodspeed 0c7bc67814 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2017-10-11 14:35:49 -04:00
Ansariel 06db7c626f Merge Firestorm LGPL 2017-10-11 17:58:16 +02:00
Ansariel 615336a4d4 Merge viewer-neko 2017-09-07 21:49:12 +02:00
Ansariel e6f9a5e2db Merge viewer64 2017-07-27 21:07:14 +02:00
andreykproductengine 4a4d93d8c0 MAINT-7691 Fixed crash report not generating files in unicode named folders 2017-09-06 16:04:59 +03:00
andreykproductengine bf1af55a06 MAINT-7691 Crashreported sometimes not starting from unicode named folders 2017-08-31 20:26:25 +03:00
Nicky 985730a52c Merge. 2017-05-18 17:40:24 +02:00
coyot@coyot-sager-PC.hsd1.ca.comcast.net a1194ce6e9 pull from gate 2017-05-05 18:07:00 +01:00
Nat Goodspeed c04073da37 DRTVWR-418: Use conventional LLSingleton init/cleanup for LLWinDebug.
LLWinDebug, though an LLSingleton, had (and required explicit calls to)
special init() and cleanup() methods. Kitty Barnett points out that the
cleanup() method was actually being called after LLSingletonBase::deleteAll(),
requiring resurrection of the deleted LLWinDebug, which sometimes led to
crashes. (Resurrecting deleted LLSingletons is always suspect.)

Change LLWinDebug::init() and cleanup() to the conventional initSingleton()
and cleanupSingleton() methods. This eliminates the need to make special
method calls at all. In particular, cleanupSingleton() will be called by the
existing LLSingletonBase::cleanupAll() call near viewer shutdown.

We retain the early LLWinDebug::instance() call, which implicitly initializes
the LLWinDebug instance, because evidently we want that initialized early. But
we no longer require a separate init() call.
2017-04-27 08:40:01 -04:00
Ansariel 8aee17b8d1 Set DPI-awareness via manifest again 2016-11-19 12:05:21 +01:00
Ansariel 0aafb257de Fix support URL 2016-11-19 10:42:29 +01:00
Ansariel a8a3ec7bbc FIRE-20378 / FIRE-20382: Breaks memory detection an 4K monitor workaround; No idea why this was added here to fix DPI override - only thing done here is querying data, not setting anything 2016-11-19 10:42:21 +01:00
coyot@coyot-sager-PC 3a3da6e4a7 merge 2017-02-28 22:56:30 +00:00
Ansariel f1011a1e19 Merge Firestorm LGPL 2016-10-11 21:08:24 +02:00
AndreyL ProductEngine 4617e07b37 Merged in lindenlab/viewer-release 2016-10-10 23:26:58 +03:00
Nicky d7a0835432 Merge. 2016-09-26 21:12:34 +02:00
Nat Goodspeed ceb9d3f7f1 MAINT-5011: Fix misleading indentation in WINMAIN(). 2016-08-26 15:46:26 -04:00
Ansariel 4da402dd23 Merge viewer-bear 2016-08-21 12:39:18 +02:00
Glenn Glazer c8c143e774 SL-323: first pass at ripping out old updater 2016-08-18 13:05:30 -07:00
pavelkproductengine cf93c1c81d MAINT-5992 Second Life unusable on Windows 10 with 4k monitor SL forcibly overrides DPI compatibility option 2016-08-18 19:43:48 +03:00
Nat Goodspeed 464a0df4c1 DRTVWR-418: Unify control flow through LLAppViewer across platforms.
The LLApp API used to consist of init(), mainLoop(), cleanup() methods. This
makes sense -- but on Mac that structure was being subverted. The method
called mainLoop() was in fact being called once per frame. There was
initialization code in the method, which (on Mac) needed to be skipped with an
already-initialized bool. There was a 'while' loop which (on Mac) needed to be
turned into an 'if' instead so the method would return after every frame.

Rename LLApp::mainLoop() to frame(). Propagate through subclasses LLAppViewer
and LLCrashLogger. Document the fact that frame() returns true to mean "done."
(This was always the case, but had to be inferred from the code.)

Rename the Mac Objective-C function mainLoop to oneFrame. Rename the C++ free
function it calls from runMainLoop() to pumpMainLoop(). Add comments to
llappdelegate-objc.mm explaining (inferred) control flow.

Change the Linux viewer main() and the Windows viewer WINMAIN() from a single
LLAppViewer::mainLoop() call to repeatedly call frame() until it returns true.

Move initialization code from the top of LLAppViewer::frame() to the init()
method, where it more properly belongs. Remove corresponding
mMainLoopInitialized flag (and all references) from LLAppViewer.

Remove 'while (! LLApp::isExiting())' (or on Mac, 'if (! LLApp::isExiting())')
from LLAppViewer::frame() -- thus unindenting the whole body of the 'while'
and causing many lines of apparent change. (Apologies to reviewers.)

There are four LLApp states: APP_STATUS_RUNNING, APP_STATUS_QUITTING,
APP_STATUS_STOPPED and APP_STATUS_ERROR. Change LLAppViewer::frame() return
value from (isExiting()) (QUITTING or ERROR) to (! isRunning()). I do not know
under what circumstances the state might transition to STOPPED during a
frame() call, but I'm quite sure that if it does, we don't want to call
frame() again. We only want a subsequent call if the state is RUNNING.

Also rename mainLoop() method in LLCrashLogger subclasses
LLCrashLoggerWindows, LLCrashLoggerMac, LLCrashLoggerLinux. Of course it's
completely up to the frame() method whether to yield control; none of those in
fact do. Honor protocol by returning true (frame() is done), even though each
one's main() caller ignores the return value.

In fact LLCrashLoggerWindows::mainLoop() wasn't using the return protocol
correctly anyway, returning wParam or 0 or 1 -- possibly because the return
protocol was never explicitly documented. It should always return true: "I'm
done, don't call me again."
2016-06-30 16:51:50 -04:00
Ansariel 4547c04424 Merge viewer-quickgraphics 2016-05-09 11:12:27 +02:00
Ansariel dac6a7a4e3 Fixed disabling of Windows error reporting 2016-05-02 16:34:37 +02:00
Ansariel 4b9961c8c3 Better way of using the WER API since all supported Windows versions have it (no runtime linking needed) 2016-05-02 16:28:21 +02:00
Ansariel 7dd467e35c Remove code for disabling Windows error reporting on Windows XP - not supported anymore 2016-05-02 14:06:50 +02:00
Ansariel 35b8c1cc8a Transfer code from fsappviewerwin32.cpp into llappviewerwin32.cpp 2016-01-04 21:10:26 +01:00
Nicky c59f9a1e51 Readd texture purge thread, as it was not breaking Vista. 2015-08-17 22:40:05 +02:00
Ansariel 1ab7c288ed FIRE-14626 / FIRE-16667 / BUG-9906: Viewer messing up the global NVIDIA driver profile - create an application profile for Firestorm 2015-08-16 20:03:45 +02:00
Nicky db7c5e056b Backout threaded texture purge as it does not run on Vista. 2015-08-16 15:40:23 +02:00
Nicky 5b07a7b8ba Windows: Put texture purging into its own thread to avoid long stalls on startup if there is a lot of textures to delete. 2015-07-20 23:38:11 +02:00
Drake Arconis 3a9a23862f Poke VLD into working in release builds 2015-02-28 00:21:16 -05:00
Ansariel 92cebdf6a7 FIRE-15891: Add option to disable WMI check in case of problems 2015-04-19 11:51:26 +02:00