当前位置: 首页 > 知识库问答 >
问题:

应用程序崩溃(有时),致命信号11(SIGSEGV),代码1

姜俊友
2023-03-14

我正在用HERE SDK开发一个应用程序,到现在为止一切工作都很好。我得到这样的错误:
致命信号11(SIGSEGV),代码1,故障地址0x750057 in tid 10206(FinalizerDaemon)
或以下错误:
致命信号11(SIGSEGV),代码1,故障地址0x94789680 in tid 24605(FinalizerDaemon)

它们让我的应用崩溃了。

并不总是相同的错误,但它们总是单独出现在我的Logcat中,没有其他信息。

在我使用的所有应用程序中,我都在使用对象和服务,即使打印stacktrace,我也没有得到关于错误的更多信息。
我只是注意到,这些错误几乎是随机出现的,但只有在我使用这些对象/服务时才会出现。

我用一个真实的设备来测试我的应用,一个索尼Xperia Z3紧凑型,所以我不认为它来自这里。

我真的迷路了,所以如果有人对如何获取更多关于错误的信息有任何想法,请帮助

编辑:

 05-09 23:04:10.148 6770-6782/? A/libc: Fatal signal 11 (SIGSEGV), code 1, fault addr 0x4 in tid 6782 (FinalizerDaemon)
05-09 23:04:10.266 30179-30179/? I/DEBUG: *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
05-09 23:04:10.266 30179-30179/? I/DEBUG: UUID: 5569a1b9-c913-4101-99fa-5099e2cadd48
05-09 23:04:10.266 30179-30179/? I/DEBUG: Build fingerprint: 'Sony/D5803/D5803:5.1.1/23.4.A.1.264/2418263178:user/release-keys'
05-09 23:04:10.266 30179-30179/? I/DEBUG: Revision: '0'
05-09 23:04:10.266 30179-30179/? I/DEBUG: ABI: 'arm'
05-09 23:04:10.266 30179-30179/? I/DEBUG: pid: 6770, tid: 6782, name: FinalizerDaemon  >>> com.david.metroz <<<
05-09 23:04:10.266 30179-30179/? I/DEBUG: signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x4
05-09 23:04:10.294 30179-30179/? I/DEBUG:     r0 98327400  r1 00000000  r2 00000002  r3 00000000
05-09 23:04:10.294 30179-30179/? I/DEBUG:     r4 aec264c0  r5 b3df7acc  r6 98327400  r7 73652348
05-09 23:04:10.294 30179-30179/? I/DEBUG:     r8 6f9983a8  r9 b482a800  sl 12f1d820  fp b3df7abc
05-09 23:04:10.294 30179-30179/? I/DEBUG:     ip b5303950  sp b3df7ab0  lr b510717f  pc a0b7205c  cpsr a00e0010
05-09 23:04:10.294 30179-30179/? I/DEBUG:     #00 pc 000f405c  /data/app/com.david.metroz-1/lib/arm/libMAPSJNI.so (Java_com_nokia_maps_GeoBoundingBoxImpl_destroyNative+76)
05-09 23:04:10.294 30179-30179/? I/DEBUG:     #01 pc 001d7d4f  /data/dalvik-cache/arm/data@app@com.david.metroz-1@base.apk@classes.dex
05-09 23:04:12.302 862-1274/? E/NativeCrashListener: Exception dealing with report
                                                     android.system.ErrnoException: read failed: EAGAIN (Try again)
                                                         at libcore.io.Posix.readBytes(Native Method)
                                                         at libcore.io.Posix.read(Posix.java:165)
                                                         at libcore.io.BlockGuardOs.read(BlockGuardOs.java:230)
                                                         at android.system.Os.read(Os.java:350)
                                                         at com.android.server.am.NativeCrashListener.consumeNativeCrashData(NativeCrashListener.java:240)
                                                         at com.android.server.am.NativeCrashListener.run(NativeCrashListener.java:138)

编辑2:我现在很确定当我使用GSON从数据库检索这里的对象时会发生崩溃。

当所有事情都在同一个应用程序运行时完成时,下面的代码可以工作,但是当我在数据库中保存字符串,关闭应用程序,然后重新打开它时,我会在将JSON字符串转换回对象时得到致命信号

// to insert I create a json string and then insert it in the database
String mGbSortie = gson.toJson(geoboundinBox);

//and then to retrieve the data :
Type gbType = new TypeToken<GeoBoundingBox>(){}.getType();
geoBoudingBox = gson.fromJson(stringFromDb, listType)

共有1个答案

易俊远
2023-03-14

1)首先确定这是android、第三方库还是您的设备中的bug,这样您就可以知道如何继续。

这个答案给出了如何做到这一点的解决方案:

如果您已经编写(或正在使用)一个插件,该插件反过来通过NDK使用本机C/C++代码,这可能表明本机代码中存在一个bug。

否则,这是您正在测试的设备或仿真程序的固件中的错误。

如果你能在模拟器中、在带有原始ROM的Nexus设备上、或者在不同厂商的多种设备上重现这一点,那很可能是Android本身的bug。在这种情况下,请创建一个可以重现错误的示例项目,并将它与整个堆栈跟踪一起发布到Android OS问题跟踪器http://b.Android.com。

如果您只在一个设备或一个第三方ROM上遇到这种情况,那么这可能是一个更具体的错误--您最好与设备制造商或ROM发行商联系,了解您的症状。

以下两个问题详细讨论了您收到的错误:

Android致命信号11(SIGSEGV)位于0x636F7D89(代码=1)。怎么才能追查到呢?

0x00000000(代码=1)处的致命信号11(SIGSEGV)-PhoneGap

2)在解析geobounds值方面(这似乎是问题所在),请确保使用正确的geobound值正确地处理Gson和Json之间的解析。

来自MyKong:

toJson()-将Java对象转换为JSON

Gson gson = new Gson();
Staff obj = new Staff();

// 1. Java object to JSON, and save into a file
gson.toJson(obj, new FileWriter("D:\\file.json"));

// 2. Java object to JSON, and assign to a String
String jsonInString = gson.toJson(obj);
Gson gson = new Gson();

// 1. JSON to Java object, read it from a file.
Staff staff = gson.fromJson(new FileReader("D:\\file.json"), Staff.class);

// 2. JSON to Java object, read it from a Json String.
String jsonInString = "{'name' : 'mkyong'}";
Staff staff = gson.fromJson(jsonInString, Staff.class);

// JSON to JsonElement, convert to String later.
JsonElement json = gson.fromJson(new FileReader("D:\\file.json"), JsonElement.class);
String result = gson.toJson(json);

从这个答案来看:

public class YourObject {
   private String appname;
   private String Version;
   private String UUID;
   private String WWXY;
   private String ABCD;
   private String YUDE;
   //getters/setters


YourObject parsed = new Gson().fromJson(jsons, YourObject.class);  

String jsons = "{'appname':'application', 'Version':'0.1.0', 'UUID':'300V', 'WWXY':'310W', 'ABCD':'270B', 'YUDE':'280T'}";
YourObject parsed = new Gson().fromJson(jsons, YourObject.class);  

JsonObject object = new JsonParser().parse(jsons).getAsJsonObject();
object.get("appname"); // application 
object.get("Version"); // 0.1.0

这些SO问题给出了更多的细节:
如何在Android中使用GSON解析json解析
使用GSON和GsonBuilder()解析json

3)确保您为您的geobound Co-ord传递了正确的值。此问题值不在GeoboundingBox WinRT的预期范围内(尽管它是C#提供了一个很好的示例,说明如何分解您试图存储和检索的信息的组件

答案是直截了当的。

var nw = new BasicGeoposition();
nw.Latitude = Max(pos.Coordinate.Latitude, pos2.lat);
nw.Longitude = Min(pos.Coordinate.Longitude, pos2.lng);
var se = new BasicGeoposition();
se.Latitude = Min(pos.Coordinate.Latitude, pos2.lat);
se.Longitude = Max(pos.Coordinate.Longitude, pos2.lng);

并了解如何使用GSON解析json:

在Android应用程序中使用Gson与JSON协同工作

还有这个gihub repo供你浏览以获取更多的想法。

 类似资料:
  • 我对cocos Creator是个新手。我正在做一个游戏,当我按下home键回到应用程序时,应用程序崩溃了。调试时显示此错误: 如果有人能用简单的话解释我该怎么做。提前道谢。

  • 在开发过程中,一个错误一直随机出现。我忽略了它(我的错),因为应用程序需要发布,我在任何地方都没有找到解决方案,这让我发疯。 无论如何 Logcat打印此错误: A/libc:无效的地址或损坏的块0xb8f6eed8传递给dlfree的地址 A/libc:致命信号11 (SIGSEGV),代码1,tid 5429中的故障地址0x dead baad(FinalizerDaemon) 由于这没有告诉

  • 这里有人以前遇到过这个错误吗?我能做些什么来解决这个问题? 谢谢:)

  • 截至今天,我已经开始收到此错误: A/libc:致命信号11 (SIGSEGV),代码1 (SEGV_MAPERR),tid 31968中的故障地址0x0 在某些设备上调用MobileAds.initialize(this)时。如果我卸载程序并重新安装,它在第一次打开应用程序时就像预期的那样工作,但如果我关闭并再次打开应用程序,我又开始崩溃了。删除MobileAds.initialize(这)也解

  • 我正在尝试使用PDFDocument在Android上创建一个多页PDF文件。创建一个新页面(方法newPDFPage())后,下一行,例如

  • 我尝试用Android JNI和OpenCV开发应用程序,得到了一个可怕的错误:libc:致命信号11 (SIGSEGV),代码1,tid 28694中的错误地址0xfffffffc。 我按照这篇文章来实现这个算法,当我在Visual studio 2015上运行它时,它工作得很好。但是当我尝试在Android JNI上实现它时,它出现了以下错误。 这是我的代码: 我创建了一个类extends o