Android ANR inside SDLActivity::onSensorChanged()

We’re seeing lots of ANRs in our app on Android. The biggest culprit is coming from SDLActivity.java:1867, pasted below. Basically, the ANR happens during a call to mDisplay.getRotation() inside onSensorChanged(). This is coming from Google Play crash reporting, as we’re unable to reproduce these issues on our devices.

Has anyone else seen this, or better yet fixed this?

Thanks!

“main” prio=5 tid=1 Native
| group=“main” sCount=1 dsCount=0 obj=0x73b45f98 self=0xb7970c60
| sysTid=10973 nice=-4 cgrp=default sched=0/0 handle=0xb6fbab34
| state=S schedstat=( 62289145116 17299871709 294280 ) utm=4470 stm=1758 core=0 HZ=100
| stack=0xbe2d6000-0xbe2d8000 stackSize=8MB
| held mutexes=

  1. #00 pc 0000000000016a6c /system/lib/libc.so (syscall+28)
  2. #01 pc 00000000000f60bb /system/lib/libart.so (_ZN3art17ConditionVariable4WaitEPNS_6ThreadE+82)
  3. #02 pc 00000000003e4a23 /system/lib/libart.so (_ZN3artL12GoToRunnableEPNS_6ThreadE+502)
  4. #03 pc 00000000000e56dd /system/lib/libart.so (_ZN3art12JniMethodEndEjPNS_6ThreadE+8)
  5. #04 pc 0000000000dc78e5 /system/framework/arm/boot.oat (Java_android_os_BinderProxy_transactNative__ILandroid_os_Parcel_2Landroid_os_Parcel_2I+152)
  6. at android.os.BinderProxy.transactNative (Native method)
  7. at android.os.BinderProxy.transact (Binder.java:503)
  8. at android.hardware.display.IDisplayManager$Stub$Proxy.getDisplayInfo (IDisplayManager.java:254)
  9. at android.hardware.display.DisplayManagerGlobal.getDisplayInfo (DisplayManagerGlobal.java:119)
  • locked <0x0625e330> (a java.lang.Object)
  1. at android.view.Display.updateDisplayInfoLocked (Display.java:816)
  2. at android.view.Display.getRotation (Display.java:607)
  • locked <0x007a8ba9> (a android.view.Display)
  1. at org.libsdl.app.SDLSurface.onSensorChanged (SDLActivity.java:1867)
  2. at android.hardware.SystemSensorManager$SensorEventQueue.dispatchSensorEvent (SystemSensorManager.java:481)
  3. at android.os.MessageQueue.nativePollOnce (Native method)
  4. at android.os.MessageQueue.next (MessageQueue.java:323)
  5. at android.os.Looper.loop (Looper.java:135)
  6. at android.app.ActivityThread.main (ActivityThread.java:5443)
  7. at java.lang.reflect.Method.invoke! (Native method)
  8. at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:728)
  9. at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:618)