diff --git a/indra/llcommon/llerror.cpp b/indra/llcommon/llerror.cpp
index 37ba0978329c2b5c0b73c8612c9f053a712ebc26..d2af004cde71a209ae084c0eecd5478f5ab11839 100755
--- a/indra/llcommon/llerror.cpp
+++ b/indra/llcommon/llerror.cpp
@@ -1402,15 +1402,20 @@ namespace LLError
 #if LL_WINDOWS
 	void LLOutputDebugUTF8(const std::string& s)
 	{
-		// Be careful not to enable this in non-debug builds as there are bad interactions between the
-		// exceptions thrown by this function and the handling of stacks in coroutine fibers. BUG-2707
+		// Be careful when calling OutputDebugString as it throws DBG_PRINTEXCEPTION_C 
+		// which works just fine under the windows debugger, but can cause users who
+		// have enabled SEHOP exception chain validation to crash due to interactions
+		// between the Win 32-bit exception handling and boost coroutine fiber stacks. BUG-2707
 		//
 		if (IsDebuggerPresent())
 		{
 			// Need UTF16 for Unicode OutputDebugString
 			//
-			OutputDebugString(utf8str_to_utf16str(s).c_str());
-			OutputDebugString(TEXT("\n"));
+			if (s.size())
+			{
+				OutputDebugString(utf8str_to_utf16str(s).c_str());
+				OutputDebugString(TEXT("\n"));
+			}
 		}
 	}
 #endif
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h
index cc9bfba81826d57dd1fd800093475010fe0d0ec8..0b723aeb5d00df1565a0852b7ca05e6ea81d40ab 100755
--- a/indra/llcommon/llerror.h
+++ b/indra/llcommon/llerror.h
@@ -206,7 +206,7 @@ namespace LLError
 }
 
 #if LL_WINDOWS
-	// Macro accepting a const std::string& for display in windows debugging console in debug builds only
+	// Macro accepting a std::string for display in windows debugging console
 	#define LL_WINDOWS_OUTPUT_DEBUG(a) LLError::LLOutputDebugUTF8(a)
 #else
 	#define LL_WINDOWS_OUTPUT_DEBUG(a)