google / filament

Filament is a real-time physically based rendering engine for Android, iOS, Windows, Linux, macOS, and WebGL2
https://google.github.io/filament/
Apache License 2.0
17.35k stars 1.83k forks source link

ANR while engine destroys #7908

Open punkesta opened 3 weeks ago

punkesta commented 3 weeks ago

Describe the bug The engine sometimes (but not always) causes an AHP error when the user removes a fragment

To Reproduce Steps to reproduce the behavior:

  1. Create fragment with SceneView
  2. Set model and texture
  3. Try to remove fragment using getParentFragmentManager().beginTransaction().remove(this).commit()

Expected behavior Disappearing a fragment without an ANR error

Screenshots No screenshots

Logs [split_config.arm64_v8a.apk] std::__ndk1::thread::join Input dispatching timed out

Поток 1 "main" tid=1 Native

00 pc 0x0000000000085e1c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28)

01 pc 0x00000000000ec5ec /apex/com.android.runtime/lib64/bionic/libc.so (pthread_join+264)

02 pc 0x00000000001ef304 /data/app/~~SAqRdUhEPFr-H8YWZc321g==/com.punkesta.clicker-jsnDgEqcBdleQiLBRYrt9A==/split_config.arm64_v8a.apk (std::__ndk1::thread::join+32) (BuildId: c1ee70bcc213bdfcce2421b7860127c85b755d6d)

03 pc 0x0000000000117590 /data/app/~~SAqRdUhEPFr-H8YWZc321g==/com.punkesta.clicker-jsnDgEqcBdleQiLBRYrt9A==/split_config.arm64_v8a.apk (BuildId: c1ee70bcc213bdfcce2421b7860127c85b755d6d)

at com.google.android.filament.Engine.nDestroyEngine (Engine.java) at com.google.android.filament.Engine.destroy (Engine.java:564) at io.github.sceneview.EngineKt.safeDestroy (Engine.kt:38) at io.github.sceneview.SceneView.destroy (SceneView.kt:653) at io.github.sceneview.SceneView.onDetachedFromWindow (SceneView.kt:708) at android.view.View.dispatchDetachedFromWindow (View.java:21217) at android.view.ViewGroup.dispatchDetachedFromWindow (ViewGroup.java:4154) at android.view.ViewGroup.dispatchDetachedFromWindow (ViewGroup.java:4154) at android.view.ViewGroup.removeViewInternal (ViewGroup.java:5796) at android.view.ViewGroup.removeViewInternal (ViewGroup.java:5767) at android.view.ViewGroup.removeView (ViewGroup.java:5698) at androidx.fragment.app.SpecialEffectsController$Operation$State.applyState (SpecialEffectsController.kt:516) at androidx.fragment.app.SpecialEffectsController.applyContainerChangesToOperation$fragment_release (SpecialEffectsController.kt:305) at androidx.fragment.app.SpecialEffectsController.commitEffects$fragment_release (SpecialEffectsController.kt:405) at androidx.fragment.app.SpecialEffectsController.executePendingOperations (SpecialEffectsController.kt:282) at androidx.fragment.app.FragmentManager.executeOpsTogether (FragmentManager.java:2116) at androidx.fragment.app.FragmentManager.removeRedundantOperationsAndExecute (FragmentManager.java:1998) at androidx.fragment.app.FragmentManager.execPendingActions (FragmentManager.java:1941) at androidx.fragment.app.FragmentManager$5.run (FragmentManager.java:661) at android.os.Handler.handleCallback (Handler.java:955) at android.os.Handler.dispatchMessage (Handler.java:102) at android.os.Looper.loopOnce (Looper.java:206) at android.os.Looper.loop (Looper.java:296) at android.app.ActivityThread.main (ActivityThread.java:8971) at java.lang.reflect.Method.invoke (Native method) at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run (RuntimeInit.java:569) at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:976)

Desktop (please complete the following information):

Smartphone (please complete the following information):

Additional context