首页 > 解决方案 > 在启动期间调用 Database.Migrate() 时崩溃

问题描述

我有一个使用 Entity Framework Core 的 Xamarin Forms 应用程序。当我开始并在模拟器上测试时,一切都很好。此外,当我在运行先前版本的设备上启动时,它会按预期工作。但是,当我在没有数据的设备上运行应用程序时,它会在执行以下操作时崩溃:

        var context = new EfCoreContext();
        context.Database.Migrate();

当谷歌的预发布报告在 9 台设备中的 7 台上失败时,我首先注意到了这一点。那里的错误是:

*** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***
Build fingerprint: 'google/walleye/walleye:9/PQ2A.190405.003/5310204:user/release-keys'
Revision: 'MP1'
ABI: 'arm64'
pid: 12770, tid: 12770, name: utions.moneyfox  >>> com.applysolutions.moneyfox <<<
signal 11 (SIGSEGV), code 1 (SEGV_MAPERR), fault addr 0x20
Cause: null pointer dereference
    x0  0000000000000000  x1  0000000000000000  x2  0000000000000000  x3  0000007fec923bd0
    x4  0000007f29ade9a0  x5  0000007fec923c60  x6  0000000000000000  x7  0000000000000000
    x8  0000000000000000  x9  0000000000000000  x10 0000000000000000  x11 0000000000000000
    x12 0000000000000000  x13 0000000000000000  x14 00000000ffffffff  x15 0000000000000000
    x16 0000007f1bd1d1f8  x17 0000007f1bb44670  x18 0000000000000008  x19 0000007f1bd34560
    x20 0000000000000002  x21 0000000000000000  x22 0000000000000000  x23 000000000000007f
    x24 0000000000000000  x25 0000000000000000  x26 0000007fec923d50  x27 0000007f16bdda34
    x28 0000007f29ade000  x29 0000007fec923070
    sp  0000007fec923070  lr  0000007f1ba8b658  pc  0000007f1bb44678
backtrace:
    #00 pc 0000000000177678  /data/app/com.applysolutions.moneyfox-tqWhOmZmoDQ8yd5YLjvTqg==/lib/arm64/libmonosgen-2.0.so (mono_jit_info_get_method+8)

有趣的是,当我删除 Migrate 调用时,重新启动并添加它,应用程序就可以启动了。同样在预发布报告中始终有 2 或 3 台设备可以毫无问题地启动应用程序。我可以想象这是某种时间问题或其他一些影响在这里发挥作用。但是无论我把它放在我的应用程序的哪个位置,这个调用都会一直崩溃。

我试图通过尝试捕获和全局错误处理程序获取更多信息,这些信息应该记录到我的日志文件中。但不幸的是,什么也没抓到。有没有办法缩小问题范围,可能基于发布前报告中的错误日志?

标签: xamarin.formsxamarin.androidentity-framework-core

解决方案


好吧,这似乎是 Xamarin.Android 中的一个问题:https ://developercommunity.visualstudio.com/content/problem/580820/xamarin-problem-following-update-to-vs2019-161.html

似乎它已在 16.1.4 中修复。


推荐阅读