Fix bug when wifi locks are acquired and released quickly
There is a race condition when handling wifi locks. If you grab one and
release it quickly after, there is a chance the check for size > 0 will
pass, yet the element will disappear before the .get() call completes
causing a IndexOutOfBoundsException. Adding a try-catch block should
fix this.
D/WifiService( 7476): releaseWifiLockLocked: WifiLock{streamingWifiLock type=1 binder=android.os.BinderProxy@40f66690}
D/WifiService( 7476): acquireWifiLockLocked: WifiLock{streamingWifiLock type=1 binder=android.os.BinderProxy@40f66690}
W/QueueService(14261): onError callback for player error: OFFLINE_AND_NO_FILE
D/WifiService( 7476): releaseWifiLockLocked: WifiLock{streamingWifiLock type=1 binder=android.os.BinderProxy@40f66690}
W/d(3) (14261): caught br preparing async: null
D/WifiService( 7476): acquireWifiLockLocked: WifiLock{streamingWifiLock type=1 binder=android.os.BinderProxy@40f66690}
W/dalvikvm( 7476): threadid=28: thread exiting with uncaught exception (group=0x40015560)
W/QueueService(14261): onError callback for player error: OFFLINE_AND_NO_FILE
D/WifiService( 7476): releaseWifiLockLocked: WifiLock{streamingWifiLock type=1 binder=android.os.BinderProxy@40f66690}
E/AndroidRuntime( 7476): *** FATAL EXCEPTION IN SYSTEM PROCESS: WifiService
E/AndroidRuntime( 7476): java.lang.IndexOutOfBoundsException: Invalid index 0, size is 0
E/AndroidRuntime( 7476): at java.util.ArrayList.throwIndexOutOfBoundsException(ArrayList.java:257)
E/AndroidRuntime( 7476): at java.util.ArrayList.get(ArrayList.java:311)
E/AndroidRuntime( 7476): at com.android.server.WifiService.reportStartWorkSource(WifiService.java:2013)
E/AndroidRuntime( 7476): at com.android.server.WifiService.access$2300(WifiService.java:106)
E/AndroidRuntime( 7476): at com.android.server.WifiService$WifiHandler.handleMessage(WifiService.java:2209)
E/AndroidRuntime( 7476): at android.os.Handler.dispatchMessage(Handler.java:99)
E/AndroidRuntime( 7476): at android.os.Looper.loop(Looper.java:130)
E/AndroidRuntime( 7476): at android.os.HandlerThread.run(HandlerThread.java:60)
W/d(3) (14261): caught br preparing async: null
W/QueueService(14261): onError callback for player error: OFFLINE_AND_NO_FILE
I/Process ( 7476): Sending signal. PID: 7476 SIG: 9
D/WifiService( 7476): acquireWifiLockLocked: WifiLock{streamingWifiLock type=1 binder=android.os.BinderProxy@40f66690}
D/WifiService( 7476): releaseWifiLockLocked: WifiLock{streamingWifiLock type=1 binder=android.os.BinderProxy@40f66690}
Change-Id: I5094baea00b0723b27b0e8032e078a9800a4ab3a
Loading
Please register or sign in to comment