libgdx: iOS Haptics randomly crashing on some devices
Issue details
We recently enabled iOS Haptics vibration in our game. We started seeing an increased number of crashes because of it.
Please see the details below and let me know if you need more information.
Reproduction steps/code
Although I cannot reproduce this, we are seeing the crashes in our reports (see stack trace below). Players reported that the game app will crash randomly. We vibrate the devices using Gdx.input.vibrate(30).
Version of libGDX and/or relevant dependencies
We are using libGDX 1.12.0 and RoboVM 2.3.19.
Stacktrace
It looks the crash comes from the internals of ptr.get()at IOSHaptics.java:86.
0 libsystem_kernel.dylib 0x00000001c85213c4 __abort_with_payload + 8
1 libsystem_kernel.dylib 0x00000001c8543c04 abort_with_payload_wrapper_internal + 104 (terminate_with_reason.c:102)
2 libsystem_kernel.dylib 0x00000001c8543b9c abort_with_reason + 32 (terminate_with_reason.c:116)
3 libobjc.A.dylib 0x0000000182617b74 _objc_fatalv(unsigned long long, unsigned long long, char const*, char*) + 116 (objc-errors.mm:216)
4 libobjc.A.dylib 0x0000000182617b00 _objc_fatal(char const*, ...) + 32 (objc-errors.mm:232)
5 libobjc.A.dylib 0x00000001825ec730 lookUpImpOrForward + 860 (objc-runtime-new.mm:6907)
6 libobjc.A.dylib 0x00000001825e6cc4 _objc_msgSend_uncached + 68
7 IOSLauncher 0x0000000105f70b28 [J]org.robovm.objc.ObjCRuntime.ptr_objc_msgSend(JJ)J + 128
8 IOSLauncher 0x0000000105f6c818 [j]org.robovm.objc.ObjCRuntime.ptr_objc_msgSend(JJ)J[clinit] + 76
9 IOSLauncher 0x0000000105911550 [J]org.robovm.apple.foundation.NSError.domain(J)Ljava/lang/String; + 72 (NSError.java:113)
10 IOSLauncher 0x0000000105911390 [j]org.robovm.apple.foundation.NSError.domain(J)Ljava/lang/String;[clinit] + 64
11 IOSLauncher 0x0000000105914970 [J]org.robovm.apple.foundation.NSError$Marshaler.toObject(Ljava/lang/Class;JJ)Lorg/robovm/apple/foundation/NSError; + 72 (NSError$Marshaler.java:57)
12 IOSLauncher 0x0000000106018750 _call0 + 84
13 IOSLauncher 0x000000010600eb6c callObjectMethod + 116
14 IOSLauncher 0x00000001060111bc rvmCallObjectClassMethodA + 272
15 IOSLauncher 0x0000000104263f1c Java_java_lang_reflect_Method_internalInvoke + 732
16 IOSLauncher 0x0000000104a0d6f4 [J]java.lang.reflect.Method.internalInvoke(J[Ljava/lang/Class;Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; + 124
17 IOSLauncher 0x0000000104a0d2e8 [J]java.lang.reflect.Method.invoke(Ljava/lang/Object;[Ljava/lang/Object;)Ljava/lang/Object; + 336 (Method.java:591)
18 IOSLauncher 0x0000000105fbe9ac [J]org.robovm.rt.bro.MarshalerLookup.toObject(Ljava/lang/Class;J)Lorg/robovm/rt/bro/NativeObject; + 312 (MarshalerLookup.java:45)
19 IOSLauncher 0x0000000105fbe848 [j]org.robovm.rt.bro.MarshalerLookup.toObject(Ljava/lang/Class;J)Lorg/robovm/rt/bro/NativeObject;[clinit] + 76
20 IOSLauncher 0x0000000105fcd664 [J]org.robovm.rt.bro.ptr.Ptr.toObject(J)Lorg/robovm/rt/bro/NativeObject; + 236 (Ptr.java:112)
21 IOSLauncher 0x0000000105fcd318 [J]org.robovm.rt.bro.ptr.Ptr.get()Lorg/robovm/rt/bro/NativeObject; + 80 (Ptr.java:58)
22 IOSLauncher 0x0000000104632a98 [J]com.badlogic.gdx.backends.iosrobovm.IOSHaptics.vibrate(IZ)V + 480 (IOSHaptics.java:86)
23 IOSLauncher 0x000000010460cbc0 [J]com.badlogic.gdx.backends.iosrobovm.DefaultIOSInput.vibrate(I)V + 32 (DefaultIOSInput.java:552)
24 IOSLauncher 0x000000010569e784 [J]mmorpg.utils.Vibrator.doVibrate()V + 140 (Vibrator.java:35)
...
Please select the affected platforms
- Android
- iOS
- HTML/GWT
- Windows
- Linux
- macOS
About this issue
- Original URL
- State: closed
- Created 10 months ago
- Comments: 16 (9 by maintainers)
Commits related to this issue
- * fixed: libgdx/7212 -- crash when getting value by pointer, affected by GC original: https://github.com/libgdx/libgdx/issues/7212 root case: GC code was setting up mark handler only for direct subcla... — committed to dkimitsa/robovm by dkimitsa 10 months ago
- * fixed: libgdx/7212 -- crash when getting value by pointer, affected by GC (#743) original: https://github.com/libgdx/libgdx/issues/7212 root case: GC code was setting up mark handler only for dire... — committed to MobiVM/robovm by dkimitsa 10 months ago
Fixed in https://github.com/libgdx/libgdx/pull/7249
Thanks @lucas-kakele. Narrowed it down a bit, will continue looking this weekend probably