Force a crash under conditions where white square bug in all apps is likely to occur.
diff --git a/rsAllocation.cpp b/rsAllocation.cpp
index b71d10c..ff8d29f 100644
--- a/rsAllocation.cpp
+++ b/rsAllocation.cpp
@@ -88,7 +88,7 @@
     return false;
 }
 
-void Allocation::uploadToTexture(uint32_t lodOffset)
+void Allocation::uploadToTexture(Context *rsc, uint32_t lodOffset)
 {
     //rsAssert(!mTextureId);
     rsAssert(lodOffset < mType->getLODCount());
@@ -102,6 +102,15 @@
 
     if (!mTextureID) {
         glGenTextures(1, &mTextureID);
+
+        if (!mTextureID) {
+            // This should not happen, however, its likely the cause of the
+            // white sqare bug.
+            // Force a crash to 1: restart the app, 2: make sure we get a bugreport.
+            LOGE("Upload to texture failed to gen mTextureID");
+            rsc->dumpDebug();
+            ((char *)0)[0] = 0;
+        }
     }
     glBindTexture(GL_TEXTURE_2D, mTextureID);
     glPixelStorei(GL_UNPACK_ALIGNMENT, 1);
@@ -238,7 +247,7 @@
 void rsi_AllocationUploadToTexture(Context *rsc, RsAllocation va, uint32_t baseMipLevel)
 {
     Allocation *alloc = static_cast<Allocation *>(va);
-    alloc->uploadToTexture(baseMipLevel);
+    alloc->uploadToTexture(rsc, baseMipLevel);
 }
 
 void rsi_AllocationUploadToBufferObject(Context *rsc, RsAllocation va)
diff --git a/rsAllocation.h b/rsAllocation.h
index 514b1c2..f54284a 100644
--- a/rsAllocation.h
+++ b/rsAllocation.h
@@ -46,7 +46,7 @@
     void * getPtr() const {return mPtr;}
     const Type * getType() const {return mType.get();}
 
-    void uploadToTexture(uint32_t lodOffset = 0);
+    void uploadToTexture(Context *rsc, uint32_t lodOffset = 0);
     uint32_t getTextureID() const {return mTextureID;}
 
     void uploadToBufferObject();
diff --git a/rsContext.cpp b/rsContext.cpp
index 08ed725..52074ca 100644
--- a/rsContext.cpp
+++ b/rsContext.cpp
@@ -726,6 +726,24 @@
     mIO.mToClient.shutdown();
 }
 
+void Context::dumpDebug() const
+{
+    LOGE("RS Context debug %p", this);
+    LOGE("RS Context debug");
+
+    LOGE(" EGL ver %i %i", mEGL.mMajorVersion, mEGL.mMinorVersion);
+    LOGE(" EGL context %p  surface %p,  w=%i h=%i  Display=%p", mEGL.mContext,
+         mEGL.mSurface, mEGL.mWidth, mEGL.mHeight, mEGL.mDisplay);
+    LOGE(" GL vendor: %s", mGL.mVendor);
+    LOGE(" GL renderer: %s", mGL.mRenderer);
+    LOGE(" GL Version: %s", mGL.mVersion);
+    LOGE(" GL Extensions: %s", mGL.mExtensions);
+    LOGE(" GL int Versions %i %i", mGL.mMajorVersion, mGL.mMinorVersion);
+    LOGE(" RS width %i, height %i", mWidth, mHeight);
+    LOGE(" RS running %i, exit %i, useDepth %i, paused %i", mRunning, mExit, mUseDepth, mPaused);
+    LOGE(" RS pThreadID %li, nativeThreadID %i", mThreadId, mNativeThreadId);
+
+}
 
 ///////////////////////////////////////////////////////////////////////////////////////////
 //
diff --git a/rsContext.h b/rsContext.h
index fb878eb..4e0f653 100644
--- a/rsContext.h
+++ b/rsContext.h
@@ -162,6 +162,8 @@
         bool mLogObjects;
     } props;
 
+    void dumpDebug() const;
+
     mutable const ObjectBase * mObjHead;
 
 protected: