DRTVWR-544 post-merge fix (restored SL-14961)
parent
9b0569840f
commit
dd2fe2687c
|
|
@ -5518,6 +5518,12 @@ void LLAppViewer::forceErrorDriverCrash()
|
|||
glDeleteTextures(1, NULL);
|
||||
}
|
||||
|
||||
void LLAppViewer::forceErrorCoroutineCrash()
|
||||
{
|
||||
LL_WARNS() << "Forcing a crash in LLCoros" << LL_ENDL;
|
||||
LLCoros::instance().launch("LLAppViewer::crashyCoro", [] {throw LLException("A deliberate crash from LLCoros"); });
|
||||
}
|
||||
|
||||
void LLAppViewer::forceErrorThreadCrash()
|
||||
{
|
||||
class LLCrashTestThread : public LLThread
|
||||
|
|
|
|||
|
|
@ -153,16 +153,16 @@ public:
|
|||
void removeMarkerFiles();
|
||||
|
||||
void removeDumpDir();
|
||||
// LLAppViewer testing helpers.
|
||||
// *NOTE: These will potentially crash the viewer. Only for debugging.
|
||||
virtual void forceErrorLLError();
|
||||
virtual void forceErrorBreakpoint();
|
||||
virtual void forceErrorBadMemoryAccess();
|
||||
virtual void forceErrorInfiniteLoop();
|
||||
virtual void forceErrorSoftwareException();
|
||||
virtual void forceErrorDriverCrash();
|
||||
virtual void forceErrorCoroutineCrash();
|
||||
virtual void forceErrorThreadCrash();
|
||||
// LLAppViewer testing helpers.
|
||||
// *NOTE: These will potentially crash the viewer. Only for debugging.
|
||||
virtual void forceErrorLLError();
|
||||
virtual void forceErrorBreakpoint();
|
||||
virtual void forceErrorBadMemoryAccess();
|
||||
virtual void forceErrorInfiniteLoop();
|
||||
virtual void forceErrorSoftwareException();
|
||||
virtual void forceErrorDriverCrash();
|
||||
virtual void forceErrorCoroutineCrash();
|
||||
virtual void forceErrorThreadCrash();
|
||||
|
||||
// The list is found in app_settings/settings_files.xml
|
||||
// but since they are used explicitly in code,
|
||||
|
|
|
|||
|
|
@ -2466,6 +2466,15 @@ class LLAdvancedForceErrorDriverCrash : public view_listener_t
|
|||
}
|
||||
};
|
||||
|
||||
class LLAdvancedForceErrorCoroutineCrash : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
{
|
||||
force_error_coroutine_crash(NULL);
|
||||
return true;
|
||||
}
|
||||
};
|
||||
|
||||
class LLAdvancedForceErrorThreadCrash : public view_listener_t
|
||||
{
|
||||
bool handleEvent(const LLSD& userdata)
|
||||
|
|
@ -8216,6 +8225,11 @@ void force_error_driver_crash(void *)
|
|||
LLAppViewer::instance()->forceErrorDriverCrash();
|
||||
}
|
||||
|
||||
void force_error_coroutine_crash(void *)
|
||||
{
|
||||
LLAppViewer::instance()->forceErrorCoroutineCrash();
|
||||
}
|
||||
|
||||
void force_error_thread_crash(void *)
|
||||
{
|
||||
LLAppViewer::instance()->forceErrorThreadCrash();
|
||||
|
|
@ -9397,6 +9411,7 @@ void initialize_menus()
|
|||
view_listener_t::addMenu(new LLAdvancedForceErrorSoftwareException(), "Advanced.ForceErrorSoftwareException");
|
||||
view_listener_t::addMenu(new LLAdvancedForceErrorSoftwareExceptionCoro(), "Advanced.ForceErrorSoftwareExceptionCoro");
|
||||
view_listener_t::addMenu(new LLAdvancedForceErrorDriverCrash(), "Advanced.ForceErrorDriverCrash");
|
||||
view_listener_t::addMenu(new LLAdvancedForceErrorCoroutineCrash(), "Advanced.ForceErrorCoroutineCrash");
|
||||
view_listener_t::addMenu(new LLAdvancedForceErrorThreadCrash(), "Advanced.ForceErrorThreadCrash");
|
||||
view_listener_t::addMenu(new LLAdvancedForceErrorDisconnectViewer(), "Advanced.ForceErrorDisconnectViewer");
|
||||
|
||||
|
|
|
|||
|
|
@ -2673,10 +2673,10 @@ function="World.EnvPreset"
|
|||
function="Advanced.ForceErrorSoftwareException" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Force Software Exception in Coroutine"
|
||||
name="Force Software Exception in Coroutine">
|
||||
label="Force a Crash in a Coroutine"
|
||||
name="Force a Crash in a Coroutine">
|
||||
<menu_item_call.on_click
|
||||
function="Advanced.ForceErrorSoftwareExceptionCoro" />
|
||||
function="Advanced.ForceErrorCoroutineCrash" />
|
||||
</menu_item_call>
|
||||
<menu_item_call
|
||||
label="Force a Crash in a Thread"
|
||||
|
|
|
|||
Loading…
Reference in New Issue