You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Following is the disassembled library around where it crashes at 0x0027374. It looks like the compiler unrolled the loop, and only the secondWFE command seems to crash.
@buttaface I saw that you’ve been doing some work with libdispatch on Android – any thoughts on this? This is our most frequent crash on Android, but we’re unsure what to do here.
I've only been adding build tweaks to keep it running so I'm not familiar with how libdispatch works internally, nor have I ever heard of this wfe instruction. A search turned up this github issue where rocksdb switched from wfe to yield, which performed much better. You could try the same by replacing __builtin_arm_wfe with dispatch_hardware_pause(), as can be seen for other arches later in that function, or simply comment that builtin out, and rebuild libdispatch to see if that helps.
Thanks for the suggestion @buttaface! We replaced __builtin_arm_wfe() with dispatch_hardware_pause() and we have been observing no more crashes in production.
Attachment: Download
Environment
Android 9 and 10
ABI: armeabi-v7a/NEON
Various devices, mostly using the Cortex-A53 CPU
Additional Detail from JIRA
md5: 4bd80c1ec0b98960f2ded3ecd9341aa4
Issue Description:
We’re seeing the following crash in libdispatch
_dispatch_wait_for_enqueuer()
on Android armeabi-v7a due to__builtin_arm_wfe()
causing aSIGILL
:Following is the disassembled library around where it crashes at
0x0027374
. It looks like the compiler unrolled the loop, and only the secondWFE
command seems to crash.The text was updated successfully, but these errors were encountered: