You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linphone Android调试版连接SIP账户时崩溃问题排查

Linphone Android release/5.1调试版SIP账户助手崩溃问题排查

问题描述

构建并运行Linphone Android的release/5.1版本,使用账户助手连接SIP账户时触发SIGSEGV崩溃,崩溃堆栈信息如下:

2023-06-05 11:24:54.487 12702-12702 libc                    org.linphone.debug                   A  Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x0 in tid 12702 (.linphone.debug), pid 12702 (.linphone.debug)
2023-06-05 11:24:54.596 12904-12904 DEBUG                   pid-12904                            A  pid: 12702, tid: 12702, name: .linphone.debug  >>> org.linphone.debug <<<
2023-06-05 11:24:54.806 12904-12904 DEBUG                   pid-12904                            A      #01 pc 000000000085143c  /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/lib/arm64/liblinphone.so (_get_identity+96)
2023-06-05 11:24:54.806 12904-12904 DEBUG                   pid-12904                            A      #02 pc 0000000000851818  /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/lib/arm64/liblinphone.so (linphone_account_creator_create_proxy_config+60)
2023-06-05 11:24:54.806 12904-12904 DEBUG                   pid-12904                            A      #03 pc 0000000000851ad4  /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/lib/arm64/liblinphone.so (linphone_account_creator_create_account_in_core+8)
2023-06-05 11:24:54.806 12904-12904 DEBUG                   pid-12904                            A      #04 pc 00000000008085c0  /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/lib/arm64/liblinphone.so (Java_org_linphone_core_AccountCreatorImpl_createAccountInCore+24)
2023-06-05 11:24:54.806 12904-12904 DEBUG                   pid-12904                            A      #12 pc 0000000000025e6a  /dev/ashmem/dalvik-classes19.dex extracted in memory from /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/base.apk!classes19.dex (deleted) (org.linphone.core.AccountCreatorImpl.createAccountInCore+6)
2023-06-05 11:24:54.807 12904-12904 DEBUG                   pid-12904                            A      #18 pc 000000000000c320  /dev/ashmem/dalvik-classes15.dex extracted in memory from /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/base.apk!classes15.dex (deleted) (org.linphone.activities.assistant.viewmodels.GenericLoginViewModel.createAccountAndAuthInfo+188)
2023-06-05 11:24:54.807 12904-12904 DEBUG                   pid-12904                            A      #24 pc 0000000000042092  /dev/ashmem/dalvik-classes7.dex extracted in memory from /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/base.apk!classes7.dex (deleted) (org.linphone.databinding.AssistantGenericAccountLoginFragmentBindingImpl._internalCallbackOnClick+30)
2023-06-05 11:24:54.807 12904-12904 DEBUG                   pid-12904                            A      #30 pc 000000000000a098  /dev/ashmem/dalvik-classes9.dex extracted in memory from /data/app/org.linphone.debug-dyfVZCnnDJPISTU3kRD9rg==/base.apk!classes9.dex (deleted) (org.linphone.generated.callback.OnClickListener.onClick+8)
2023-06-05 11:24:55.751   471-550   InputDispatcher         system_process                       E  channel 'b6f63cb org.linphone.debug/org.linphone.activities.assistant.AssistantActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
---------------------------- PROCESS ENDED (12702) for package org.linphone.debug ----------------------------
2023-06-05 11:24:55.751   471-550   InputDispatcher         system_process                       E  channel '6b37690 org.linphone.debug/org.linphone.activities.main.MainActivity (server)' ~ Channel is unrecoverably broken and will be disposed!
2023-06-05 11:24:55.789   471-3330  ActivityManager         system_process                       E  getPackageFerformanceMode--ComponentInfo{org.linphone.debug/org.linphone.activities.main.MainActivity}----org.linphone.debug

正式版可正常使用,需排查调试版构建设置或代码环境中的问题。

崩溃原因分析

从堆栈信息看,崩溃是_get_identity函数中访问了空地址(fault addr 0x0),调用链始于账户创建流程,说明调试版中核心身份信息对象未被正确初始化,大概率是构建配置或初始化流程的差异导致。

排查与解决方向

  • 编译配置差异

    • 检查build.gradle和CMake配置,确认调试版是否启用了与正式版一致的编译选项。比如调试版可能因-O0优化缺失,导致空指针未被提前拦截;或DEBUG宏定义触发了某些未充分测试的条件分支。
    • 对比正式版,确保调试版native库编译时未遗漏关键参数,比如架构兼容性(当前堆栈为arm64,确认构建脚本是否指定了正确ABI)。
  • 依赖库构建问题

    • 确保使用官方提供的脚本拉取并编译所有依赖组件,调试版可能因依赖版本不匹配或未完整编译,导致liblinphone.so功能缺失。
    • 验证调试版依赖库的完整性,对比正式版的liblinphone.so大小和符号表,排查是否有核心函数未正确编译。
  • 初始化与权限问题

    • 检查调试版LinphoneCore的初始化流程,确认在账户创建前已完成核心对象的正确实例化,_get_identity依赖的核心上下文可能未初始化。
    • 确认调试版已申请必要的权限(如网络权限),权限缺失可能导致账户配置获取失败,进而引发空指针。
  • 本地代码修改问题

    • 如果对代码做过自定义修改,排查GenericLoginViewModel、AccountCreatorImpl等账户创建相关类,确认是否引入了未判空的调用逻辑,导致native层接收空指针。

验证步骤

  1. 使用官方调试构建脚本重新编译项目,排除自定义配置的干扰。
  2. 在native层_get_identity函数添加日志或断点,定位具体空指针来源。
  3. 对比正式版与调试版的编译参数、依赖版本,逐一排除差异点。

内容的提问来源于stack exchange,提问作者dnj

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.19 14:17:14