-
Notifications
You must be signed in to change notification settings - Fork 67
Description
I need to preface this with that I'm not sure if the bug is here, in winit, or in my own app.
I have a small toy android application which uses egui, winit, android-activity: https://github.com/0x53A/UAS-SigVer
The app works fine when launched in either horizontal or vertical, but crashes when rotated.
Looking through the ANR report, there seems to be a deadlock, triggered by app relaunch. It's not fully clear to me why rotation triggers a relaunch anyway, because the template I'm using (https://github.com/tauri-apps/cargo-mobile2) already defines <activity android:configChanges="orientation|keyboardHidden", but the relaunch can be averted by adding screenSize|screenLayout (https://github.com/tauri-apps/cargo-mobile2/pull/458/files).
Averting the relaunch fixes rotation, but I don't think the app should deadlock on relaunch anyway, so it just hides the symptom.
Here is an excerpt of the two callstacks, the full log is here: 0x53A/UAS-SigVer#1
----- pid 22451 at 2025-05-06 00:42:55.372396957+0200 -----
Cmd line: com.x53a.uas_sigver
Build fingerprint: 'Xiaomi/pyxis_eea/pyxis:11/RKQ1.200826.002/V12.5.3.0.RFCEUXM:user/release-keys'
ABI: 'arm64'
Build type: optimized
Debug Store: 1,0,1037607671::
suspend all histogram: Sum: 167us 99% C.I. 7us-29us Avg: 12.846us Max: 29us
DALVIK THREADS (19):
"main" prio=5 tid=1 Native
| group="main" sCount=1 ucsCount=0 flags=1 obj=0x72bc8828 self=0x6efde12380
| sysTid=22451 nice=-10 cgrp=default sched=0/0 handle=0x6fdce980a0
| state=S schedstat=( 590665321 91558550 1111 ) utm=44 stm=15 core=5 HZ=100
| stack=0x7ff294b000-0x7ff294d000 stackSize=8188KB
| held mutexes=
native: #00 pc 0007ff4c /apex/com.android.runtime/lib64/bionic/libc.so (syscall+28) (BuildId: d2b63e277d4fb6976635d39171f71be5)
native: #01 pc 01447920 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::sys::sync::condvar::futex::Condvar::wait::h36588761a73d12e9+112)
native: #02 pc 01192810 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::sync::poison::condvar::Condvar::wait::h1d01febd47439c66+48)
native: #03 pc 01152e50 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::glue::WaitableNativeActivityState::notify_destroyed::ha32a1b9aac6b6587+452)
native: #04 pc 0115915c /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::glue::on_destroy::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h25efd2a0740ef5be+64)
native: #05 pc 01157a3c /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::glue::try_with_waitable_activity_ref::h9e2515851c93973a+432)
native: #06 pc 0115906c /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::glue::on_destroy::_$u7b$$u7b$closure$u7d$$u7d$::hb6e9a71da5ea1f27+52)
native: #07 pc 01195064 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (_$LT$core..panic..unwind_safe..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h674bec53079afde7+16)
native: #08 pc 011962f8 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::panicking::try::do_call::hc8575558740f866c+40)
native: #09 pc 01192748 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (__rust_try+24)
native: #10 pc 0118ff38 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::panic::catch_unwind::he548fcda22bded20+48)
native: #11 pc 01189c54 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::util::abort_on_panic::hec9cd527a0ed0245+16)
native: #12 pc 01159020 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::glue::on_destroy::h0a7a714bc732c254+20)
native: #13 pc 0010467c /system/lib64/libandroid_runtime.so (android::NativeCode::~NativeCode+48) (BuildId: 2322557e6de9bc2935568e245609a468)
native: #14 pc 00103ef4 /system/lib64/libandroid_runtime.so (android::unloadNativeCode_native+24) (BuildId: 2322557e6de9bc2935568e245609a468)
[...]
at android.app.NativeActivity.onDestroy(NativeActivity.java:198)
[...]
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:6276)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:106)
[...]
"Thread-2" prio=10 tid=15 Native
| group="main" sCount=1 ucsCount=0 flags=1 obj=0x14440678 self=0x6efde481b0
| sysTid=22474 nice=-10 cgrp=default sched=0/0 handle=0x6d190c3710
| state=S schedstat=( 64171695081 113185684 5701 ) utm=6295 stm=122 core=6 HZ=100
| stack=0x6d18ec4000-0x6d18ec6000 stackSize=2045KB
| held mutexes=
native: #00 pc 000bda28 /apex/com.android.runtime/lib64/bionic/libc.so (__epoll_pwait+8) (BuildId: d2b63e277d4fb6976635d39171f71be5)
native: #01 pc 00015abc /system/lib64/libutils.so (android::Looper::pollAll+232) (BuildId: 3b5fcb253cc00622c9fd2464adbd2aab)
native: #02 pc 0001df0c /system/lib64/libandroid.so (ALooper_pollAll+100) (BuildId: d4449b6b5251bcbb324253a7b1fd9eb3)
native: #03 pc 005ca004 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::AndroidAppInner::poll_events::ha523ccab9468a961+676)
native: #04 pc 005d58e8 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::AndroidApp::poll_events::hc8faa7d8c0c02863+376)
native: #05 pc 007c1d64 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (winit::platform_impl::android::EventLoop$LT$T$GT$::poll_events_with_timeout::h369f8c0d4c866f48+532)
native: #06 pc 007b7ed4 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (winit::platform_impl::android::EventLoop$LT$T$GT$::pump_events::habfba97826f35aae+204)
native: #07 pc 007b8094 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (winit::platform_impl::android::EventLoop$LT$T$GT$::run_on_demand::h4cb195aea24d4477+56)
native: #08 pc 007c23b4 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (winit::platform_impl::android::EventLoop$LT$T$GT$::run::hce9d1c3230e20d23+20)
native: #09 pc 005dc830 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (winit::event_loop::EventLoop$LT$T$GT$::run_app::hd5c8e1a29b46e777+64)
native: #10 pc 005ea0e0 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (uas_sigver::_main::h8bb3d57897411549+480)
native: #11 pc 007b5dc0 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (uas_sigver::android_main::_$u7b$$u7b$closure$u7d$$u7d$::h415ad26d0a164df6+36)
native: #12 pc 005d5678 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (_$LT$core..panic..unwind_safe..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::hd1ddba994bca9ad9+36)
native: #13 pc 0060f618 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::panicking::try::do_call::h73570f4f47564d80+60)
native: #14 pc 00611e7c /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (__rust_try+24)
native: #15 pc 00611d6c /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::panic::catch_unwind::h8c1c77e1ceb234e1+84)
native: #16 pc 007b5cec /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (uas_sigver::stop_unwind::h596a23a5ce7b72e5+36)
native: #17 pc 005ea3dc /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_main+460)
native: #18 pc 0115b5a8 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::glue::ANativeActivity_onCreate::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h5efa3872064905a9+16)
native: #19 pc 01196400 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::panicking::try::do_call::he1f99e3e11bde350+40)
native: #20 pc 01192748 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (__rust_try+24)
native: #21 pc 0118f8d4 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (std::panic::catch_unwind::h7c50a2f319ed614a+48)
native: #22 pc 0115b2b8 /data/app/~~X7jrRRNnLoEuyFBbocVUhQ==/com.x53a.uas_sigver-heXnhgzm_FjkVnMb3gTwTg==/base.apk (offset 8c82000) (android_activity::activity_impl::glue::ANativeActivity_onCreate::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h467dabaf06f3fed3+520)
[...]
I've created the issue here, because android-activity is at the top of the callstack in both threads (android_activity::activity_impl::AndroidAppInner::poll_events and android_activity::activity_impl::glue::WaitableNativeActivityState::notify_destroyed), but it could just as well be an issue with winit or something else, I haven't yet looked too deep into it.