summaryrefslogtreecommitdiff
path: root/indra/llcommon/llcoros.cpp
diff options
context:
space:
mode:
authorAndrey Kleshchev <andreykproductengine@lindenlab.com>2025-02-26 19:11:57 +0200
committerAndrey Kleshchev <117672381+akleshchev@users.noreply.github.com>2025-02-26 21:50:46 +0200
commit39610cbfb381eec0b144f22cd1b34a4ff6911322 (patch)
tree26542c630387e5e8b96817c5e5d40ba6fca46798 /indra/llcommon/llcoros.cpp
parent454d5b48715772889db12d142486e75a3a4dfed3 (diff)
#3591 Remove now pointless rethrow
Diffstat (limited to 'indra/llcommon/llcoros.cpp')
-rw-r--r--indra/llcommon/llcoros.cpp36
1 files changed, 9 insertions, 27 deletions
diff --git a/indra/llcommon/llcoros.cpp b/indra/llcommon/llcoros.cpp
index ab56a3d3b7..b16f166d28 100644
--- a/indra/llcommon/llcoros.cpp
+++ b/indra/llcommon/llcoros.cpp
@@ -228,22 +228,6 @@ std::string LLCoros::logname()
return data.mName.empty()? data.getKey() : data.mName;
}
-void LLCoros::saveException(const std::string& name, std::exception_ptr exc)
-{
- mExceptionQueue.emplace(name, exc);
-}
-
-void LLCoros::rethrow()
-{
- if (! mExceptionQueue.empty())
- {
- ExceptionData front = mExceptionQueue.front();
- mExceptionQueue.pop();
- LL_WARNS("LLCoros") << "Rethrowing exception from coroutine " << front.name << LL_ENDL;
- std::rethrow_exception(front.exception);
- }
-}
-
void LLCoros::setStackSize(S32 stacksize)
{
LL_DEBUGS("LLCoros") << "Setting coroutine stack size to " << stacksize << LL_ENDL;
@@ -312,14 +296,19 @@ static const U32 STATUS_MSC_EXCEPTION = 0xE06D7363; // compiler specific
U32 exception_filter(U32 code, struct _EXCEPTION_POINTERS* exception_infop)
{
- if (code == STATUS_MSC_EXCEPTION)
+ if (LLApp::instance()->reportCrashToBugsplat((void*)exception_infop))
+ {
+ // Handled
+ return EXCEPTION_CONTINUE_SEARCH;
+ }
+ else if (code == STATUS_MSC_EXCEPTION)
{
// C++ exception, go on
return EXCEPTION_CONTINUE_SEARCH;
}
- else if (!LLApp::instance()->reportCrashToBugsplat((void*)exception_infop))
+ else
{
- // handle it
+ // handle it, convert to std::exception
return EXCEPTION_EXECUTE_HANDLER;
}
@@ -381,14 +370,7 @@ void LLCoros::toplevel(std::string name, callable_t callable)
// viewer will carry on.
LOG_UNHANDLED_EXCEPTION(STRINGIZE("coroutine " << name));
}
- catch (...)
- {
- // Stash any OTHER kind of uncaught exception in the rethrow() queue
- // to be rethrown by the main fiber.
- LL_WARNS("LLCoros") << "Capturing uncaught exception in coroutine "
- << name << LL_ENDL;
- LLCoros::instance().saveException(name, std::current_exception());
- }
+ // uncaught exception by default will cause std::terminate()
}
//static