Краш с пометкой: Stack corruption detected
Столкнулся с крашем на SDK 21. Краш повторяется регулярно, при простейших переходах между фрагментами. Полная ошибка выглядит следующим образом:
08-11 18:10:30.547 5555-5647/argument.twins.com.polykekschedule D/EGL_emulation: eglCreateContext: 0x7f252b84b740: maj 2 min 0 rcv 2
08-11 18:10:30.574 5555-5647/argument.twins.com.polykekschedule D/EGL_emulation: eglMakeCurrent: 0x7f252b84b740: ver 2 0 (tinfo 0x7f2528fe2420)
08-11 18:10:30.878 5555-5555/argument.twins.com.polykekschedule A/libc: stack corruption detected
08-11 18:10:30.880 5555-5555/argument.twins.com.polykekschedule A/libc: Fatal signal 6 (SIGABRT), code -6 in tid 5555 (polykekschedule)
08-11 18:10:30.981 1179-1179/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
08-11 18:10:30.981 1179-1179/? I/DEBUG: Build fingerprint: 'generic_x86_64/sdk_google_phone_x86_64/generic_x86_64:5.0.2/LSY66K/6402606:eng/test-keys'
08-11 18:10:30.981 1179-1179/? I/DEBUG: Revision: '0'
08-11 18:10:30.981 1179-1179/? I/DEBUG: ABI: 'x86_64'
08-11 18:10:30.981 1179-1179/? I/DEBUG: pid: 5555, tid: 5555, name: polykekschedule >>> argument.twins.com.polykekschedule <<<
08-11 18:10:30.981 1179-1179/? I/DEBUG: signal 6 (SIGABRT), code -6 (SI_TKILL), fault addr --------
08-11 18:10:30.984 1179-1179/? I/DEBUG: Abort message: 'stack corruption detected'
08-11 18:10:30.984 1179-1179/? I/DEBUG: rax 0000000000000000 rbx 00000000000015b3 rcx ffffffffffffffff rdx 0000000000000006
08-11 18:10:30.984 1179-1179/? I/DEBUG: rsi 00000000000015b3 rdi 00000000000015b3
08-11 18:10:30.984 1179-1179/? I/DEBUG: r8 00000000ffffffff r9 0000000000000000 r10 0000000000000008 r11 0000000000000206
08-11 18:10:30.984 1179-1179/? I/DEBUG: r12 000000000000000b r13 0000000000000006 r14 00007f25298e19e8 r15 00007f252ba93080
08-11 18:10:30.984 1179-1179/? I/DEBUG: cs 0000000000000033 ss 000000000000002b
08-11 18:10:30.984 1179-1179/? I/DEBUG: rip 00007f2549698507 rbp 00007f254972c210 rsp 00007f25298e1718 eflags 0000000000000206
08-11 18:10:30.984 1179-1179/? I/DEBUG: backtrace:
08-11 18:10:30.984 1179-1179/? I/DEBUG: #00 pc 0000000000076507 /system/lib64/libc.so (tgkill+7)
08-11 18:10:30.984 1179-1179/? I/DEBUG: #01 pc 000000000002829f /system/lib64/libc.so (pthread_kill+143)
08-11 18:10:30.984 1179-1179/? I/DEBUG: #02 pc 0000000000029571 /system/lib64/libc.so (raise+17)
08-11 18:10:30.984 1179-1179/? I/DEBUG: #03 pc 0000000000022e1d /system/lib64/libc.so (abort+61)
08-11 18:10:30.984 1179-1179/? I/DEBUG: #04 pc 0000000000025580 /system/lib64/libc.so (__libc_fatal+144)
08-11 18:10:30.984 1179-1179/? I/DEBUG: #05 pc 0000000000075f71 /system/lib64/libc.so (__stack_chk_fail+17)
08-11 18:10:30.984 1179-1179/? I/DEBUG: #06 pc 0000000000226f61 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.runtime.so (yandex::maps::runtime::async::ConditionVariable::no_throw_on_cancel_wait_until_impl(std::__ndk1::function<void ()>, std::__ndk1::function<void ()>, boost::optional<yandex::maps::runtime::async::internal::TimePoint> const&)+145)
08-11 18:10:30.984 1179-1179/? I/DEBUG: #07 pc 00000000007e77c8 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #08 pc 00000000007e772f /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #09 pc 00000000007e76f5 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #10 pc 00000000007e76be /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #11 pc 00000000007e7640 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #12 pc 0000000000934959 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #13 pc 0000000000931036 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #14 pc 00000000009355b6 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #15 pc 000000000093558b /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #16 pc 0000000000935416 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #17 pc 000000000093539f /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #18 pc 00000000009305e6 /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #19 pc 000000000093049f /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.mapkit.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #20 pc 000000000022469b /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.runtime.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #21 pc 000000000022502c /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.runtime.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #22 pc 0000000000224fbd /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.runtime.so
08-11 18:10:30.984 1179-1179/? I/DEBUG: #23 pc 000000000043414e /data/app/argument.twins.com.polykekschedule-1/lib/x86_64/libcom.yandex.runtime.so (make_fcontext+46)
08-11 18:10:31.065 1179-1179/? I/DEBUG: Tombstone written to: /data/tombstones/tombstone_05
08-11 18:10:31.065 1538-5652/system_process W/ActivityManager: Force finishing activity argument.twins.com.polykekschedule/.activities.MainActivity
08-11 18:10:31.069 1169-1497/? D/gralloc_ranchu: gralloc_alloc: Creating ashmem region of size 1019904
08-11 18:10:31.073 1186-1186/? I/Zygote: Process 5555 exited due to signal (6)
08-11 18:10:31.073 1538-1647/system_process W/InputDispatcher: channel '293c5c9f argument.twins.com.polykekschedule/argument.twins.com.polykekschedule.activities.MainActivity (server)' ~ Consumer closed input channel or an error occurred. events=0x9
08-11 18:10:31.073 1538-1647/system_process E/InputDispatcher: channel '293c5c9f argument.twins.com.polykekschedule/argument.twins.com.polykekschedule.activities.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
08-11 18:10:31.092 1169-1169/? E/EGL_emulation: tid 1169: eglCreateSyncKHR(1881): error 0x3004 (EGL_BAD_ATTRIBUTE)
08-11 18:10:31.124 1538-3077/system_process I/WindowState: WIN DEATH: Window{293c5c9f u0 argument.twins.com.polykekschedule/argument.twins.com.polykekschedule.activities.MainActivity}
08-11 18:10:31.124 1538-3077/system_process W/InputDispatcher: Attempted to unregister already unregistered input channel '293c5c9f argument.twins.com.polykekschedule/argument.twins.com.polykekschedule.activities.MainActivity (server)'
08-11 18:10:31.127 1538-5652/system_process W/ActivityManager: Exception thrown during pause
android.os.DeadObjectException
at android.os.BinderProxy.transactNative(Native Method)
at android.os.BinderProxy.transact(Binder.java:496)
at android.app.ApplicationThreadProxy.schedulePauseActivity(ApplicationThreadNative.java:701)
at com.android.server.am.ActivityStack.startPausingLocked(ActivityStack.java:852)
at com.android.server.am.ActivityStack.finishActivityLocked(ActivityStack.java:2754)
at com.android.server.am.ActivityStack.finishTopRunningActivityLocked(ActivityStack.java:2611)
at com.android.server.am.ActivityStackSupervisor.finishTopRunningActivityLocked(ActivityStackSupervisor.java:2453)
at com.android.server.am.ActivityManagerService.handleAppCrashLocked(ActivityManagerService.java:11511)
at com.android.server.am.ActivityManagerService.makeAppCrashingLocked(ActivityManagerService.java:11408)
at com.android.server.am.ActivityManagerService.crashApplication(ActivityManagerService.java:12087)
at com.android.server.am.ActivityManagerService.handleApplicationCrashInner(ActivityManagerService.java:11603)
at com.android.server.am.NativeCrashListener$NativeCrashReporter.run(NativeCrashListener.java:86)
08-11 18:10:31.128 1166-1166/? E/lowmemorykiller: Error opening /proc/5555/oom_score_adj; errno=2
08-11 18:10:31.131 1538-1796/system_process I/ActivityManager: Process argument.twins.com.polykekschedule (pid 5555) has died
Возможно кто-нибудь уже сталкивался с подобной проблемой, и сможет подсказать добрым советом?) Приложение стабильно работает на SDK 29, на 23(эмулятор) работает 50 на 50, а на 21 краш происходит в течении первых нескольких переходов. Для навигации я использовал android navigation из расширенного примера навигации от google, о чем крепко сожалею. Фрагменты создаются при всяком переходе, и кажется на младших версиях это пагубно. Так или иначе, буду искать решение...
Дополнение
Опытным путем удалось установить проблемный фрагмент - экран с mapkit, т.е. эта ошибка из libcom.yandex.mapkit.so.
Ответы (1 шт):
Проблема оказалась в симуляторе. Судя по всему библиотека работает не стабильно в для x86_64. При отладке на x86 - такой проблемы не возникло. Иными словами, библиотека работает не стабильно именно на PC-сумялторе. Конечно, я буду следить за этим аспектом, но пока угрозы не вижу.