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

Dotnet MAUI集成Shiny 3# Alpha Job遇Android SIGSEGV错误求助

.NET MAUI中Shiny Job引发Android SIGSEGV崩溃的问题分析

问题背景

使用.NET MAUI开发应用,添加用于执行Web API调用的Shiny Job后,Android端出现崩溃,Logcat输出SIGSEGV错误。由于使用的是Shiny MAUI Alpha版本,开发者不提供支持,需确认崩溃源于自身代码还是Shiny的版本Bug,同时怀疑崩溃与ConnectivityService或RequiredInternetAccess = InternetAccess.Any设置相关。

崩溃日志

[07-20 08:11:56.776 1452:4329 D/ConnectivityService]
requestNetwork for uid/pid:10515/17091 activeRequest: null callbackRequest: 1115 [NetworkRequest [ REQUEST id=1116, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10515 RequestorUid: 10515 RequestorPkg: com.devonuto.myapp UnderlyingNetworks: Null] ]] callback flags: 0 order: 2147483647

[07-20 08:11:56.782 1452:2148 D/WifiNetworkFactory]
got request NetworkRequest [ REQUEST id=1116, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10515 RequestorUid: 10515 RequestorPkg: com.devonuto.myapp UnderlyingNetworks: Null] ]

[07-20 08:11:56.782 1452:2148 D/UntrustedWifiNetworkFactory]
got request NetworkRequest [ REQUEST id=1116, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10515 RequestorUid: 10515 RequestorPkg: com.devonuto.myapp UnderlyingNetworks: Null] ]

[07-20 08:11:56.783 1452:2148 D/OemPaidWifiNetworkFactory]
got request NetworkRequest [ REQUEST id=1116, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10515 RequestorUid: 10515 RequestorPkg: com.devonuto.myapp UnderlyingNetworks: Null] ]

[07-20 08:11:56.793 17091:17116 F/libc]
Fatal signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x78 in tid 17116 (WM.task-4), pid 17091 (uto.myapp)

[07-20 08:12:10.219 17119:17119 F/DEBUG]
Cmdline: com.devonuto.myapp

[07-20 08:12:10.219 17119:17119 F/DEBUG]
pid: 17091, tid: 17116, name: WM.task-4  >>> com.devonuto.myapp <<<

[07-20 08:12:10.219 17119:17119 F/DEBUG]
      #00 pc 000000000010a950  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/lib/arm64/libmonosgen-2.0.so (BuildId: 7126846382da0d3e3df8b79b9e84b9aa48aaaf36)

[07-20 08:12:10.219 17119:17119 F/DEBUG]
      #01 pc 000000000010a798  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/lib/arm64/libmonosgen-2.0.so (BuildId: 7126846382da0d3e3df8b79b9e84b9aa48aaaf36)

[07-20 08:12:10.219 17119:17119 F/DEBUG]
      #02 pc 000000000009ab9c  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/lib/arm64/libmonosgen-2.0.so (mono_runtime_invoke+52) (BuildId: 7126846382da0d3e3df8b79b9e84b9aa48aaaf36)

[07-20 08:12:10.219 17119:17119 F/DEBUG]
      #03 pc 000000000002af5c  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/lib/arm64/libmonodroid.so (xamarin::android::internal::MonodroidRuntime::Java_mono_android_Runtime_register(_JNIEnv*, _jstring*, _jclass*, _jstring*)+276) (BuildId: f2b35ad7b68e8f683693b4693ca43b2d312da134)

[07-20 08:12:10.219 17119:17119 F/DEBUG]
      #06 pc 000000000090d5c0  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/oat/arm64/base.vdex (crc6401c279856d6dfa9c.ShinyJobWorker.<clinit>+16)

[07-20 08:12:10.220 17119:17119 F/DEBUG]
      #23 pc 00000000003db2a8  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/oat/arm64/base.vdex (androidx.work.WorkerFactory.createWorkerWithDefaultFallback+20)

