summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNat Goodspeed <nat@lindenlab.com>2020-06-26 14:40:07 -0400
committerNat Goodspeed <nat@lindenlab.com>2020-06-26 14:40:07 -0400
commit75b5f72e6951cae855a6abacc110a886e0ae701c (patch)
treeaca9cf7302bb72dc9e3a8e134068f802fbf581e9
parente7d3b7cc9356dcf76b5f9a1bf4c9c833d180b2f8 (diff)
DRTVWR-476, SL-13512: Fix flawed fix for former failure.
Specifically, llcoro::suspendUntilTimeout() is definitely called concurrently by multiple coroutines. New code that instantiates a local LLEventStream must allow the name to be tweaked for uniqueness.
-rw-r--r--indra/llcommon/lleventcoro.cpp6
1 files changed, 5 insertions, 1 deletions
diff --git a/indra/llcommon/lleventcoro.cpp b/indra/llcommon/lleventcoro.cpp
index bc02ab99de..995356dc52 100644
--- a/indra/llcommon/lleventcoro.cpp
+++ b/indra/llcommon/lleventcoro.cpp
@@ -124,7 +124,11 @@ void llcoro::suspendUntilTimeout(float seconds)
// Wait for an event on a bogus LLEventPump on which nobody ever posts
// events. Don't make it static because that would force instantiation of
// the LLEventPumps LLSingleton registry at static initialization time.
- LLEventStream bogus("xyzzy"); // could use an LLUUID if it matters
+ // DO allow tweaking the name for uniqueness, this definitely gets
+ // re-entered on multiple coroutines!
+ // We could use an LLUUID if it were important to actively prohibit anyone
+ // from ever posting on this LLEventPump.
+ LLEventStream bogus("xyzzy", true);
// Timeout is the NORMAL case for this call!
static LLSD timedout;
// Deliver, but ignore, timedout when (as usual) we did not receive any