diff --git a/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java b/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java
index 0f99674..e8b5285 100644
--- a/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java
+++ b/packages/SystemUI/src/com/android/systemui/SystemUIAppComponentFactory.java
@@ -21,6 +21,8 @@
 import android.content.ContentProvider;
 import android.content.Context;
 import android.content.Intent;
+import android.os.Process;
+import android.util.Log;
 
 import androidx.annotation.NonNull;
 import androidx.core.app.AppComponentFactory;
@@ -38,6 +40,7 @@
  */
 public class SystemUIAppComponentFactory extends AppComponentFactory {
 
+    private static final String TAG = "AppComponentFactory";
     @Inject
     public ContextComponentHelper mComponentHelper;
 
@@ -57,6 +60,9 @@
                         SystemUIFactory.createFromConfig(context);
                         SystemUIFactory.getInstance().getRootComponent().inject(
                                 SystemUIAppComponentFactory.this);
+                        Log.d(TAG, "Initialized during Application creation in Process "
+                                + Process.myPid() + ", Thread " + Process.myTid());
+                        Log.d(TAG, "mComponentHelper: " + mComponentHelper);
                     }
             );
         }
@@ -77,6 +83,8 @@
                         SystemUIFactory.createFromConfig(context);
                         SystemUIFactory.getInstance().getRootComponent().inject(
                                 contentProvider);
+                        Log.d(TAG, "Initialized during ContentProvider creation in Process "
+                                + Process.myPid() + ", Thread " + Process.myTid());
                     }
             );
         }
@@ -89,6 +97,12 @@
     public Service instantiateServiceCompat(
             @NonNull ClassLoader cl, @NonNull String className, Intent intent)
             throws InstantiationException, IllegalAccessException, ClassNotFoundException {
+        if (mComponentHelper == null) {
+            // Everything is about to crash if this is true, but that is inevitable. We either crash
+            // here or crash lower in the stack. Better to crash early!
+            Log.wtf(TAG, "Uninitialized mComponentHelper in Process" + Process.myPid() + ", Thread "
+                    + Process.myTid());
+        }
         Service service = mComponentHelper.resolveService(className);
         if (service != null) {
             return service;