[07-20 08:12:10.220 17119:17119 F/DEBUG]
      #29 pc 00000000003df47e  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/oat/arm64/base.vdex (androidx.work.impl.WorkerWrapper.runWorker+734)

[07-20 08:12:10.220 17119:17119 F/DEBUG]
      #35 pc 00000000003df192  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/oat/arm64/base.vdex (androidx.work.impl.WorkerWrapper.run+32)

[07-20 08:12:10.220 17119:17119 F/DEBUG]
      #41 pc 00000000003ee5ac  /data/app/~~vGtfU8056GdzOPsvkH9Xwg==/com.devonuto.myapp-9GAii6I21Z8cSs5-r99zdw==/oat/arm64/base.vdex (androidx.work.impl.utils.SerialExecutor$Task.run+4)

[07-20 08:12:18.887 1452:4329 D/ConnectivityService]
ConnectivityService NetworkRequestInfo binderDied(uid/pid:10515/17091, [NetworkRequest [ REQUEST id=1116, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10515 RequestorUid: 10515 RequestorPkg: com.devonuto.myapp UnderlyingNetworks: Null] ]], android.os.BinderProxy@fb80569)

[07-20 08:12:18.887 1452:3898 W/ActivityManager]
Scheduling restart of crashed service com.devonuto.myapp/androidx.work.impl.background.systemjob.SystemJobService in 1000ms for connection

[07-20 08:12:18.887 1452:2155 D/ConnectivityService]
releasing NetworkRequest [ REQUEST id=1116, [ Capabilities: INTERNET&NOT_RESTRICTED&TRUSTED&NOT_VCN_MANAGED Uid: 10515 RequestorUid: 10515 RequestorPkg: com.devonuto.myapp UnderlyingNetworks: Null] ] (release request)

相关代码

MauiProgram.cs

// Shiny Jobs
 builder.Services.AddJob(new JobInfo(typeof(DataRefreshJob), nameof(DataRefreshJob), false)
 {
      RequiredInternetAccess = InternetAccess.Any,     
 }, true);

DataRefreshJob.cs

public async Task Run(JobInfo jobInfo, CancellationToken cancelToken)
{
    _service = AppService.GetService<IMethodService>();
    _ = _service.GetScheduledApiData();
}

分析

  1. 崩溃根源定位:从崩溃栈的#06 pc可以看到,崩溃发生在ShinyJobWorker.<clinit>(静态构造函数)阶段,属于Shiny框架的Android Worker类初始化过程。SIGSEGV(段错误)是原生层内存访问错误,结合调用栈来看,是Shiny的.NET到Android原生绑定逻辑出现了问题,大概率是Alpha版本的框架Bug。
  2. 网络请求相关判断:Logcat中ConnectivityService的请求日志是正常的网络权限申请流程,并非崩溃直接原因。但RequiredInternetAccess的设置会触发Shiny内部的网络约束处理逻辑,可能是触发Bug的诱因。
  3. 自身代码的潜在问题:Run方法中_ = _service.GetScheduledApiData();未使用await且未传递取消令牌,会导致异步操作脱离跟踪,可能引发资源泄漏,但不会直接触发原生层的SIGSEGV崩溃。

建议

  • 移除网络约束测试:暂时注释RequiredInternetAccess = InternetAccess.Any配置,重新运行应用,若崩溃消失,则说明Shiny处理网络约束的逻辑存在Bug。
  • 修复异步调用问题:将Run方法中的异步调用改为await _service.GetScheduledApiData(cancelToken);,正确传递取消令牌,避免异步操作泄漏。
  • 简化Job逻辑排查:暂时将Run方法简化为仅输出日志,不调用API,确认崩溃是否由Shiny的初始化逻辑导致,而非API调用。
  • 替代方案考虑:由于Shiny是Alpha版本且无官方支持,可尝试直接使用AndroidX WorkManager的.NET绑定实现后台任务,或等待Shiny发布稳定版本。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.25 07:36:18