Commit Graph

39835 Commits (e0859bbcc3efc80d2c6d8ed37c69c93c874dd49a)

Author SHA1 Message Date
Nat Goodspeed e0859bbcc3 DRTVWR-476: Add basic tests for LLCond. 2019-07-18 17:32:08 +02:00
Nat Goodspeed afcc8298cc DRTVWR-476: Fix first round of compile errors. 2019-07-18 12:03:12 +02:00
Nat Goodspeed d0b5cc68a8 DRTVWR-476: Fix convert(F32Milliseconds) 2019-07-17 18:56:19 +02:00
Nat Goodspeed 7fe8b53395 DRTVWR-476: Review response: remove wait_until() methods and LLDate. 2019-07-17 18:49:31 +02:00
Nat Goodspeed 495c8bc2c3 DRTVWR-476: Review response: support LLDate and llunits.h durations.
Also introduce value_type typedef.
2019-07-17 15:51:59 +02:00
Nat Goodspeed 9a527c9f42 DRTVWR-476: WIP: Untested preliminary implementation of LLCond.
LLCond encapsulates the usage patterns required to properly use
condition_variable. We also provide LLScalarCond, LLBoolCond and LLOneShotCond.
2019-07-11 14:52:30 -04:00
Nat Goodspeed 4220b2a0e4 DRTVWR-476: Fix confusing comment in LLProcess::handle_status().
The global replace in changeset bd80903cf987 was a bit too sweeping: a comment
mentioning the OS function wait() (which exists) was inadvertently changed to
talk about an OS function suspend() (which does not).
2019-07-09 11:37:16 -04:00
Anchor 769d2480c5 [DRTVWR-476] - temp fix to test. comment it out. access violation in release 2019-07-02 21:22:10 -07:00
Anchor 7829fc8e9b Merge 2019-07-02 20:40:59 -07:00
Anchor 373c66e493 [DRTVWR-476] - temp fix to a test 2019-07-01 15:30:09 -07:00
Anchor 08a80ecdeb Merge 2019-07-01 13:54:45 -07:00
Anchor 52d590a731 Merge 2019-07-01 13:50:22 -07:00
Anchor 608374a342 Merge 2019-06-28 15:58:48 -07:00
Nat Goodspeed aeebb452e6 DRTVWR-476: Disable test_httprequest.hpp on Mac Release builds.
For reasons not yet diagnosed, specifically in Mac Release builds, the tests
in test_httprequest.hpp consistently crash with a backtrace suggesting that
the worker thread is calling LLCore::HttpLibcurl::completeRequest() after the
foreground thread calls HttpRequest::destroyService().

Weirdly, even executing a tut::skip() call in every test<n>() function up to
the point of the crash does not eliminate the crash.
2019-06-28 16:12:46 -04:00
Nat Goodspeed ef1f82bab7 DRTVWR-476: Remove special llcorehttp test memory manager.
NickyD discovered that the substitute default allocator used for llcorehttp
tests was returning badly-aligned storage, which caused access violations on
alignment-sensitive data such as std::atomic. Thanks Nicky!!

Moreover, the llcorehttp test assertions regarding memory usage, well-
intentioned though they are, have been causing us trouble for years. Many have
already been disabled.

The problem is that use of test_allocator.h affected *everything* defined with
that header file's declarations visible. That inevitably included specific
functions in other subsystems. Those functions then (unintentionally) consumed
the special allocator, throwing off the memory tracking and making certain
memory-related assertions consistently fail.

This is a particular, observable bad effect of One Definition Rule violations.
Within a given program, C++ allows multiple definitions for the same entity,
but requires that all such definitions be the same. Partial visibility of the
global operator new() and operator delete() overrides meant that some
definitions of certain entities used the default global allocator, some used
llcorehttp's. There may have been other, more subtle bad effects of these ODR
violations.

If one wanted to reimplement verification of the memory consumption of
llcorehttp classes:

* Each llcorehttp class (for which memory tracking was desired) should declare
  class-specific operator new() and operator delete() methods. Naturally,
  these would all consume a central llcorehttp-specific allocator, but that
  allocator should *not* be named global operator new().
* Presumably that would require runtime indirection to allow using the default
  allocator in production while substituting the special allocator for tests.
* Recording and verifying the memory consumption in each test should be
  performed in the test-object constructor and destructor, rather than being
  sprinkled throughout the test<n>() methods.
* With that mechanism in place, the test object should provide methods to
  adjust (or entirely disable) memory verification for a particular test.
* The test object should also provide a "yes, we're still consuming llcorehttp
  memory" method to be used for spot checks in the middle of tests -- instead
  of sprinkling in explicit comparisons as before.
* In fact, the llcorehttp test object in each test_*.hpp file should be
  derived from a central llcorehttp test-object base class providing those
  methods.
