EsotericSoftware / spine-runtimes

2D skeletal animation runtimes for Spine.
http://esotericsoftware.com/
Other
4.36k stars 2.89k forks source link

[Flutter] Segfault crash in production #2640

Open Tosuj-work opened 3 days ago

Tosuj-work commented 3 days ago

Spine version 4.2.32

in production, we get the following crashes, what can cause these crashes?

the error occurs in 10% of android users

it is not possible to reproduce the problem locally, there are only error logs from users

first log from sentry OS Version: Android 14 (UP1A.231005.007.A155FXXS1AXA4) Report Version: 104 Exception Type: Unknown (SIGSEGV) Application Specific Information: Segfault Thread 0 Crashed: 0 libspine_flutter.so 0x7bac314d10 _ZN5spine12SkeletonData13findAnimationERKNS_6StringE 1 libspine_flutter.so 0x7bac2e0888 _ZN5spine14AnimationState12setAnimationEmRKNS_6StringEb 2 libspine_flutter.so 0x7bac32ef58 spine_animation_state_set_animation_by_name 3 libapp.so 0x7bbdea3600 _kDartVmSnapshotInstructions 4 libapp.so 0x7bbe0a87d8 _kDartIsolateSnapshotInstructions 5 libapp.so 0x7bbe0a86c0 _kDartIsolateSnapshotInstructions 6 libapp.so 0x7bbe0a84b0 _kDartIsolateSnapshotInstructions 7 libapp.so 0x7bbe0a83d8 _kDartIsolateSnapshotInstructions 8 libapp.so 0x7bbe3d4bd0 _kDartIsolateSnapshotInstructions 9 libapp.so 0x7bbe3b4c54 _kDartIsolateSnapshotInstructions 10 libapp.so 0x7bbdeb0100 _kDartIsolateSnapshotInstructions 11 libapp.so 0x7bbe278368 _kDartIsolateSnapshotInstructions 12 libapp.so 0x7bbe407c0c _kDartIsolateSnapshotInstructions 13 libapp.so 0x7bbe278e4c _kDartIsolateSnapshotInstructions 14 libapp.so 0x7bbe3b4c80 _kDartIsolateSnapshotInstructions 15 libapp.so 0x7bbdeb0100 _kDartIsolateSnapshotInstructions 16 libapp.so 0x7bbe278368 _kDartIsolateSnapshotInstructions 17 libapp.so 0x7bbe272b2c _kDartIsolateSnapshotInstructions 18 libapp.so 0x7bbdf5f8cc _kDartIsolateSnapshotInstructions 19 libapp.so 0x7bbe3b6510 _kDartIsolateSnapshotInstructions 20 libapp.so 0x7bbdec6094 _kDartIsolateSnapshotInstructions 21 libapp.so 0x7bbdec601c _kDartIsolateSnapshotInstructions 22 libapp.so 0x7bbe453fd0 _kDartIsolateSnapshotInstructions 23 libapp.so 0x7bbdec5dd0 _kDartIsolateSnapshotInstructions 24 libapp.so 0x7bbdea5d5c _kDartVmSnapshotInstructions 25 libflutter.so 0x7c46bc7e58 + 533762702936 26 libflutter.so 0x7c46bd396c + 533762750828 27 libflutter.so 0x7c46bd8bec + 533762771948 28 libflutter.so 0x7c46b30758 + 533762082648 29 libflutter.so 0x7c46b857a0 + 533762430880 30 libflutter.so 0x7c467e2b34 + 533758618420 31 libflutter.so 0x7c467e6750 + 533758633808 32 libutils.so 0x7d8b1dde8c _ZN7android6Looper9pollInnerEi 33 libutils.so 0x7d8b1dd92c _ZN7android6Looper8pollOnceEiPiS1_PPv 34 libandroid.so 0x7cc45e12a4 ALooper_pollOnce 35 libflutter.so 0x7c467e685c + 533758634076 36 libflutter.so 0x7c467e48c0 + 533758625984 37 libflutter.so 0x7c467e46b4 + 533758625460 38 libc.so 0x7d92d1dd0c + 539334139148 39 libc.so 0x7d92cb1ae0 + 539333696224
second log from sentry OS Version: Android 14 (UP1A.230905.011) Report Version: 104 Exception Type: Unknown (SIGSEGV) Application Specific Information: Segfault Thread 0 Crashed: 0 libspine_flutter.so 0x7d1371e4cc _ZN5spine9Animation11getDurationEv 1 libspine_flutter.so 0x7d13721d34 _ZN5spine14AnimationState13newTrackEntryEmPNS_9AnimationEbPNS_10TrackEntryE 2 libspine_flutter.so 0x7d13721a80 _ZN5spine14AnimationState12setAnimationEmPNS_9AnimationEb 3 libspine_flutter.so 0x7d1376ff58 spine_animation_state_set_animation_by_name 4 libapp.so 0x7d26b02600 _kDartVmSnapshotInstructions 5 libapp.so 0x7d26d077d8 _kDartIsolateSnapshotInstructions 6 libapp.so 0x7d26d076c0 _kDartIsolateSnapshotInstructions 7 libapp.so 0x7d26d074b0 _kDartIsolateSnapshotInstructions 8 libapp.so 0x7d26d073d8 _kDartIsolateSnapshotInstructions 9 libapp.so 0x7d27033bd0 _kDartIsolateSnapshotInstructions 10 libapp.so 0x7d27013c54 _kDartIsolateSnapshotInstructions 11 libapp.so 0x7d26b0f100 _kDartIsolateSnapshotInstructions 12 libapp.so 0x7d26ed7368 _kDartIsolateSnapshotInstructions 13 libapp.so 0x7d27066c0c _kDartIsolateSnapshotInstructions 14 libapp.so 0x7d26ed7e4c _kDartIsolateSnapshotInstructions 15 libapp.so 0x7d27013c80 _kDartIsolateSnapshotInstructions 16 libapp.so 0x7d26b0f100 _kDartIsolateSnapshotInstructions 17 libapp.so 0x7d26ed7368 _kDartIsolateSnapshotInstructions 18 libapp.so 0x7d26ed1b2c _kDartIsolateSnapshotInstructions 19 libapp.so 0x7d26bbe8cc _kDartIsolateSnapshotInstructions 20 libapp.so 0x7d27015510 _kDartIsolateSnapshotInstructions 21 libapp.so 0x7d26b25094 _kDartIsolateSnapshotInstructions 22 libapp.so 0x7d26b2501c _kDartIsolateSnapshotInstructions 23 libapp.so 0x7d270b2fd0 _kDartIsolateSnapshotInstructions 24 libapp.so 0x7d26b24dd0 _kDartIsolateSnapshotInstructions 25 libapp.so 0x7d26b04d5c _kDartVmSnapshotInstructions 26 libflutter.so 0x7d2f47be58 + 537664142936 27 libflutter.so 0x7d2f48796c + 537664190828 28 libflutter.so 0x7d2f48cbec + 537664211948 29 libflutter.so 0x7d2f3e4758 + 537663522648 30 libflutter.so 0x7d2f4397a0 + 537663870880 31 libflutter.so 0x7d2f096b34 + 537660058420 32 libflutter.so 0x7d2f09a750 + 537660073808 33 libutils.so 0x7e587a9e8c _ZN7android6Looper9pollInnerEi 34 libutils.so 0x7e587a992c _ZN7android6Looper8pollOnceEiPiS1_PPv 35 libandroid.so 0x7db31292b4 ALooper_pollOnce 36 libflutter.so 0x7d2f09a85c + 537660074076 37 libflutter.so 0x7d2f0988c0 + 537660065984 38 libflutter.so 0x7d2f0986b4 + 537660065460 39 libc.so 0x7e5db8fd7c + 542738283900 40 libc.so 0x7e5db23be0 + 542737841120
third log from sentry OS Version: Android 12 (12 V13.0.14.0.SGMRUXM) Report Version: 104 Exception Type: Unknown (SIGSEGV) Application Specific Information: Segfault Thread 0 Crashed: 0 libspine_flutter.so 0x7ac8ef3c _ZN5spine9Animation12getTimelinesEv 1 libspine_flutter.so 0x7ac91ab9 _ZN5spine14AnimationState13newTrackEntryEjPNS_9AnimationEbPNS_10TrackEntryE 2 libspine_flutter.so 0x7ac9186f _ZN5spine14AnimationState12setAnimationEjPNS_9AnimationEb 3 libspine_flutter.so 0x7accde35 spine_animation_state_set_animation_by_name 4 libapp.so 0x7c88b6dc _kDartVmSnapshotInstructions 5 libapp.so 0x7cb09a38 _kDartIsolateSnapshotInstructions 6 libapp.so 0x7cb0993c _kDartIsolateSnapshotInstructions 7 libapp.so 0x7cb09734 _kDartIsolateSnapshotInstructions 8 libapp.so 0x7cb0966c _kDartIsolateSnapshotInstructions 9 libapp.so 0x7ce3cc6c _kDartIsolateSnapshotInstructions 10 libapp.so 0x7ce1a08c _kDartIsolateSnapshotInstructions 11 libapp.so 0x7c89bce8 _kDartIsolateSnapshotInstructions 12 libapp.so 0x7cd28990 _kDartIsolateSnapshotInstructions 13 libapp.so 0x7ce817ec _kDartIsolateSnapshotInstructions 14 libapp.so 0x7cd2a5d4 _kDartIsolateSnapshotInstructions 15 libapp.so 0x7ce1a0b4 _kDartIsolateSnapshotInstructions 16 libapp.so 0x7c89bce8 _kDartIsolateSnapshotInstructions 17 libapp.so 0x7cd28990 _kDartIsolateSnapshotInstructions 18 libapp.so 0x7cd22ba4 _kDartIsolateSnapshotInstructions 19 libapp.so 0x7c9852d8 _kDartIsolateSnapshotInstructions 20 libapp.so 0x7ce1baa0 _kDartIsolateSnapshotInstructions 21 libapp.so 0x7c8b8200 _kDartIsolateSnapshotInstructions 22 libapp.so 0x7c8b8190 _kDartIsolateSnapshotInstructions 23 libapp.so 0x7cebba84 _kDartIsolateSnapshotInstructions 24 libapp.so 0x7c8b7f90 _kDartIsolateSnapshotInstructions 25 libapp.so 0x7c88d66c _kDartVmSnapshotInstructions 26 libflutter.so 0x7de5299b + 2112170395 27 0x7d4ee2f2
log from google play *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** pid: 0, tid: 7568 >>> gg.awesome.game <<< backtrace: #00 pc 0x00000000000574cc /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libspine_flutter.so (spine::Animation::getDuration()) (BuildId: 721ef2cd8cb2959509ce0d2ded58ab7eceb0ae6e) #01 pc 0x000000000005ad34 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libspine_flutter.so (spine::AnimationState::newTrackEntry(unsigned long, spine::Animation*, bool, spine::TrackEntry*)+256) (BuildId: 721ef2cd8cb2959509ce0d2ded58ab7eceb0ae6e) #02 pc 0x000000000005aa80 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libspine_flutter.so (spine::AnimationState::setAnimation(unsigned long, spine::Animation*, bool)+468) (BuildId: 721ef2cd8cb2959509ce0d2ded58ab7eceb0ae6e) #03 pc 0x00000000000a8f58 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libspine_flutter.so (spine_animation_state_set_animation_by_name+88) (BuildId: 721ef2cd8cb2959509ce0d2ded58ab7eceb0ae6e) #04 pc 0x0000000000281600 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #05 pc 0x00000000004867d8 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #06 pc 0x00000000004866c0 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #07 pc 0x00000000004864b0 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #08 pc 0x00000000004863d8 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #09 pc 0x00000000007b2bd0 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #10 pc 0x0000000000792c54 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #11 pc 0x000000000028e100 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #12 pc 0x0000000000656368 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #13 pc 0x00000000007e5c0c /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #14 pc 0x0000000000656e4c /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #15 pc 0x0000000000792c80 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #16 pc 0x000000000028e100 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #17 pc 0x0000000000656368 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #18 pc 0x0000000000650b2c /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #19 pc 0x000000000033d8cc /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #20 pc 0x0000000000794510 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #21 pc 0x00000000002a4094 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #22 pc 0x00000000002a401c /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #23 pc 0x0000000000831fd0 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #24 pc 0x00000000002a3dd0 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #25 pc 0x0000000000283d5c /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk (BuildId: 63956a45f9c0f0e610d244055f8a07b9) #26 pc 0x000000000085ae58 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #27 pc 0x000000000086696c /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #28 pc 0x000000000086bbec /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #29 pc 0x00000000007c3758 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #30 pc 0x00000000008187a0 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #31 pc 0x0000000000475b34 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #32 pc 0x0000000000479750 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #33 pc 0x0000000000018e8c /system/lib64/libutils.so (android::Looper::pollInner(int)+1276) #34 pc 0x000000000001892c /system/lib64/libutils.so (android::Looper::pollOnce(int, int*, int*, void**)+124) #35 pc 0x00000000000192a4 /system/lib64/libandroid.so (ALooper_pollOnce+100) #36 pc 0x000000000047985c /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #37 pc 0x00000000004778c0 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #38 pc 0x00000000004776b4 /data/app/~~mrgd0Ok1m5H924UEGLshFA==/gg.awesome.game-FBTSipT8cs3AJU0bMGD1Ug==/split_config.arm64_v8a.apk!libflutter.so (BuildId: fe7d9c549912c37f0174cfe7d64819c22b9fe1de) #39 pc 0x0000000000101c2c /apex/com.android.runtime/lib64/bionic/libc.so (__pthread_start(void*)+204) #40 pc 0x0000000000095a00 /apex/com.android.runtime/lib64/bionic/libc.so (__start_thread+64)
Tosuj-work commented 1 day ago

I found the cause of the error, in our case getAnimationByName was called after the SpinnerWidget was destroyed, which is why we received this error. It may be worth adding a check to controller.animationState that getAnimationByName is called from an existing widget