Microsoft.Data.Sqlite 10.0.11+ fails to load on RHEL 8 (GLIBC_2.33 not found)

Aperta
#39,148 6 commenti 0 reazioni 0 assegnatari Vedi su GitHub

I maintainer di solito rispondono entro 2 giorni

Nessuno ha ancora preso questa issue.

Valutazione

Difficoltà
4/5
Tempo stimato
3-5 giorni
Idoneità per principianti
45/100
Tipo di issue
Bug
Chiarezza
Da chiarire
Stato di attività
Attiva
Stack tecnologico
csharp, linux, sqlite

Direzione di ricerca

Start with the linked sqlite-glibc-repro and Program.cs line 3, then inspect Microsoft.Data.Sqlite 10.0.11's SQLitePCLRaw native asset and the related SQLitePCL.raw issue. Determine where the GLIBC_2.33 requirement enters and identify the repository's appropriate test or packaging entry point. Done means an agreed fix or documented compatibility outcome for RHEL 8, with a regression check if supported.

Scritto dal modello di indicizzazione a partire dal testo della issue.

Descrizione

area-adonet-sqlite area-external customer-reported regression
Bug description

Microsoft.Data.Sqlite 10.0.11+ doesn't work on RHEL 8, even though RHEL 8 is supported by .NET 10

Cause:

Starting with Microsoft.Data.Sqlite 10.0.11, which depends on SQLitePCLRaw 2.1.12, the bundled
linux-x64 native library libe_sqlite3.so needs a higher version of glibc than ships in RHEL 8.

RHEL 8 ships glibc 2.28 and is a supported OS for .NET 10.
So a .NET 10 servicing update of Microsoft.Data.Sqlite stops working on a supported platform.

Related SQLitePCL.raw issue: https://github.com/ericsink/SQLitePCL.raw/issues/674.

Your code
https://github.com/timothycoleman/sqlite-glibc-repro
Stack traces
Unhandled exception. System.TypeInitializationException: The type initializer for 'Microsoft.Data.Sqlite.SqliteConnection' threw an exception.
 ---> System.Reflection.TargetInvocationException: Exception has been thrown by the target of an invocation.
 ---> System.DllNotFoundException: Unable to load shared library 'e_sqlite3' or one of its dependencies. In order to help diagnose loading problems, consider using a tool like strace. If you're using glibc, consider setting the LD_DEBUG environment variable:
/app/e_sqlite3.so: cannot open shared object file: No such file or directory
/lib64/libc.so.6: version `GLIBC_2.33' not found (required by /app/libe_sqlite3.so)
libe_sqlite3.so: cannot open shared object file: No such file or directory
/app/e_sqlite3: cannot open shared object file: No such file or directory
/app/libe_sqlite3: cannot open shared object file: No such file or directory

   at SQLitePCL.SQLite3Provider_e_sqlite3.NativeMethods.sqlite3_libversion_number()
   at SQLitePCL.SQLite3Provider_e_sqlite3.NativeMethods.sqlite3_libversion_number()
   at SQLitePCL.SQLite3Provider_e_sqlite3.SQLitePCL.ISQLite3Provider.sqlite3_libversion_number()
   at SQLitePCL.raw.SetProvider(ISQLite3Provider imp)
   at SQLitePCL.Batteries_V2.Init()
   at System.Reflection.MethodBaseInvoker.InterpretedInvoke_Method(Object obj, IntPtr* args)
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
   --- End of inner exception stack trace ---
   at System.Reflection.MethodBaseInvoker.InvokeWithNoArgs(Object obj, BindingFlags invokeAttr)
   at System.Reflection.RuntimeMethodInfo.Invoke(Object obj, BindingFlags invokeAttr, Binder binder, Object[] parameters, CultureInfo culture)
   at Microsoft.Data.Sqlite.SqliteConnection..cctor()
   --- End of inner exception stack trace ---
   at Microsoft.Data.Sqlite.SqliteConnection..ctor(String connectionString)
   at Program.<Main>$(String[] args) in /src/Program.cs:line 3
Microsoft.Data.Sqlite version

10.0.11

Target framework

.NET 10

Operating system

No response

Lingua principale
C#
Stelle
14.8k
Fork
3.4k
Merge medio
3g 18h
PR unite (30g)
159

Preparare l'ambiente

Apri in Codespaces

Avvia il container di sviluppo del progetto nel browser, con il tuo account GitHub.

Come iniziare

  1. Leggi tutta la issue e poi la guida ai contributi del progetto.
  2. Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
  3. Fai un fork del repository e lavora su un branch.
  4. Apri una pull request che faccia riferimento al numero della issue.

Altre issue di dotnet/efcore

Tutte le issue di dotnet/efcore

Issue simili

Altre issue su C#

Ricevi le nuove issue nella tua casella

Un breve riepilogo di issue GitHub adatte ai principianti.