2019-06-27 10:57:34 -04:00
Anchor affc44c3d5 Merge 2019-06-26 14:16:29 -07:00
Anchor 44c636fa5c Merge 2019-06-26 14:14:40 -07:00
Nat Goodspeed 43780f8c3d DRTVWR-476: Merge Xcode 10.2 switch for BugsplatMac 2019-06-26 15:10:48 -04:00
Nat Goodspeed 8053bceaa0 DRTVWR-476: Pass Obj-C++ switch needed for BugsplatMac on Xcode 10.2. 2019-06-26 15:08:50 -04:00
Nat Goodspeed a94e289499 DRTVWR-476: On Mac, copy libhunspell-1.3.0.dylib for test programs. 2019-06-26 15:04:16 -04:00
Nat Goodspeed 1a12703924 Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2019-06-26 14:57:28 -04:00
Nat Goodspeed 7a417c9405 DRTVWR-476: Add LLCOREHTTP_TESTS CMake var, OFF by default on Mac.
Hopefully this is temporary until we solve the problem of crashy llcorehttp
test executable on Mac.
2019-06-26 11:23:33 -04:00
Nat Goodspeed 6f95100f7e increment viewer version to 6.2.4 2019-06-20 14:18:42 -04:00
Nat Goodspeed 2baff8e016 Added tag 6.2.3-release for changeset ab2ec5c5423b 2019-06-20 14:18:41 -04:00
Anchor 2c2bdcf348 [DRTVWR-476] - fix compiler errors 32 bit windows build 2019-06-10 15:56:44 -07:00
Ankur Ahlawat cd1f1c540a Merged in nat_linden/viewer-vs2017 (pull request #4)
SL-1968: Extend lllogin_test login-failed cases for new sync timing.
2019-06-07 17:02:37 +00:00
Nicky 2377531707 General cleanup. Delete commented out code. 2019-06-07 11:26:55 +02:00
Nicky 6f359f1bb7 Replace boost::fibers::unbuffered_channel with boost::fibers::buffered_channel.
Using boost::fibers::unbuffered_channel can block the mainthread when calling mPendingCoprocs.push (LLCoprocedurePool::enqueueCoprocedure)
From the documentation:
- If a fiber attempts to send a value through an unbuffered channel and no fiber is waiting to receive the value, the channel will block the sending fiber.

This can happen if LLCoprocedurePool::coprocedureInvokerCoro is running a coroutine and this coroutine calls yield, resuming the viewers main loop. If inside
the main loop someone calls LLCoprocedurePool::enqueueCoprocedure now push will block, as there's no one waiting for a result right now.
The wait would be in LLCoprocedurePool::coprocedureInvokerCoro at the start of the while loop, but we have not reached that yet again as LLCoprocedurePool::coprocedureInvokerCoro
did yield before reaching pop_wait_for.
The result is a deadlock.

boost::fibers::buffered_channel will not block as long as there's space in the channel. A size of 4096 (DEFAULT_QUEUE_SIZE) should be plenty enough for this.
2019-06-07 11:11:56 +02:00
Nat Goodspeed 9cde8fb1b8 SL-1968: Extend lllogin_test login-failed cases for new sync timing.
On login failure, LLLogin now tries to sync up with SLVersionChecker. It waits
for up to 10 seconds before shrugging and giving up. Since that coroutine can
now block for that long, make the llogin_test failure cases wait at least that
long too.
2019-06-06 21:05:02 -04:00
Nicky 3b9cf12eb4 Ignore build-vc150-* directories as those are the VS2017 build dirs (n.b. due to the rather strange version numbering of VS this really should be build-vc141-*; as VS2017 is vc141 internally). 2019-06-07 00:17:01 +02:00
Nicky 1625a896d5 Do not use string/chrono literals, sadly that won't work with GCC (4.9) 2019-06-06 20:59:54 +02:00
Nicky 0f2d02e12d Use reinterpret_cast to pass pthread_self (pthread_t) into CRYPTO_THREADID_set_pointer (void*). 2019-06-06 20:59:01 +02:00
Anchor c6aa850cca [DRTVWR-476] - fix compiler error 2019-06-06 02:49:19 -07:00
Anchor 48caa3c3da [DRTVWR-476] - update cef, fix merge 2019-06-06 01:51:38 -07:00
Nat Goodspeed 43def24781 SL-1968: Merge viewer-vs2017 up to current viewer-release.
Merge glitch inadvertently duplicated a method declaration. Remove.
2019-06-05 14:52:45 -04:00
Nat Goodspeed ebcfbf277e Automated merge with ssh://bitbucket.org/lindenlab/viewer-release 2019-06-05 14:15:15 -04:00
Anchor ef466611a0 [DRTVWR-476] - temporary skip failing llinstancetracker tests to get TC build working 2019-06-05 01:31:30 -07:00
AndreyL ProductEngine 9212c1f33e SL-11341 Skip storing the previous gamma value on Intel GPUs + more logging 2019-06-04 00:03:03 +03:00
AndreyL ProductEngine b996c95f32 SL-11079 Updated contributions.txt 2019-05-28 23:52:23 +03:00
Anchor df1d733974 [DRTVWR-476] - suppress dbghelp.h compiler warnings 2019-05-23 21:56:15 -07:00
Nat Goodspeed 2672194b1d increment viewer version to 6.2.3 2019-05-21 08:57:32 -04:00
Nat Goodspeed 02ab47b256 Added tag 6.2.2-release for changeset ec09daf1899c 2019-05-21 08:57:32 -04:00
Anchor be97efc06c [DRTVWR-476] - revert 2019-05-21 02:09:50 -07:00
Anchor f791526695 [DRTVWR-476] - disable llcorehttp test on mac 2019-05-21 01:50:27 -07:00
Anchor f47a2e88ed [DRTVWR-476] - temporarily disable llcorehttptest on mac 2019-05-21 01:28:20 -07:00
Anchor 20051e9906 [DRTVWR-476] - conflicts with a mac macro 2019-05-20 05:13:02 -07:00
Anchor 37cd0acd59 [DRTVWR-476] - update googlemock,boost,colladom 2019-05-20 04:19:31 -07:00
Anchor c792ce6023 [DRTVWR-476] - update breakpad 2019-05-20 00:30:46 -07:00
Anchor a138374cb3 Merge 2019-05-18 21:43:35 -07:00
Steven Harrison (steven) 771e6344fe Pull from viewer-bear and merge 2019-05-17 16:49:58 +00:00