mariana-trench
mariana-trench copied to clipboard
Some functions will get stuck when running to `fixpoint.run(AnalysisEnvironment::initial());`
Bug
In the process of analyzing an app, it is found that only the first round of method analysis is performed, and the next round cannot be entered. Through the observation of the log and debug, it is a function processing thread that is stuck
Interprocedural.cpp
--> auto new_model = analyze(context, registry, old_model);
--> fixpoint.run(AnalysisEnvironment::initial());
(key point)
Solution:
Hope to increase thread timeout at context.scheduler->schedule
Hi @houugen,
In theory, Mariana Trench should always converge during its analysis. If it does not terminate, there is a bug in the analysis. How long has it been stuck on this function? How can I reproduce the bug? Could you share the apk?
Hi @houugen,
In theory, Mariana Trench should always converge during its analysis. If it does not terminate, there is a bug in the analysis. How long has it been stuck on this function? How can I reproduce the bug? Could you share the apk?
Sorry, i can't provide apk because of some privacy
stuck here forever
The problematic function is BasePlayerImpl;.<init>:(Landroid/content/Context;L../PlayerConfig;)V
public BasePlayerImpl(Context context, PlayerConfig playerConfig) {
this.x = context;
this.y = playerConfig;
this.f.aq = this.y;
Profile.initProfile("xx", playerConfig.f6908a, context);
this.f.K = this;
this.f.I = this;
this.f.J = this;
this.f.a((MediaPlayer.OnErrorListener) this);
this.f.M = this;
this.f.L = this;
this.f.N = this;
this.f.ab = this;
this.f.Q = this;
this.f.R = this;
this.f.S = this;
this.f.T = this;
this.f.W = this;
this.f.U = this;
this.f.ad = this;
this.f.Z = this;
this.f.aa = new OnLoadingStatusListenerNoTrack() {
@Override
public final void onStartLoading() {
BasePlayerImpl.this.w();
}
@Override
public final void onEndLoading() {
BasePlayerImpl.this.x();
}
};
this.f.O = this;
this.f.ai = this;
this.f.X = this;
this.f.Y = new OnNetworkSpeedPerMinute() {
@Override
public final void onSpeedUpdate(int i) {
for (PlayStatisticListener playStatisticListener : BasePlayerImpl.this.h) {
playStatisticListener.onInfo(2300, i, 0, null, 0L);
}
}
@Override
public final void onNetWorkIncome(int i) {
for (PlayStatisticListener playStatisticListener : BasePlayerImpl.this.h) {
playStatisticListener.onInfo(60001, i, 0, null, 0L);
}
}
@Override
public final void onNetWorkSpeed(Object obj) {
for (PlayStatisticListener playStatisticListener : BasePlayerImpl.this.h) {
playStatisticListener.onInfo(60002, 0, 0, obj, 0L);
}
}
};
this.f.a((BaseMediaPlayer.OnPlayHeartListener) this);
this.f.ae = this;
this.f.ag = this;
this.f.ah = this;
this.f.ak = this;
this.f.aj = this;
this.f.ac = this;
this.f.al = this;
this.f.ag = this;
this.f.V = this;
this.f.P = this;
this.f.af = this;
this.f.am = this;
this.f.an = this;
this.f.ao = this;
this.f.H = this;
this.f.A = new DefaultDataSourceProcessor();
BaseMediaPlayer baseMediaPlayer = this.f;
int i = playerConfig.e;
if (i == 1) {
baseMediaPlayer.t = true;
} else if (i == 3) {
baseMediaPlayer.B = true;
} else if (i == 2) {
baseMediaPlayer.t = true;
baseMediaPlayer.B = true;
}
}
Hi, @arthaud , the badcase apk : https://www.wandoujia.com/apps/541865/download/dot?spm=aligames_platform_ug.wdj_seo.0.0.6b2e1bc2n2Z1xh&ch=detail_normal_dl