Hi,
for the past few days, I experience a crash of my app when EFCore generates a database from my models. This appears to only happen on a device, not on the emulator, and it appears to only happen if one of my models has the [Key] data annotation on it or the property is set to be the primary key through Fluent.
This is my model:
[Table("MobileUser")]
public class UserModel
{
[Key] // works without this
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int PKMobileUser { get; set; }
}
This is my DBContext:
public class DatabaseContext : DbContext
{
public DbSet Logins { get; set; }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
var path = string.Empty;
IConfiguration config = DependencyService.Get<IConfiguration>();
path = config.DatabasePath;
optionsBuilder.UseSqlite($"Filename=" + Path.Combine(path, "TestEFSqlite.db"));
// try to create a text file, to be sure it's not the path or permissions
System.IO.File.WriteAllText(Path.Combine(path, "test.txt"), "Demotext");
}
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.ApplyConfiguration(new UserModelConfig());
}
}
The test.txt file is generated as expected in the path that my android project returns, so it's not a permission issue.
This is my App.cs relevant code:
public App()
{
InitializeComponent();
SQLitePCL.Batteries_V2.Init();
using (var db = new DatabaseContext())
{
try
{
db.Database.EnsureDeleted(); // crashes here
db.Database.EnsureCreated(); // or there if EnsureDeleted() is commented out
}
catch (Exception ex)
{
int i = 0; // for setting a breakpoint, but never reached
}
}
MainPage = new MainPage();
}
And here's the debugger output:
05-24 10:30:39.123 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.EntityFrameworkCore.Relational.resources/2.2.4.0_de-de_adb9793829ddae60/Microsoft.EntityFrameworkCore.Relational.resources.dll'.
05-24 10:30:39.123 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.EntityFrameworkCore.Relational.resources.dll'.
05-24 10:30:39.123 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.EntityFrameworkCore.Relational.resources/2.2.4.0_de-de_adb9793829ddae60/Microsoft.EntityFrameworkCore.Relational.resources.exe'.
05-24 10:30:39.123 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.EntityFrameworkCore.Relational.resources.exe'.
05-24 10:30:39.123 D/Mono ( 4968): Assembly Loader probing location: '/storage/emulated/0/Android/data/com.companyname/files/.override/de-DE/Microsoft.EntityFrameworkCore.Relational.resources.dll'.
05-24 10:30:39.133 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.EntityFrameworkCore.Relational.resources/2.2.4.0_de_adb9793829ddae60/Microsoft.EntityFrameworkCore.Relational.resources.dll'.
05-24 10:30:39.133 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.EntityFrameworkCore.Relational.resources.dll'.
05-24 10:30:39.133 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.EntityFrameworkCore.Relational.resources/2.2.4.0_de_adb9793829ddae60/Microsoft.EntityFrameworkCore.Relational.resources.exe'.
05-24 10:30:39.133 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.EntityFrameworkCore.Relational.resources.exe'.
05-24 10:30:39.133 D/Mono ( 4968): Assembly Loader probing location: '/storage/emulated/0/Android/data/com.companyname/files/.override/de/Microsoft.EntityFrameworkCore.Relational.resources.dll'.
05-24 10:30:39.143 D/Mono ( 4968): DllImport searching in: 'e_sqlite3' ('libe_sqlite3.so').
05-24 10:30:39.143 D/Mono ( 4968): Searching for 'sqlite3_open_v2'.
=================================================================
Native Crash Reporting
05-24 10:30:39.153 D/Mono ( 4968): DllImport searching in: 'e_sqlite3' ('libe_sqlite3.so').
05-24 10:30:39.153 D/Mono ( 4968): Searching for 'sqlite3_errcode'.=================================================================
Got a SIGSEGV while executing native code. This usually indicates
a fatal error in the mono runtime or one of the native libraries
used by your application.
=================================================================
=================================================================
Basic Fault Adddress Reporting
=================================================================
Memory around native instruction pointer (0x7fa3bbe678):0x7fa3bbe668 00 1c 40 b9 c0 03 5f d6 fd 7b bf a9 fd 03 00 91 ..@..._..{......
0x7fa3bbe678 08 20 40 b9 a8 00 c8 37 88 01 e0 37 00 00 40 f9 . @....7...7..@.
0x7fa3bbe688 fd 7b c1 a8 c0 03 5f d6 60 08 00 b0 01 0a 00 f0 .{...._.`.......
0x7fa3bbe698 03 0a 00 f0 00 24 06 91 21 80 08 91 63 8c 0a 91 .....$..!...c...
No native Android stacktrace (see debuggerd output).
=================================================================
Managed Stacktrace:
===================================================
05-24 10:30:39.153 D/Mono ( 4968): DllImport searching in: 'e_sqlite3' ('libe_sqlite3.so').==============
=================================================================
05-24 10:30:39.153 D/Mono ( 4968): Searching for 'sqlite3_errmsg'.
05-24 10:30:39.163 D/Mono ( 4968): DllImport searching in: 'e_sqlite3' ('libe_sqlite3.so').
05-24 10:30:39.163 D/Mono ( 4968): Searching for 'sqlite3_extended_errcode'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.Data.Sqlite.resources/2.2.4.0_de-de_adb9793829ddae60/Microsoft.Data.Sqlite.resources.dll'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.Data.Sqlite.resources.dll'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.Data.Sqlite.resources/2.2.4.0_de-de_adb9793829ddae60/Microsoft.Data.Sqlite.resources.exe'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.Data.Sqlite.resources.exe'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/storage/emulated/0/Android/data/com.companyname/files/.__override__/de-DE/Microsoft.Data.Sqlite.resources.dll'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.Data.Sqlite.resources/2.2.4.0_de_adb9793829ddae60/Microsoft.Data.Sqlite.resources.dll'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.Data.Sqlite.resources.dll'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/mono/gac/Microsoft.Data.Sqlite.resources/2.2.4.0_de_adb9793829ddae60/Microsoft.Data.Sqlite.resources.exe'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/Users/builder/jenkins/workspace/xamarin-android-d16-1/xamarin-android/external/mono/sdks/out/android-arm64-v8a-release/lib/Microsoft.Data.Sqlite.resources.exe'.
05-24 10:30:39.163 D/Mono ( 4968): Assembly Loader probing location: '/storage/emulated/0/Android/data/com.companyname/files/.__override__/de/Microsoft.Data.Sqlite.resources.dll'.
05-24 10:30:39.183 E/mono-rt ( 4968): /proc/self/maps:
05-24 10:30:39.183 E/mono-rt ( 4968): 12c00000-12d6c000 rw-p 00000000 00:01 23273 /dev/ashmem/dalvik-main space (deleted)
05-24 10:30:39.183 E/mono-rt ( 4968): 12d6c000-2ac00000 ---p 0016c000 00:01 23273 /dev/ashmem/dalvik-main space (deleted)
05-24 10:30:39.183 E/mono-rt ( 4968): 32c00000-32c01000 rw-p 00000000 00:01 23274 /dev/ashmem/dalvik-main space 1 (deleted)
05-24 10:30:39.183 E/mono-rt ( 4968): 32c01000-4ac00000 ---p 00001000 00:01 23274 /dev/ashmem/dalvik-main space 1 (deleted)
05-24 10:30:39.183 E/mono-rt ( 4968): 6f7d3000-6fa73000 rw-p 00000000 fd:01 2981918 /data/dalvik-cache/arm64/system@framework@boot.art
05-24 10:30:39.183 E/mono-rt ( 4968): 6fa73000-6fbef000 rw-p 00000000 fd:01 2981926 /data/dalvik-cache/arm64/system@framework@boot-core-libart.art
05-24 10:30:39.183 E/mono-rt ( 4968): 6fbef000-6fc24000 rw-p 00000000 fd:01 2981936 /data/dalvik-cache/arm64/system@framework@boot-conscrypt.art
05-24 10:30:39.183 E/mono-rt ( 4968): 6fc24000-6fc5d000 rw-p 00000000 fd:01 2981946 /data/dalvik-cache/arm64/system@framework@boot-okhttp.art
05-24 10:30:39.183 E/mono-rt ( 4968): 6fc5d000-6fc60000 rw-p 00000000 fd:01 2981948 /data/dalvik-cache/arm64/system@framework@boot-core-junit.art
05-24 10:30:39.183 E/mono-rt ( 4968): 6fc60000-6fca6000 rw-p 00000000 fd:01 2981949 /data/dalvik-cache/arm64/system@framework@boot-bouncycastle.art
05-24 10:30:39.183 E/mono-rt ( 4968): 6fca6000-6fce8000 rw-p 00000000 fd:01 2981951 /data/dalvik-cache/arm64/system@framework@boot-ext.art
05-24 10:30:39.183 E/mono-rt ( 4968): 6fce8000-704c7000 rw-p 00000000 fd:01 2981953 /data/dalvik-cache/arm64/system@framework@boot-framework.art
05-24 10:30:39.183 E/mono-rt ( 4968): 704c7000-70569000 rw-p 00000000 fd:01 2981958 /data/dalvik-cache/arm64/system@framework@boot-telephony-common.art
05-24 10:30:39.183 E/mono-rt ( 4968): 70569000-70571000 rw-p 00000000 fd:01 2981959 /data/dalvik-cache/arm64/system@framework@boot-voip-common.art
05-24 10:30:39.183 E/mono-rt ( 4968): 70571000-7057d000 rw-p 00000000 fd:01 2981960 /data/dalvik-cache/arm64/system@framework@boot-ims-common.art
05-24 10:30:39.183 E/mono-rt ( 4968): 7057d000-705a0000 rw-p 00000000 fd:01 2981961 /data/dalvik-cache/arm64/system@framework@boot-apache-xml.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705a0000-705c8000 rw-p 00000000 fd:01 2981962 /data/dalvik-cache/arm64/system@framework@boot-org.apache.http.legacy.boot.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705c8000-705c9000 rw-p 00000000 fd:01 2981963 /data/dalvik-cache/arm64/system@framework@boot-tcmiface.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705c9000-705ca000 rw-p 00000000 fd:01 2981965 /data/dalvik-cache/arm64/system@framework@boot-telephony-ext.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705ca000-705cd000 rw-p 00000000 fd:01 2981967 /data/dalvik-cache/arm64/system@framework@boot-WfdCommon.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705cd000-705ce000 rw-p 00000000 fd:01 2981969 /data/dalvik-cache/arm64/system@framework@boot-oem-services.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705ce000-705d2000 rw-p 00000000 fd:01 2981971 /data/dalvik-cache/arm64/system@framework@boot-qcom.fmradio.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705d2000-705d3000 rw-p 00000000 fd:01 2981973 /data/dalvik-cache/arm64/system@framework@boot-qcmediaplayer.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705d3000-705e2000 rw-p 00000000 fd:01 2981975 /data/dalvik-cache/arm64/system@framework@boot-modemservicemanager.art
05-24 10:30:39.183 E/mono-rt ( 4968): 705e2000-705ea000 rw-p 00000000 fd:01 2981977 /data/dalvik-cache/arm64/system@framework@boot-vts.art
05-24 10:30:39.183 F/libc ( 4968): Fatal signal 11 (SIGSEGV), code 1, fault addr 0x20 in tid 4968 (com.companyname)
I factory-reset my phone (ZTE A2017G running Android 7.1) to no avail. I'm completely lost here. All I can say is it used to work like a charm a few days ago (I believe I updated Visual Studio 2019 to version 16.1.0 in the meantime - not sure if that could be the culprit?)
Any help is greatly appreciated
Currently installed Nuget Packages and versions:
Microsoft.EntityFrameworkCore (2.2.4)
Microsoft.EntityFrameworkCore.Sqlite (2.2.4)
Xamarin.Essentials (1.1.0)
Xamarin.Forms (4.0.0.425677)
Cheers,
Roland