diff --git a/indra/llcommon/lltracerecording.cpp b/indra/llcommon/lltracerecording.cpp
index 5d43771cb206f451cf7935521930b9c74cb1c866..48b5a7c3fad4b217b6b8c979bee6e7b8aafd07e1 100644
--- a/indra/llcommon/lltracerecording.cpp
+++ b/indra/llcommon/lltracerecording.cpp
@@ -41,7 +41,6 @@ namespace LLTrace
 Recording::Recording(EPlayState state) 
 :	mElapsedSeconds(0),
 	mInHandOff(false)
-
 {
 	mBuffers = new AccumulatorBufferGroup();
 	setPlayState(state);
diff --git a/indra/llcommon/llunit.h b/indra/llcommon/llunit.h
index 79465715cfbc353e53b29cb4910f76620a2bed76..2e09973ef661eb69a2c9b7c4f0baae9e45c2ba69 100644
--- a/indra/llcommon/llunit.h
+++ b/indra/llcommon/llunit.h
@@ -138,6 +138,13 @@ struct LLUnit
 	storage_t mValue;
 };
 
+template<typename STORAGE_TYPE, typename UNIT_TYPE>
+std::ostream& operator <<(std::ostream& s, const LLUnit<STORAGE_TYPE, UNIT_TYPE>& unit)
+{
+	s << unit.value() << UNIT_TYPE::getUnitLabel();
+	return s;
+}
+
 template<typename STORAGE_TYPE, typename UNIT_TYPE>
 struct LLUnitImplicit : public LLUnit<STORAGE_TYPE, UNIT_TYPE>
 {
@@ -162,6 +169,12 @@ struct LLUnitImplicit : public LLUnit<STORAGE_TYPE, UNIT_TYPE>
 	}
 };
 
+template<typename STORAGE_TYPE, typename UNIT_TYPE>
+std::ostream& operator <<(std::ostream& s, const LLUnitImplicit<STORAGE_TYPE, UNIT_TYPE>& unit)
+{
+	s << unit.value() << UNIT_TYPE::getUnitLabel();
+	return s;
+}
 
 template<typename S1, typename T1, typename S2, typename T2>
 LL_FORCE_INLINE void ll_convert_units(LLUnit<S1, T1> in, LLUnit<S2, T2>& out, ...)
diff --git a/indra/newview/llscenemonitor.cpp b/indra/newview/llscenemonitor.cpp
index 2f48be12fb4a9f7cf2fba826a93c524ff23b6548..3f4f8721745fe93f67deaed072db8a9f42c911d5 100644
--- a/indra/newview/llscenemonitor.cpp
+++ b/indra/newview/llscenemonitor.cpp
@@ -469,8 +469,8 @@ void LLSceneMonitor::fetchQueryResult()
 	static LLCachedControl<F32>  scene_load_sample_time(gSavedSettings, "SceneLoadingMonitorSampleTime");
 	static LLFrameTimer timer;	
 
-	F32 elapsed_time = timer.getElapsedTimeF32();
-	if(mDiffState == WAIT_ON_RESULT && elapsed_time > scene_load_sample_time)
+	if(mDiffState == WAIT_ON_RESULT 
+		&& !LLAppViewer::instance()->quitRequested())
 	{
 		mDiffState = WAITING_FOR_NEXT_DIFF;
 
@@ -487,14 +487,20 @@ void LLSceneMonitor::fetchQueryResult()
 			record(sFramePixelDiff, mDiffResult);
 
 			static LLCachedControl<F32> diff_threshold(gSavedSettings,"SceneLoadingPixelDiffThreshold");
-			if(mDiffResult > diff_threshold())
-			{
-				mSceneLoadRecording.extend();
-				llassert(mSceneLoadRecording.getResults().getLastRecording().getDuration() > scene_load_sample_time);
-			}
-			else
+			F32 elapsed_time = timer.getElapsedTimeF32();
+
+			if (elapsed_time > scene_load_sample_time)
 			{
-				mSceneLoadRecording.nextPeriod();
+				if(mDiffResult > diff_threshold())
+				{
+					mSceneLoadRecording.extend();
+					llinfos << mSceneLoadRecording.getResults().getLastRecording().getDuration() << llendl;
+					llassert_always(mSceneLoadRecording.getResults().getLastRecording().getDuration() > scene_load_sample_time);
+				}
+				else
+				{
+					mSceneLoadRecording.nextPeriod();
+				}
 			}
 		}