[starvation] add models for getStreamVolume and getRingerMode

Summary: These perform IPC calls inside the android runtime.

Reviewed By: skcho

Differential Revision: D27266713

fbshipit-source-id: f8721db93
master
Nikos Gorogiannis 4 years ago committed by Facebook GitHub Bot
parent 4f9c113acb
commit 3783c52a76

@ -149,7 +149,10 @@ let may_do_ipc =
; (* indirectly makes a transact call*)
{ default with
classname= "android.net.ConnectivityManager"
; methods= ["getActiveNetworkInfo"] } ])
; methods= ["getActiveNetworkInfo"] }
; { default with
classname= "android.media.AudioManager"
; methods= ["getStreamVolume"; "getRingerMode"] } ])
let is_monitor_wait =

@ -5,6 +5,7 @@
* LICENSE file in the root directory of this source tree.
*/
import android.media.AudioManager;
import android.net.ConnectivityManager;
import android.os.Binder;
import android.os.RemoteException;
@ -63,4 +64,14 @@ class Binders {
void getActiveNetworkInfoBad(ConnectivityManager c) {
c.getActiveNetworkInfo();
}
@UiThread
int doGetStreamVolumeBad(AudioManager a) {
return a.getStreamVolume(0);
}
@UiThread
int doGetRingerModeBad(AudioManager a) {
return a.getRingerMode();
}
}

@ -1,9 +1,11 @@
codetoanalyze/java/starvation/AsyncTaskGet.java, AsyncTaskGet.lockOnUiThreadBad():void, 31, STARVATION, no_bucket, ERROR, [[Trace 1] `void AsyncTaskGet.lockOnUiThreadBad()`, locks `this.lock` in `class AsyncTaskGet`,[Trace 2] `void AsyncTaskGet.taskGetUnderLock()`, locks `this.lock` in `class AsyncTaskGet`,calls `Object AsyncTask.get()`]
codetoanalyze/java/starvation/AsyncTaskGet.java, AsyncTaskGet.taskGetOnUiThreadBad():void, 20, STARVATION, no_bucket, ERROR, [`void AsyncTaskGet.taskGetOnUiThreadBad()`,calls `Object AsyncTask.get()`]
codetoanalyze/java/starvation/Binders.java, Binders.annotationBad():void, 42, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.annotationBad()`,Method call: `void Binders.doTransact()`,calls `boolean Binder.transact(int,Parcel,Parcel,int)`]
codetoanalyze/java/starvation/Binders.java, Binders.getActiveNetworkInfoBad(android.net.ConnectivityManager):void, 64, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.getActiveNetworkInfoBad(ConnectivityManager)`,calls `NetworkInfo ConnectivityManager.getActiveNetworkInfo()`]
codetoanalyze/java/starvation/Binders.java, Binders.interBad():void, 32, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.interBad()`,calls `boolean Binder.transact(int,Parcel,Parcel,int)`]
codetoanalyze/java/starvation/Binders.java, Binders.intraBad():void, 37, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.intraBad()`,Method call: `void Binders.doTransact()`,calls `boolean Binder.transact(int,Parcel,Parcel,int)`]
codetoanalyze/java/starvation/Binders.java, Binders.annotationBad():void, 43, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.annotationBad()`,Method call: `void Binders.doTransact()`,calls `boolean Binder.transact(int,Parcel,Parcel,int)`]
codetoanalyze/java/starvation/Binders.java, Binders.doGetRingerModeBad(android.media.AudioManager):int, 75, IPC_ON_UI_THREAD, no_bucket, WARNING, [`int Binders.doGetRingerModeBad(AudioManager)`,calls `int AudioManager.getRingerMode()`]
codetoanalyze/java/starvation/Binders.java, Binders.doGetStreamVolumeBad(android.media.AudioManager):int, 70, IPC_ON_UI_THREAD, no_bucket, WARNING, [`int Binders.doGetStreamVolumeBad(AudioManager)`,calls `int AudioManager.getStreamVolume(int)`]
codetoanalyze/java/starvation/Binders.java, Binders.getActiveNetworkInfoBad(android.net.ConnectivityManager):void, 65, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.getActiveNetworkInfoBad(ConnectivityManager)`,calls `NetworkInfo ConnectivityManager.getActiveNetworkInfo()`]
codetoanalyze/java/starvation/Binders.java, Binders.interBad():void, 33, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.interBad()`,calls `boolean Binder.transact(int,Parcel,Parcel,int)`]
codetoanalyze/java/starvation/Binders.java, Binders.intraBad():void, 38, IPC_ON_UI_THREAD, no_bucket, WARNING, [`void Binders.intraBad()`,Method call: `void Binders.doTransact()`,calls `boolean Binder.transact(int,Parcel,Parcel,int)`]
codetoanalyze/java/starvation/Countdwn.java, Countdwn.awaitOnMainByAnnotBad():void, 21, STARVATION, no_bucket, ERROR, [`void Countdwn.awaitOnMainByAnnotBad()`,calls `void CountDownLatch.await()`]
codetoanalyze/java/starvation/Countdwn.java, Countdwn.awaitOnMainByCallBad():void, 16, STARVATION, no_bucket, ERROR, [`void Countdwn.awaitOnMainByCallBad()`,calls `void CountDownLatch.await()`]
codetoanalyze/java/starvation/FutureGet.java, FutureGet.getDirectBad():void, 21, STARVATION, no_bucket, ERROR, [`void FutureGet.getDirectBad()`,calls `Object Future.get()`]

Loading…
Cancel
Save