diff --git a/indra/newview/llstartup.cpp b/indra/newview/llstartup.cpp
index 9397356d407a72366fb67c2e17cabf8a8b77c484..e9d3cfa993cac079d1ab6b3f78e2dc3c2a79d88b 100644
--- a/indra/newview/llstartup.cpp
+++ b/indra/newview/llstartup.cpp
@@ -162,6 +162,7 @@
 #include "llviewerparcelmgr.h"
 #include "llviewerregion.h"
 #include "llviewerstats.h"
+#include "llviewerstatsrecorder.h"
 #include "llviewerthrottle.h"
 #include "llviewerwindow.h"
 #include "llvoavatar.h"
@@ -1228,6 +1229,7 @@ bool idle_startup()
 		//
 		// Initialize classes w/graphics stuff.
 		//
+		LLViewerStatsRecorder::instance(); // Since textures work in threads
 		gTextureList.doPrefetchImages();		
 		display_startup();
 
diff --git a/indra/newview/lltexturefetch.cpp b/indra/newview/lltexturefetch.cpp
index f6cb787156cdc8e742614c0ae7d29e3f4e1c54b6..fe058024f699d7b8efe4d1aaa9f195e3b98992ea 100644
--- a/indra/newview/lltexturefetch.cpp
+++ b/indra/newview/lltexturefetch.cpp
@@ -2409,7 +2409,11 @@ S32 LLTextureFetchWorker::callbackHttpGet(LLCore::HttpResponse * response,
 	mLoaded = TRUE;
 	setPriority(LLWorkerThread::PRIORITY_HIGH | mWorkPriority);
 
-	LLViewerStatsRecorder::instance().log(0.2f);
+	if (LLViewerStatsRecorder::instanceExists())
+	{
+		// Do not create this instance inside thread
+		LLViewerStatsRecorder::instance().log(0.2f);
+	}
 	return data_size ;
 }