看到本机崩溃(“内存违规”,sig = 11)而不是Android堆栈跟踪

时间:2016-04-01 23:16:49

标签: android flurry-analytics

我最近开始在我的应用中看到更多本机崩溃,在我看来应该看到托管崩溃和Android堆栈跟踪的情况下。在本机崩溃的情况下,应用程序会立即关闭,而不会显示“遗憾的是your_app_name已停止”框。而不是在logcat中的一个不错的Android堆栈跟踪,我看到这样的事情:

04-01 16:07:53.165 1263-1263/? E/audit: type=1701 msg=audit(1459544873.165:4214): auid=4294967295 uid=10535 gid=10535 ses=4294967295 subj=u:r:untrusted_app:s0 pid=2372 comm="app.debug" reason="memory violation" sig=11

为了测试这个,我故意在OnClickListener的onClick()方法中使用以下代码生成NullPointerException:

Log.v("debugtag", "" + ((String)null).length());

我肯定知道这会导致Android堆栈跟踪,但我只看到与本机崩溃相关的输出。有些东西显然会干扰异常处理。

我注意到在升级到Flurry 6.3.0之后这种情况开始发生了。还有其他人看到过这种情况吗?

2 个答案:

答案 0 :(得分:2)

我降级到Flurry 6.2.0,这个问题消失了。而不是本机崩溃,我现在看到完整的Android堆栈跟踪,正如预期的那样。

使用Flurry 6.3.0调试应用程序时,我注意到在本机崩溃之前,我有时会在Flurry的uncaughtException()方法中结束。反编译的Flurry代码显然是混淆的。在类“ma”中,有一个私有内部类“a”,它实现了UncaughtExceptionHandler。在内部类“a”的uncaughtException()方法中,这就是我看到的前四行代码:

ma var3 = ma.this;
Throwable var8 = var2;
Thread var7 = var1;
Set var9 = var3.c();

在执行最后一行代码时,调试会话结束并发生本机崩溃。

我向Flurry报告了这种情况。我还不知道这是不是我的应用程序特有的东西,或者这是Flurry的问题。我将在此处更新,因为有更多信息可供使用。

在调用FlurryAgent.init()之前尝试调用FlurryAgent.setCaptureUncaughtExceptions(false),但仍然发生本机崩溃。

更新:Flurry报告其6.3.1版本中修复的问题。根据他们的release notes,6.3.0中引入的问题仅影响调试版本 - 而不是发布版本。

答案 1 :(得分:0)

同样在这里。必须降级到6.2.0以解决此问题。