【问题标题】:Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 in tid 1597 (phoneserver)致命信号 11 (SIGSEGV),代码 1,tid 1597 中的故障地址 0x0(电话服务器)
【发布时间】:2021-10-16 20:34:14
【问题描述】:

我移植了 android 7.1 Nougat 并在电话服务器中遇到了这个错误。这是来自 logcat 的一个小 sn-p。你能告诉我如何解决它。

-------— beginning of crash
08-12 22:38:58.159 1597 1597 F libc : Fatal signal 11 (SIGSEGV), code 1, fault addr 0x0 
in tid 1597 (phoneserver)
08-12 22:38:58.165 120 120 W : debuggerd: handling request: pid=1597 uid=10070 gid=10070 
tid=1597
08-12 22:38:58.182 1598 1598 F DEBUG : *** *** *** *** *** *** *** *** *** *** *** *** 
*** *** *** ***
08-12 22:38:58.182 1598 1598 F DEBUG : CM Version: '14.1-20210809-UNOFFICIAL-higgs2g'
08-12 22:38:58.182 1598 1598 F DEBUG : Build fingerprint: 
'samsung/cm_higgs2g/higgs2g:7.1/NDE63X/aeaa9a3dd2:userdebug/test-keys'
08-12 22:38:58.182 1598 1598 F DEBUG : Revision: '0'
08-12 22:38:58.182 1598 1598 F DEBUG : ABI: 'arm'
08-12 22:38:58.183 1598 1598 F DEBUG : pid: 1597, tid: 1597, name: phoneserver »> 
phoneserver «<
08-12 22:38:58.183 1598 1598 F DEBUG : signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault 
addr 0x0
08-12 22:38:58.183 1598 1598 F DEBUG : r0 00000000 r1 b6fb2db8 r2 bee62a1c r3 ffffffd8
08-12 22:38:58.183 1598 1598 F DEBUG : r4 b6fb6f0c r5 6d2d0064 r6 ffffffff r7 00000000
08-12 22:38:58.183 1598 1598 F DEBUG : r8 00000000 r9 00000000 sl 00000000 fp bee62a0c
08-12 22:38:58.183 1598 1598 F DEBUG : ip 00000002 sp bee62670 lr b6fad89d pc b6e4b46c 
cpsr 600e0030
08-12 22:38:58.190 1598 1598 F DEBUG :
08-12 22:38:58.190 1598 1598 F DEBUG : backtrace:
08-12 22:38:58.190 1598 1598 F DEBUG : #00 pc 0001846c /system/lib/libc.so (strcmp+375)
08-12 22:38:58.190 1598 1598 F DEBUG : #01 pc 00002899 /system/bin/phoneserver
08-12 22:38:58.190 1598 1598 F DEBUG : #02 pc 00016c7d /system/lib/libc.so 
(__libc_init+48)
08-12 22:38:58.190 1598 1598 F DEBUG : #03 pc 0000210c /system/bin/phoneserver
08-12 22:38:58.239 454 633 W NativeCrashListener: Couldn't find ProcessRecord for pid 
1597
08-12 22:38:58.244 454 488 I BootReceiver: Copying /data/tombstones/tombstone_07 to 
DropBox (SYSTEM_TOMBSTONE)
08-12 22:38:58.247 120 120 W : debuggerd: resuming target 1597

【问题讨论】:

    标签: java android porting samsung-galaxy android-7.1-nougat


    【解决方案1】:

    这里没有足够的信息来非常详细地弄清楚。

    phoneserver 进程尝试访问 strcmp() 调用中的 NULL 指针 - 正在比较的两个参数之一可能是 NULL

    不幸的是,您的/system/bin/phoneserver 可执行文件似乎不包含调试符号(或者至少没有地址0x2899 的调试符号)。如果您在 out/.../symbols/system/bin/phoneserver 中有相应的文件(即自此构建以来尚未重建源代码树),您可以通过gdb 或bintools(objdump -dnm 等)。

    如果此崩溃很容易重现,另一种可能性是将未剥离的可执行文件(符号/中的那个)推送到设备上,替换 /system/bin/phoneserver 中的那个。希望崩溃处理程序随后会成功地为您解析该符号——将其打印在日志中。我不确定这是否可行,但如果可行,这可能是最简单的方法。

    【讨论】:

    • 我将此固件从 SM-G313HZ 移植到 SM-G350E,事实是原始源文件没有保留。我尝试将 /system/bin/phoneserver 更改为我们的,尝试返回原来的,但没有帮助。
    • 可执行文件本身很可能不应该包含所有这些。最有可能的是,一些so文件对此负责。那么文件可以包含什么?
    • 地址0x2899,这是错误的strcmp()调用的位置,肯定在phoneserver二进制文件中,如回溯所示。如果它位于 .so 文件中,则回溯会显示(就像堆栈元素 #0 和 #2 一样,它们位于 libc.so 中)。
    • 所以。我该如何解决?我没有这个二进制文件的来源。该二进制文件已经在 cm 1 3-12.1 ROM 上运行,但在从 SM-G313HZ 移植的 AOSP 6.0.1 和 cm 14.1 上却无法运行。我能做些什么改变二进制到它在这个 ROM 上工作?
    • 是的,不幸的是,这就是二进制 blob 的问题。要么您擅长分析和修改可执行文件,要么您尝试为与系统其余部分兼容的全新电话服务器可执行文件生成源代码。但是,实际上,我会说您将无法修复它 - 工作量太大。
    猜你喜欢
    • 2016-05-17
    • 1970-01-01
    • 2021-11-01
    • 1970-01-01
    • 2017-01-05
    • 2017-11-05
    • 2018-03-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多