diff --git a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
index f1a95f9d6..b4c24d3a5 100644
--- a/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
+++ b/libs/WindowManager/Shell/src/com/android/wm/shell/desktopmode/DesktopModeLoggerTransitionObserver.kt
@@ -100,10 +100,7 @@ class DesktopModeLoggerTransitionObserver(
     @VisibleForTesting var isSessionActive: Boolean = false
 
     fun onInit() {
-        SystemProperties.set(
-            VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY,
-            VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY_DEFAULT_VALUE,
-        )
+        setVisibleTasksCounterProperty(VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY_DEFAULT_VALUE)
         desktopModeEventLogger.logTaskInfoStateInit()
     }
 
@@ -433,10 +430,7 @@ class DesktopModeLoggerTransitionObserver(
                 VISIBLE_TASKS_COUNTER_NAME,
                 postTransitionVisibleFreeformTasks.size.toLong(),
             )
-            SystemProperties.set(
-                VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY,
-                postTransitionVisibleFreeformTasks.size.toString(),
-            )
+            setVisibleTasksCounterProperty(postTransitionVisibleFreeformTasks.size.toString())
         }
     }
 
@@ -592,6 +586,14 @@ class DesktopModeLoggerTransitionObserver(
     private fun TransitionInfo.Change.requireTaskInfo(): TaskInfo =
         this.taskInfo ?: throw IllegalStateException("Expected TaskInfo in the Change")
 
+    private fun setVisibleTasksCounterProperty(value: String) {
+        try {
+            SystemProperties.set(VISIBLE_TASKS_COUNTER_SYSTEM_PROPERTY, value)
+        } catch (_: RuntimeException) {
+            // Tracing state is best-effort; property denial must not crash Shell.
+        }
+    }
+
     private fun TaskInfo.isFreeformWindow(): Boolean = this.windowingMode == WINDOWING_MODE_FREEFORM
 
     private fun TransitionInfo.isExitToRecentsTransition(): Boolean =
