HarmonyOS鸿蒙Next中rcp下载闪退 Signal:SIGSEGV 6.0.0.130 sp8

HarmonyOS鸿蒙Next中rcp下载闪退 Signal:SIGSEGV 6.0.0.130 sp8 Process life time:762s

Process Memory(kB): 673349(Rss)

Device Memory(kB): Total 11862616, Free 1474856, Available 5420032

Reason:Signal:SIGSEGV(SEGV_MAPERR)@0x0000000000000100 probably caused by NULL pointer dereference

Fault thread info:

Tid:55157, Name:OS_NET_RcpWork

#00 pc 0000000000166800 /system/lib64/platformsdk/libcurl_shared_http3.z.so(curl_multi_socket_action+1716)(046793940980d916029ff423b5034cf3)

#01 pc 00000000000e0b48 /system/lib64/libcollaboration_rcp_native.z.so(OHOS::NetStackExt::Rcp::EpollMultiDriver::EpollSocketCallback(int, unsigned int)+64)(2c74a767523c39b19accda2da5a45fb5)

#02 pc 00000000000e04dc /system/lib64/libcollaboration_rcp_native.z.so(OHOS::NetStackExt::Rcp::EpollMultiDriver::Step(int)+1728)(2c74a767523c39b19accda2da5a45fb5)

#03 pc 00000000000e79d8 /system/lib64/libcollaboration_rcp_native.z.so(2c74a767523c39b19accda2da5a45fb5)

#04 pc 00000000000f5e7c /system/lib64/libcollaboration_rcp_native.z.so(2c74a767523c39b19accda2da5a45fb5)

#05 pc 00000000000f5f0c /system/lib64/libcollaboration_rcp_native.z.so(void* std::__h::__thread_proxy[abi:v15004]<std::__h::tuple<std::__h::unique_ptr<std::__h::__thread_struct, std::__h::default_deletestd::__h::__thread_struct>, std::__h::function<void ()>>> (void*)+56)(2c74a767523c39b19accda2da5a45fb5)

#06 pc 00000000001d1798 /system/lib/ld-musl-aarch64.so.1(start+240)(6dfe4ecea22714b3e8fc8be36e2d9484)

Registers:

x0:0000005b4b714618 x1:00000000000deb10 x2:0000000000000000 x3:0000000000000004

x4:0000005b4e30287d x5:0000005c9233a16d x6:4b4341545354454e x7:0a92ab07d0f0edc0

x8:0000005b4b714630 x9:0000005c92f54880 x10:0000005c9233af98 x11:0000000000000000

x12:0000005b4b714700 x13:00000000000003e8 x14:0000000010624dd3 x15:0000000000000000

x16:000000000000751b x17:00000000ffffffeb x18:0000000000000001 x19:0000005b477e6e00

x20:0000005c75c2e090 x21:0000000020000003 x22:0000000000000009 x23:0000000000000003

x24:0000000000001373 x25:0000000000000100 x26:0000000000000000 x27:0000005c9233b590

x28:0000005c80469898 x29:0000005c9233b1f0

lr:0000005b4de66838 sp:0000005c9233b070 pc:0000005b4de66800

pstate:0000000060001000 esr:0000000092000007

Other thread info:


更多关于HarmonyOS鸿蒙Next中rcp下载闪退 Signal:SIGSEGV 6.0.0.130 sp8的实战教程也可以访问 https://www.itying.com/category-93-b0.html

3 回复

开发者您好,请您参考以下方案:

1、根据您的日志分析,您的问题是空指针解析失败导致,请您先排查一下是否是有哪些变量有没有判空处理。 2、因为是使用rcp模块导致的,常见的crash场景是在不同线程中共用了rcp的session导致资源竞争,导致空指针解引用,最终导致crash。因此,请您排查一下session是否在不同线程共用,如果存在这一情况,请您将session改为临时变量。

如果已上方案未能解决您的问题,请您再反馈。

更多关于HarmonyOS鸿蒙Next中rcp下载闪退 Signal:SIGSEGV 6.0.0.130 sp8的实战系列教程也可以访问 https://www.itying.com/category-93-b0.html


该闪退由SIGSEGV信号触发,表示应用访问了非法内存地址。在HarmonyOS Next 6.0.0.130 SP8中,可能由以下原因导致:

  1. 资源文件问题:RCP(资源编译产物)文件本身存在损坏或格式错误。
  2. 系统兼容性:当前系统版本与RCP文件的编译环境或依赖存在不兼容。
  3. 内存管理异常:应用在加载或解析RCP资源时发生了内存越界或空指针访问。

建议检查RCP文件的完整性,并确认其与当前HarmonyOS Next版本的兼容性。

从你提供的崩溃日志来看,这是一个典型的空指针解引用导致的 SIGSEGV 段错误。具体分析如下:

1. 核心问题定位:

  • 原因: Signal:SIGSEGV(SEGV_MAPERR)@0x0000000000000100 probably caused by NULL pointer dereference 明确指出,崩溃原因是尝试访问一个非法内存地址(0x100),很可能是解引用了空指针。
  • 触发位置: 崩溃发生在 libcurl_shared_http3.z.so 动态库的 curl_multi_socket_action 函数中(调用栈 #00)。
  • 上下文: 该函数由 RCP(Reliable Communication Protocol,可靠通信协议)网络工作线程 OS_NET_RcpWork 调用,属于网络栈协作层(libcollaboration_rcp_native.z.so)。

2. 技术分析:

  • 调用栈显示,崩溃发生在 EpollMultiDriver::Step -> EpollSocketCallback -> curl_multi_socket_action 这条路径上。这表明在 RCP 模块使用 libcurl 处理 HTTP/3 网络套接字事件时,传入了无效的句柄或上下文指针(例如一个为 NULL 或已被释放的 CURLM* 多句柄)。
  • 寄存器 x25 的值为 0x100,与错误地址吻合,这通常是计算了某个基址(可能为 NULL)与偏移量(0x100)的结果,进一步印证了空指针问题。

3. 可能的原因:

  • 生命周期问题: RCP 模块中的某个网络会话、连接或多句柄在其回调(如 EpollSocketCallback)被触发时已被提前销毁,导致回调函数收到了一个无效指针。
  • 并发同步问题: 对 libcurl 多句柄或相关网络资源的访问可能存在竞态条件,例如在一个线程中清理资源,而另一个线程(如 OS_NET_RcpWork)仍在尝试使用它。
  • libcurl 与 HTTP/3 集成缺陷: 在 HarmonyOS Next 6.0.0.130 sp8 的特定版本中,libcurl_shared_http3.z.so 库与 RCP 协作层的交互可能存在边界情况处理不当。

4. 解决方向:

  • 检查代码: 重点审查 RCP 模块中与 EpollMultiDriverEpollSocketCallback 相关的代码,确保所有 libcurl 句柄(尤其是 CURLM*)的生命周期管理正确,在销毁前确保所有异步操作都已安全停止。
  • 强化同步: 检查并确保对共享的 libcurl 资源(多句柄、easy 句柄)的访问是线程安全的,特别是在驱动步进(Step)和回调处理期间。
  • 验证环境: 确认使用的 libcurl 库版本与 HarmonyOS Next SDK 完全匹配,并检查是否有已知的与 HTTP/3 或异步套接字操作相关的缺陷。
  • 简化复现: 尝试在更简单的网络条件下(如使用 HTTP/1.1 或不同的服务器)测试 RCP 下载,以判断问题是否特定于 HTTP/3 或某些复杂的网络状态切换。

此崩溃属于底层网络库的集成缺陷,需要结合具体的 RCP 实现代码和网络操作场景进行深入调试。

回到顶部