summaryrefslogtreecommitdiff
path: root/indra
AgeCommit message (Collapse)Author
2021-06-07Merge branch 'master' into DRTVWR-518-uiAndrey Lihatskiy
2021-06-07Merge branch 'master' into DRTVWR-516-maintAndrey Lihatskiy
2021-06-07Increment viewer version to 6.4.20Nat Goodspeed
following promotion of DRTVWR-525
2021-06-04SL-15350 Update images for New User viewer log in pageAndrey Lihatskiy
2021-06-03SL-15292 waitForChannel crashAndrey Kleshchev
2021-06-03SL-15272 Bugsplat crashes at condition wait()Andrey Kleshchev
Made sure all waits will be triggered, won't loop back and that in case of http queue it had some time to trigger
2021-06-03SL-15243 Unicode URL validationAndrey Kleshchev
2021-05-31SL-15093 Crash nanov2_free_to_block #2Andrey Kleshchev
Mostly converted some boost pointers to std ones Made ~LLNotificationChannelBase() more explicit to get a bit more data on location of another crash that likely happens when cleaning mItems
2021-05-28SL-15093 Crash nanov2_free_to_blockAndrey Kleshchev
Superficially crash happens in disconnect() inside signal's deconstructor. Manual cleanup should help figuring out if crash happens due to named or anonymous listeners
2021-05-27SL-15211 Adjust unit testsAndrey Kleshchev
2021-05-27SL-15211 Remove unsused functionsAndrey Kleshchev
CRYPTO_set_id_callback and CRYPTO_set_locking_callback are no-op in ssl 1.1.x
2021-05-27SL-15211 Update OpenSSL libraryAndrey Kleshchev
2021-05-27SL-15319 FIXED Crash in LLFloaterCreateLandmark::onCancelClickedMnikolenko Productengine
2021-05-26SL-15299 SL-15313 BUG-230802 Revert BOM fix causing issues with avatar alpha ↵Dave Houlton
masks. Revert "SL-12069 Issues with bakes-on-mesh and alpha modes" This reverts commit 5691d302ef876a7e6fb6861441f14e5e7f0c7735.
2021-05-26SL-15196 Attach correct log file to Bugsplat reportMnikolenko Productengine
2021-05-26SL-15292 waitForChannel crash #2Andrey Kleshchev
2021-05-25SL-15285 Restore 'drop item' functionality in right click menuAndrey Kleshchev
2021-05-25Fix duplicate name is XML (FS:Ansarial)Callum Prentice
2021-05-25SL-15292 waitForChannel crashAndrey Kleshchev
2021-05-25SL-15298 Move Landmark's Edit buttonAndrey Kleshchev
2021-05-21SL-15272 Bugsplat crashes at condition wait()Andrey Kleshchev
Made sure all waits will be triggered, won't loop back and that in case of http queue it had some time to trigger
2021-05-21Merge branch 'sl-10297' into DRTVWR-516-maintAndrey Lihatskiy
2021-05-19Fix for SL-12320 The Viewer functionality is broken with an in-viewer ↵Callum Prentice
enabled proxy - there isn't an obvious way to set proxy information for CEF alone and QA asserts that the system setting is used so we are removing the proxy UI from the preferences floater. I purposely left everything else in place (config floater, media plugin messages etc.) so we can consider adding CEF specific support one day.
2021-05-19SL-15268 update the description of the 'VivoxVadSensitivity' debug settingMnikolenko Productengine
2021-05-18Pull in updated Dullahan and use it for for: Fix SL-14888 Media on a Prim ↵Callum Prentice
should not show JS (about to unload) popups
2021-05-18SL-15200: LLPurgeDiskCacheThread's CHECK_INTERVAL is secs.Nat Goodspeed
2021-05-17SL-15185 Crash "The face does not have a valid texture"Andrey Kleshchev
2021-05-17SL-15200: Use new LLApp::sleep() in LLPurgeDiskCacheThread::run().Nat Goodspeed
2021-05-17SL-15200: Add LLApp::sleep(duration) methods.Nat Goodspeed
Two sleep() methods: one accepting F32Milliseconds, or in general any LLUnits time class; the other accepting any std::chrono::duration. The significant thing about each of these sleep() methods, as opposed to any freestanding sleep() function, is that it only sleeps until the app starts shutdown. Moreover, it returns true if it slept for the whole specified duration, false if it woke for app shutdown. This is accomplished by making LLApp::sStatus be an LLScalarCond<EAppStatus> instead of a plain EAppStatus enum, and by making setStatus() call set_all() each time the value changes. Then each new sleep() method can call wait_for_unequal(duration, APP_STATUS_RUNNING). Introducing llcond.h into llapp.h triggered an #include circularity because llthread.h #included llapp.h even though it didn't reference anything from it. Removed. This, in turn, necessitated adding #include "llapp.h" to several .cpp files that reference LLApp but had been depending on other header files to drag in llapp.h.
2021-05-17SL-15200: Explain why purge() is called on another thread.Nat Goodspeed
Also add Ansariel's explanation for why interaction through the filesystem itself should be safe.
2021-05-17BUG-230673: Add warning that LLDiskCache::purge() is also called from ↵Ansariel
outside the main thread
2021-05-14Fixes SL-14897 Disable Flash support in the embedded browserCallum Prentice
2021-05-14SL-15258: No 'using namespace std' with Windows SDKNat Goodspeed
With /std:c++17, in wbemcli.h included by <Wbemidl.h>, we were getting errors concerning an ambiguous symbol 'byte'. This turns out to be due to a 'using namespace std' declaration before the #include. The linked workaround advises moving 'using namespace std' after the #include. But since the ONLY symbol from std that was used without qualification was 'hex' in a few places, remove 'using namespace std' altogether and just write 'std::hex' everywhere. https://developercommunity.visualstudio.com/t/error-c2872-byte-ambiguous-symbol/93889#T-N138537
2021-05-13SL-15258: Remove additional std library features dropped with C++17.Nat Goodspeed
2021-05-13Revert "Merge branch 'DRTVWR-531' into DRTVWR-516-maint"Andrey Lihatskiy
This reverts commit 07456abe92ab24f373b238f6bd64087c078b7fc3, reversing changes made to 8a33636e8f56f8d1229b3f76ed6205ce8087048d.
2021-05-13SL-10297: Need VS switch /std:c++17 to use std::string_view.Nat Goodspeed
(cherry picked from commit 28deadab5b37880314a58eff095ae2844a9ebbac)
2021-05-12SL-10297: Use initializer_list<std::string> vs. <std::string_view>.Nat Goodspeed
This is somewhat more expensive for string literals, but switching to std::string_view implies more extensive changes, to be considered separately.
2021-05-12SL-10297: Revert "Need VS switch /std:c++17 to use std::string_view."Nat Goodspeed
This reverts commit 28deadab5b37880314a58eff095ae2844a9ebbac. Going there implies other changes, will take up on another branch.
2021-05-13Merge branch 'DRTVWR-533' into DRTVWR-516-maintAndrey Lihatskiy
2021-05-12SL-10297: Need VS switch /std:c++17 to use std::string_view.Nat Goodspeed
2021-05-12SL-10297: #include <string_view> in llsingleton.hNat Goodspeed
2021-05-12SL-10297: Clean up a few merge glitches.Nat Goodspeed
2021-05-12SL-10297: Merge branch 'sl-10297-oz' into sl-10297.Nat Goodspeed
Bring in Oz's tweaks to the way BugSplat is engaged and tested, plus a few other miscellaneous goodies.
2021-05-12SL-10297: Get rid of LLError::LLCallStacks::allocateStackBuffer().Nat Goodspeed
Also freeStackBuffer() and all the funky classic-C string management of a big flat buffer divided into exactly 512 128-byte strings. Define StringVector as a std::vector<std::string>, and use that instead. Retain the behavior of clearing the vector if it exceeds 512 entries. This eliminates the LLError::Log::flush(const std::ostringstream&, char*) overload as well, with its baffling mix of std::string and classic-C (e.g. strlen(out.str().c_str()). If we absolutely MUST use a big memory pool for performance reasons, let's use StringVector with allocators.
2021-05-12SL-15245 Multiple guide books open, but cannot close them allAndrey Kleshchev
Opening and closing single-instance floaters rapidly and multiple times could result in cleaning instance from floaterreg twice, thus removing new isntance instead of current one
2021-05-12SL-10297: Eliminate llerror.cpp's Globals::messageStream and bool.Nat Goodspeed
Instead of a single std::ostringstream instance shared by all callers, even those on different threads, make each of the relevant lllog_test_() and llcallstacks macros instantiate independent (stack) std::ostringstream objects. lllog_test_() is called by LL_DEBUGS(), LLINFOS(), LL_WARNS(), LL_ERRS(), LL_VLOGS() et al. Eliminate LLError::Log::out(), whose sole function was to arbitrate use of that shared std::ostringstream. Amusingly, if the lock couldn't be locked or if messageStreamInUse was set, out() would allocate a new (heap!) std::ostringstream anyway, which would then have to be freed by flush(). Make both LLError::Log::flush() overloads accept const std::ostringstream&. Make LL_ENDL pass the local _out instance. This eliminates the need to check whether the passed std::ostringstream* references the shared instance and (if so) reset it or (if not) delete it. Make LLError::LLCallStacks::insert() accept the local _out instance as non- const std::ostream&, rather than acquiring and returning std::ostringstream*. Make end() accept the local instance as const std::ostringstream&.
2021-05-12SL-10297: Simplify implementation of LLSingletonBase::logwarns() etc.Nat Goodspeed
Introduce 'string_params' typedef for std::initialization_list<std::string>, and make logwarns(), loginfos(), logdebugs() and logerrs() accept const string_params&. Eliminate the central log() function in llsingleton.cpp that used LL_VLOGS(). To cache the result of a (moderately expensive) Log::shouldLog() call, LL_VLOGS() wants its CallSite object to be static -- but of course the shouldLog() result will differ for different ELevel values, so LL_VLOGS() instantiates a static array of CallSite instances. It seems silly to funnel distinct logwarns(), etc., functions through a common log() function only to have LL_VLOGS() tease apart ELevel values again. Instead, make logwarns() directly invoke LL_WARNS(), and similarly for the rest. To reduce boilerplate in these distinct functions, teach std::ostream how to stream a string_params instance by looping over its elements. Then each logwarns(), etc., function can simply stream its string_params argument to LL_WARNS() or whichever. In particular, eliminate the LLERROR_CRASH macro in logerrs(). The fact that it invokes LL_ERRS() ensures that its LL_ENDL macro will crash the viewer.
2021-05-12BUG-230673: Trim asset disk cache regularlyAnsariel
2021-05-11SL-10297: Move LL_ERRS crash location into the LL_ERRS macro itself.Nat Goodspeed
Introduce Oz's LLERROR_CRASH macro analogous to the old LLError::crashAndLoop() function. Change LL_ENDL macro so that, after calling flush(), if the CallSite is for LEVEL_ERROR, we invoke LLERROR_CRASH right there. Change the meaning of LLError::FatalFunction. It used to be responsible for the actual crash (hence crashAndLoop()). Now, instead, its role is to disrupt control flow in some other way if you DON'T want to crash: throw an exception, or call exit() or some such. Any FatalFunction that returns normally will fall into the new crash in LL_ENDL. Accordingly, the new default FatalFunction is a no-op lambda. This eliminates the need to test for empty (not set) FatalFunction in Log::flush(). Remove LLError::crashAndLoop() because the official LL_ERRS crash is now in LL_ENDL. One of the two common use cases for setFatalFunction() used to be to intercept control in the last moments before crashing -- not to crash or to avoid crashing, but to capture the LL_ERRS message in some way. Especially when that's temporary, though (e.g. LLLeap), saving and restoring the previous FatalFunction only works when the lifespans of the relevant objects are strictly LIFO. Either way, that's a misuse of FatalFunction. Fortunately the Recorder mechanism exactly addresses that case. Introduce a GenericRecorder template subclass, with LLError::addGenericRecorder(callable) that accepts a callable with suitable (level, message) signature, instantiates a GenericRecorder, adds it to the logging machinery and returns the RecorderPtr for possible later use with removeRecorder(). Change llappviewer.cpp's errorCallback() to an addGenericRecorder() callable. Its role was simply to update gDebugInfo["FatalMessage"] with the LL_ERRS message, then call writeDebugInfo(), before calling crashAndLoop() to finish crashing. Remove the crashAndLoop() call, retaining the gDebugInfo logic. Pass errorCallback() to LLError::addGenericRecorder() instead of setFatalFunction(). Oddly, errorCallback()'s crashAndLoop() call was conditional on a compile-time SHADER_CRASH_NONFATAL symbol. The new mechanism provides no way to support SHADER_CRASH_NONFATAL -- it is a Bad Idea to return normally from any LL_ERRS invocation! Rename LLLeapImpl::fatalFunction() to onError(). Instead of passing it to LLError::setFatalFunction(), pass it to addGenericRecorder(). Capture the returned RecorderPtr in mRecorder, replacing mPrevFatalFunction. Then ~LLLeapImpl() calls removeRecorder(mRecorder) instead of restoring mPrevFatalFunction (which, as noted above, was order-sensitive). Of course, every enabled Recorder is called with every log message. onError() and errorCallback() must specifically test for calls with LEVEL_ERROR. LLSingletonBase::logerrs() used to call LLError::getFatalFunction(), check the return and call it if non-empty, else call LLError::crashAndLoop(). Replace all that with LLERROR_CRASH. Remove from llappviewer.cpp the watchdog_llerrs_callback() and watchdog_killer_callback() functions. watchdog_killer_callback(), passed to Watchdog::init(), used to setFatalFunction(watchdog_llerrs_callback) and then invoke LL_ERRS() -- which seems a bit roundabout. watchdog_llerrs_callback(), in turn, replicated much of the logic in the primary errorCallback() function before replicating the crash from llwatchdog.cpp's default_killer_callback(). Instead, pass LLWatchdog::init() a lambda that invokes the LL_ERRS() message formerly found in watchdog_killer_callback(). It no longer needs to override FatalFunction with watchdog_llerrs_callback() because errorCallback() will still be called as a Recorder, obviating watchdog_llerrs_callback()'s first half; and LL_ENDL will handle the crash, obviating the second half. Remove from llappviewer.cpp the static fast_exit() function, which was simply an alias for _exit() acceptable to boost::bind(). Use a lambda directly calling _exit() instead of using boost::bind() at all. In the CaptureLog class in llcommon/tests/wrapllerrs.h, instead of statically referencing the wouldHaveCrashed() function from test.cpp, simply save and restore the current FatalFunction across the LLError::saveAndResetSettings() call. llerror_test.cpp calls setFatalFunction(fatalCall), where fatalCall() was a function that simply set a fatalWasCalled bool rather than actually crashing in any way. Of course, that implementation would now lead to crashing the test program. Make fatalCall() throw a new FatalWasCalled exception. Introduce a CATCH(LL_ERRS("tag"), "message") macro that expands to: LL_ERRS("tag") << "message" << LL_ENDL; within a try/catch block that catches FatalWasCalled and sets the same bool. Change all existing LL_ERRS() in llerror_test.cpp to corresponding CATCH() calls. In fact there's also an LL_DEBUGS(bad tag) invocation that exercises an LL_ERRS internal to llerror.cpp; wrap that too.
2021-05-12SL-15168 Added 'Title' argumentAndrey Kleshchev