Skip to content

Android RN SDK calls Display.getSupportedModes() on every frame while collecting JS refresh rate #1313

Description

@ivan-moego

Stack trace

ApplicationNotResponding: ANR
libart 0x037e790 art::gc::collector::MarkCompact::RunPhases
libart 0x03e71bc art::gc::collector::GarbageCollector::Run
libart 0x03ea5d4 art::gc::Heap::CollectGarbageInternal
libart 0x0594ee0 art::gc::Heap::AllocateInternalWithGc::lambda::operator
libart 0x02ef2b8 art::gc::Heap::AllocateInternalWithGc
libart 0x040d0b0 artAllocObjectFromCodeInitializedTLAB
libart 0x02c03bc art_quick_alloc_object_initialized_tlab
base.apk 0x22fc090 android.view.Display.filteredSupportedModes
stream (StreamSupport.java:69)
stream (Arrays.java:5880)
stream (Arrays.java:5861)
filteredSupportedModes (Display.java:1618)
getSupportedModes (Display.java:1584)
getMaxDisplayRefreshRate (DdSdkImplementation.kt:409)
normalizeFrameTime (DdSdkImplementation.kt:386)
normalizeFrameTime$default (DdSdkImplementation.kt:377)
buildFrameTimeCallback$lambda$8 (DdSdkImplementation.kt:354)
$r8$lambda$ZyVYPQuvXJRpX5_VsL4-xb-cqsg (unavailable:0)
invoke (D8$$SyntheticClass:0)
doFrame (FrameRateProvider.kt:40)
run (Choreographer.java:1959)
run (Choreographer.java:1970)
doCallbacks (Choreographer.java:1423)
doFrame (Choreographer.java:1338)
run (Choreographer.java:1930)
handleCallback (Handler.java:1070)
dispatchMessage (Handler.java:125)
dispatchMessage (Looper.java:358)
loopOnce (Looper.java:288)
loop (Looper.java:392)
main (ActivityThread.java:10346)
invoke
run (RuntimeInit.java:638)
main (ZygoteInit.java:972)

Thread: main
libart 0x037e790 art::gc::collector::MarkCompact::RunPhases
libart 0x03e71bc art::gc::collector::GarbageCollector::Run
libart 0x03ea5d4 art::gc::Heap::CollectGarbageInternal
libart 0x0594ee0 art::gc::Heap::AllocateInternalWithGc::lambda::operator
libart 0x02ef2b8 art::gc::Heap::AllocateInternalWithGc
libart 0x040d0b0 artAllocObjectFromCodeInitializedTLAB
libart 0x02c03bc art_quick_alloc_object_initialized_tlab
base.apk 0x22fc090 android.view.Display.filteredSupportedModes
stream (StreamSupport.java:69)
stream (Arrays.java:5880)
stream (Arrays.java:5861)
filteredSupportedModes (Display.java:1618)
getSupportedModes (Display.java:1584)
getMaxDisplayRefreshRate (DdSdkImplementation.kt:409)
normalizeFrameTime (DdSdkImplementation.kt:386)
normalizeFrameTime$default (DdSdkImplementation.kt:377)
buildFrameTimeCallback$lambda$8 (DdSdkImplementation.kt:354)
$r8$lambda$ZyVYPQuvXJRpX5_VsL4-xb-cqsg (unavailable:0)
invoke (D8$$SyntheticClass:0)
doFrame (FrameRateProvider.kt:40)
run (Choreographer.java:1959)
run (Choreographer.java:1970)
doCallbacks (Choreographer.java:1423)
doFrame (Choreographer.java:1338)
run (Choreographer.java:1930)
handleCallback (Handler.java:1070)
dispatchMessage (Handler.java:125)
dispatchMessage (Looper.java:358)
loopOnce (Looper.java:288)
loop (Looper.java:392)
main (ActivityThread.java:10346)
invoke
run (RuntimeInit.java:638)
main (ZygoteInit.java:972)

Reproduction steps

No response

Volume

1/5000

Affected SDK versions

3.4.0

Latest working SDK version

3.4.0

Does the crash manifest in the latest SDK version?

Yes

React Native Version

0.77.3

Package.json Contents

No response

iOS Setup

No response

Android Setup

No response

Device Information

Android 16,Samsung SM-X518U

Other relevant information

No response

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Fields

    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions