Description
We're seeing an Android-only crash (is_crash: true) originating entirely within the Datadog RUM SDK internals. The crash is a java.util.NoSuchElementException thrown from ConcurrentHashMap$EntryIterator.next, triggered during RUM scope processing inside DatadogRumMonitor.
This appears to be a concurrency issue where a ConcurrentHashMap is being iterated while another thread modifies it.
Environment
- datadog_flutter_plugin: 3.0.1 (latest on pub.dev)
- Platform: Android 15 and Android 16 (multiple devices)
- Flutter: 3.29.x
- Affected devices: Samsung Galaxy S24, OnePlus 10 Pro (not device-specific)
Stack Trace
java.util.NoSuchElementException
at java.util.concurrent.ConcurrentHashMap$EntryIterator.next(ConcurrentHashMap.java:3506)
at java.util.concurrent.ConcurrentHashMap$EntryIterator.next(ConcurrentHashMap.java:3496)
at Ev0.h(Unknown Source:13)
at Fv0.u(Unknown Source:19)
at Cv0.u(Unknown Source:0)
at com.datadog.android.rum.internal.domain.scope.g.X(Unknown Source:8)
at com.datadog.android.rum.internal.domain.scope.g.h0(Unknown Source:8)
at com.datadog.android.rum.internal.domain.scope.g.a(Unknown Source:12)
at com.datadog.android.rum.internal.domain.scope.f.l(Unknown Source:78)
at com.datadog.android.rum.internal.domain.scope.f.a(Unknown Source:43)
at com.datadog.android.rum.internal.domain.scope.e.a(Unknown Source:38)
at com.datadog.android.rum.internal.domain.scope.b.d(Unknown Source:18)
at com.datadog.android.rum.internal.domain.scope.b.a(Unknown Source:114)
at com.datadog.android.rum.internal.monitor.DatadogRumMonitor$c.c(Unknown Source:14)
at com.datadog.android.rum.internal.monitor.DatadogRumMonitor$c.invoke(Unknown Source:0)
at hW.a(Unknown Source:35)
at com.datadog.android.rum.internal.monitor.DatadogRumMonitor.Q(Unknown Source:52)
at com.datadog.android.rum.internal.monitor.DatadogRumMonitor.P(Unknown Source:13)
at com.datadog.android.rum.internal.monitor.DatadogRumMonitor.C(Unknown Source:0)
at BD.run(Unknown Source:4)
at yG0.run(Unknown Source:2)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1156)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:651)
at java.lang.Thread.run(Thread.java:1119)
Impact
- The crash kills the app (
is_crash: true)
- Occurs on the main view during normal usage (no specific user action triggers it)
- Affects multiple users across different Android devices and OS versions
- The entire stack trace is within Datadog SDK internals — no application code involved
Expected Behavior
The SDK should not crash the host application. Concurrent access to internal data structures should be properly synchronized.
Description
We're seeing an Android-only crash (
is_crash: true) originating entirely within the Datadog RUM SDK internals. The crash is ajava.util.NoSuchElementExceptionthrown fromConcurrentHashMap$EntryIterator.next, triggered during RUM scope processing insideDatadogRumMonitor.This appears to be a concurrency issue where a
ConcurrentHashMapis being iterated while another thread modifies it.Environment
Stack Trace
Impact
is_crash: true)Expected Behavior
The SDK should not crash the host application. Concurrent access to internal data structures should be properly synchronized.