Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Skip to content
Commit cba1d1e6 authored by Emilio López's avatar Emilio López Committed by Diogo Ferreira
Browse files

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
parent 5b2d41b1
Loading
Loading
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment