facebook/redex

run IRTypeChecker failed

jusReal opened this issue · 1 comments

this is error log:

Running IRTypeChecker...
libc++abi: terminating with uncaught exception of type boost::exception_detail::error_info_injector: libredex/PassManager.cpp:256: boost::optionalstd::string (anonymous namespace)::CheckerConfig::run_verifier(const Scope &, bool): assertion `!exit_on_fail' failed.
Inconsistency found in Dex code for Lcom/heytap/openid/base/m_c;.m_a:(Landroid/content/Context;Ljava/util/List;Z)V
Monitor-stack mismatch (unverifiable code) in Lcom/heytap/openid/base/m_c;.m_a:(Landroid/content/Context;Ljava/util/List;Z)V at blocks (B17:1 | B15:1 | B12:1 | B10:1 | B8:1 | B7:1 | B5:1 | B3:1 | B2:1 | B1:1 | B25:1 | B24:1 | B22:1 | B36:1 | B35:1 | B33:1 | B32:1 | B31:1 | B29:1 | B28:1 | B27:1 | B46:2 | B55:1 | B57:1 | B60:1 | B59:1 | B81:1 | B80:1 | B79:1 | B77:1 | B76:1 | B75:1 | B74:1 | B73:1 | B71:1 | B69:1 | B67:1 | B66:1 | B65:1 | B64:1 | B108:1 | B107:1 | B106:1 | B105:1 | B103:1 | B101:1 | B100:1 | B99:1 | B98:1 | B97:1 | B96:1 | B95:1 | B93:1 | B92:1 | B91:1 | B90:1 | B88:1 | B87:1 | B86:1 | B85:1 | B145:2 | B152:2 | B173:1 | B172:1 | B171:1 | B170:1 | B169:1 | B168:1 | ) ==> B176:T, in


the code is no error , and the apk can run normal . I think IRTypeChecker.cpp -> check_monitors() method 's question caused !

the code jdk version is java11 .


this is code:

public synchronized void m_a(Context context, List list, boolean z) {
ArrayList arrayList = new ArrayList();
for (String str : list) {
if (!(z ? m_b(str) : m_a(str))) {
arrayList.add(str);
}
}
if (arrayList.isEmpty()) {
return;
}
if (this.m_a == null) {
m_h.m_a("2009");
try {
if (context.bindService(m_a(), this.m_e, 1)) {
m_h.m_a("2013");
if (this.m_a == null) {
synchronized (this.m_d) {
try {
if (this.m_a == null) {
this.m_d.wait(10000L);
}
} catch (InterruptedException unused) {
Log.e("IDHelper", "1006");
}
}
}
} else {
Log.e("IDHelper", "1007");
}
} catch (Exception e) {
StringBuilder sb = new StringBuilder("1008 ");
sb.append(e.getMessage() != null ? e.getMessage() : e.getLocalizedMessage());
Log.e("IDHelper", sb.toString());
}
}
if (this.m_a == null) {
Log.e("IDHelper", "1004");
return;
}
m_h.m_a("2010");
if (TextUtils.isEmpty(this.m_b)) {
this.m_b = context.getPackageName();
}
if (TextUtils.isEmpty(this.m_c)) {
this.m_c = com.heytap.openid.sdk.m_a.m_a(context, this.m_b, "SHA1");
}
this.m_f.removeMessages(2);
Iterator it2 = arrayList.iterator();
while (it2.hasNext()) {
String str2 = (String) it2.next();
synchronized (this.m_d) {
m_h.m_a(str2 + " 2023");
Message obtainMessage = this.m_f.obtainMessage();
if (str2.equals("RESET_OUID")) {
obtainMessage.what = 3;
} else {
obtainMessage.what = 1;
}
Bundle bundle = new Bundle();
bundle.putString("IdType", str2);
obtainMessage.setData(bundle);
this.m_f.sendMessage(obtainMessage);
long uptimeMillis = SystemClock.uptimeMillis();
int i = str2.equals("DUID") ? 5000 : 2000;
try {
this.m_d.wait(i);
} catch (InterruptedException unused2) {
Log.e("IDHelper", "1022");
}
if (SystemClock.uptimeMillis() - uptimeMillis > i) {
Log.e("IDHelper", "1023");
}
m_h.m_a(str2 + " 2024");
}
}
Message obtainMessage2 = this.m_f.obtainMessage();
obtainMessage2.what = 2;
this.m_f.sendMessageDelayed(obtainMessage2, 300000L);
}

I am closing the issue because it's so old. If this issue still reproduces with a newer version of Redex, and if you can give us more information on how to reproduce, feel free to re-open.