diff --git a/indra/newview/llappviewer.cpp b/indra/newview/llappviewer.cpp
index 0d80ab543e55a1ba2afd532f069ad80fa6ce2300..680ce209ea84e38d5473503204979bbe84279504 100644
--- a/indra/newview/llappviewer.cpp
+++ b/indra/newview/llappviewer.cpp
@@ -5566,12 +5566,6 @@ 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
diff --git a/indra/newview/llappviewer.h b/indra/newview/llappviewer.h
index 271307f2a3b6ad28ffe58d288c4cd726568f3fb1..c057bd82ef27689e5f4d17bc2b113062108e5bfb 100644
--- a/indra/newview/llappviewer.h
+++ b/indra/newview/llappviewer.h
@@ -154,7 +154,6 @@ class LLAppViewer : public LLApp
     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
diff --git a/indra/newview/llviewermenu.cpp b/indra/newview/llviewermenu.cpp
index 01a4bd587d00550dff5b7debc9d142cff4e4ae88..92bca90aeb13c34a9d05d92fe531dd66875da8d1 100644
--- a/indra/newview/llviewermenu.cpp
+++ b/indra/newview/llviewermenu.cpp
@@ -33,10 +33,11 @@
 #include "llviewermenu.h" 
 
 // linden library includes
-#include "llavatarnamecache.h"	// IDEVO
+#include "llavatarnamecache.h"  // IDEVO (I Are Not Men!)
+#include "llcombobox.h"
+#include "llcoros.h"
 #include "llfloaterreg.h"
 #include "llfloatersidepanelcontainer.h"
-#include "llcombobox.h"
 #include "llinventorypanel.h"
 #include "llnotifications.h"
 #include "llnotificationsutil.h"
@@ -2379,6 +2380,7 @@ class LLAdvancedForceErrorLlerror : public view_listener_t
 		return true;
 	}
 };
+
 class LLAdvancedForceErrorBadMemoryAccess : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -2388,6 +2390,22 @@ class LLAdvancedForceErrorBadMemoryAccess : public view_listener_t
 	}
 };
 
+class LLAdvancedForceErrorBadMemoryAccessCoro : public view_listener_t
+{
+    bool handleEvent(const LLSD& userdata)
+    {
+        LLCoros::instance().launch(
+            "AdvancedForceErrorBadMemoryAccessCoro",
+            [](){
+                // Wait for one mainloop() iteration, letting the enclosing
+                // handleEvent() method return.
+                llcoro::suspend();
+                force_error_bad_memory_access(NULL);
+            });
+        return true;
+    }
+};
+
 class LLAdvancedForceErrorInfiniteLoop : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -2406,6 +2424,22 @@ class LLAdvancedForceErrorSoftwareException : public view_listener_t
 	}
 };
 
+class LLAdvancedForceErrorSoftwareExceptionCoro : public view_listener_t
+{
+    bool handleEvent(const LLSD& userdata)
+    {
+        LLCoros::instance().launch(
+            "AdvancedForceErrorSoftwareExceptionCoro",
+            [](){
+                // Wait for one mainloop() iteration, letting the enclosing
+                // handleEvent() method return.
+                llcoro::suspend();
+                force_error_software_exception(NULL);
+            });
+        return true;
+    }
+};
+
 class LLAdvancedForceErrorDriverCrash : public view_listener_t
 {
 	bool handleEvent(const LLSD& userdata)
@@ -2415,15 +2449,6 @@ 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)
@@ -8150,11 +8175,6 @@ 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();
@@ -9330,10 +9350,11 @@ void initialize_menus()
 	view_listener_t::addMenu(new LLAdvancedForceErrorBreakpoint(), "Advanced.ForceErrorBreakpoint");
 	view_listener_t::addMenu(new LLAdvancedForceErrorLlerror(), "Advanced.ForceErrorLlerror");
 	view_listener_t::addMenu(new LLAdvancedForceErrorBadMemoryAccess(), "Advanced.ForceErrorBadMemoryAccess");
+	view_listener_t::addMenu(new LLAdvancedForceErrorBadMemoryAccessCoro(), "Advanced.ForceErrorBadMemoryAccessCoro");
 	view_listener_t::addMenu(new LLAdvancedForceErrorInfiniteLoop(), "Advanced.ForceErrorInfiniteLoop");
 	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");
 
diff --git a/indra/newview/skins/default/xui/en/menu_viewer.xml b/indra/newview/skins/default/xui/en/menu_viewer.xml
index 073bdfc9bbe1cbc4abd6e45601d7f306c2c311d4..add89c4917ae1a2f42420dd19c2898b56d17d148 100644
--- a/indra/newview/skins/default/xui/en/menu_viewer.xml
+++ b/indra/newview/skins/default/xui/en/menu_viewer.xml
@@ -2649,6 +2649,12 @@ function="World.EnvPreset"
                 <menu_item_call.on_click
                  function="Advanced.ForceErrorBadMemoryAccess" />
             </menu_item_call>
+            <menu_item_call
+             label="Force Bad Memory Access in Coroutine"
+             name="Force Bad Memory Access in Coroutine">
+                <menu_item_call.on_click
+                 function="Advanced.ForceErrorBadMemoryAccessCoro" />
+            </menu_item_call>
             <menu_item_call
              label="Force Infinite Loop"
              name="Force Infinite Loop">
@@ -2668,10 +2674,10 @@ function="World.EnvPreset"
                  function="Advanced.ForceErrorSoftwareException" />
             </menu_item_call>
             <menu_item_call
-             label="Force a Crash in a Coroutine"
-             name="Force a Crash in a Coroutine">
+             label="Force Software Exception in Coroutine"
+             name="Force Software Exception in Coroutine">
                 <menu_item_call.on_click
-                 function="Advanced.ForceErrorCoroutineCrash" />
+                 function="Advanced.ForceErrorSoftwareExceptionCoro" />
             </menu_item_call>
             <menu_item_call
              label="Force a Crash in a Thread"