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(); }
分析
- 崩溃根源定位:从崩溃栈的
#06 pc可以看到,崩溃发生在ShinyJobWorker.<clinit>(静态构造函数)阶段,属于Shiny框架的Android Worker类初始化过程。SIGSEGV(段错误)是原生层内存访问错误,结合调用栈来看,是Shiny的.NET到Android原生绑定逻辑出现了问题,大概率是Alpha版本的框架Bug。 - 网络请求相关判断:Logcat中ConnectivityService的请求日志是正常的网络权限申请流程,并非崩溃直接原因。但
RequiredInternetAccess的设置会触发Shiny内部的网络约束处理逻辑,可能是触发Bug的诱因。 - 自身代码的潜在问题: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
相关产品推荐
相关产品推荐

