Logos Absturz direkt nach Start

Und es ist ein Mega-peinlicher Programmier-Fehler: NullPointer-Exception (bzw. Argument-Null-Ex):
Auszug:
Error ID: 8744 Error detail: ArgumentNullException: Value cannot be null. (Parameter 'key') System.ArgumentNullException: Value cannot be null. (Parameter 'key') at System.Collections.Generic.Dictionary`2.FindValue(TKey key) at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Libronix.DataTypes.DataTypeManager.OurDataTypeDictionary.get_Item(String key) at Libronix.DigitalLibrary.Utility.DataTypeLists.<>c.<DoGetBibleDataTypes>b__20_2(ResourceMilestoneIndexInfo mi) at System.Linq.Enumerable.SelectIListIterator`2.MoveNext() at System.Linq.Enumerable.OfTypeIterator[TResult](IEnumerable source)+MoveNext() at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Boolean& found) at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source) at Libronix.DigitalLibrary.Utility.DataTypeLists.<>c.<DoGetBibleDataTypes>b__20_1(ResourceInfo ri)
Zudem werden noch SQLite-Fehler folgender Art geloggt:
Program Version: 39.1 (39.1.0.0006) Time: 2025-01-29 12:07:10 +01:00 (2025-01-29T11:07:10Z) SQLite Error 283: recovered 18 frames from WAL file X:\Logos\Documents\abcdef.7nk\LocalUserPreferences\PreferencesManager.db-wal Program Version: 39.1 (39.1.0.0006) Time: 2025-01-29 12:07:10 +01:00 (2025-01-29T11:07:10Z) SQLite Error 283: recovered 12 frames from WAL file X:\Logos\Data\abcdef.7nk\Errors\Application\ErrorReportManager.db-wal Program Version: 39.1 (39.1.0.0006) Time: 2025-01-29 12:07:10 +01:00 (2025-01-29T11:07:10Z) SQLite Error 283: recovered 2 frames from WAL file X:\Logos\Data\abcdef.7nk\ResourceManager\ResourceManager.db-wal Program Version: 39.1 (39.1.0.0006) Time: 2025-01-29 12:07:10 +01:00 (2025-01-29T11:07:10Z) SQLite Error 283: recovered 30 frames from WAL file X:\Logos\Data\abcdef.7nk\KeyLinkManager\keylinkmanager.db-wal
Best Answer
-
Es gibt auch andere Fehlerquellen als Praktikanten 🤣
Das ganze ist aber jetzt behoben.1
Comments
-
Which of the developers forgot to Null-Check the dictionary parameter?
Da bin ich gespannt, wie sie das fixen wollen… Es bleibt keine Zeit ein Update zu laden, da crasht die App schon! Da war wahrscheinlich der Praktikant dran.
2 -
Error ID: 8744 Error detail: ArgumentNullException: Value cannot be null. (Parameter 'key') System.ArgumentNullException: Value cannot be null. (Parameter 'key') at System.Collections.Generic.Dictionary`2.FindValue(TKey key) at System.Collections.Generic.Dictionary`2.get_Item(TKey key) at Libronix.DataTypes.DataTypeManager.OurDataTypeDictionary.get_Item(String key) at Libronix.DigitalLibrary.Utility.DataTypeLists.<>c.<DoGetBibleDataTypes>b__20_2(ResourceMilestoneIndexInfo mi) at System.Linq.Enumerable.SelectIListIterator`2.MoveNext() at System.Linq.Enumerable.OfTypeIterator[TResult](IEnumerable source)+MoveNext() at System.Linq.Enumerable.TryGetFirst[TSource](IEnumerable`1 source, Boolean& found) at System.Linq.Enumerable.FirstOrDefault[TSource](IEnumerable`1 source) at Libronix.DigitalLibrary.Utility.DataTypeLists.<>c.<DoGetBibleDataTypes>b__20_1(ResourceInfo ri) at System.Linq.Enumerable.SelectIListIterator`2.MoveNext() at Libronix.Utility.EnumerableUtility.<WhereNotNull>g__DoWhereNotNull|64_0[T](IEnumerable`1 s)+MoveNext() at System.Linq.Enumerable.AppendPrependIterator`1.LoadFromEnumerator() at System.Linq.Enumerable.AppendPrepend1Iterator`1.MoveNext() at System.Collections.Generic.HashSet`1.UnionWith(IEnumerable`1 other) at System.Collections.Generic.HashSet`1..ctor(IEnumerable`1 collection, IEqualityComparer`1 comparer) at System.Linq.Enumerable.DistinctIterator`1.ToList() at Libronix.DigitalLibrary.Utility.DataTypeLists.DoGetBibleDataTypes() at Libronix.Utility.LazyObject`1.get_Value() at Libronix.DigitalLibrary.Utility.DataTypeLists.GetBibleDataTypes() at Libronix.DigitalLibrary.Utility.NotesTool.NotesDigitalLibraryService.GetDataTypePreferencesAsync(CancellationToken cancellationToken) at Faithlife.NotesApi.ClientData.SqliteNotesClientRepository.VerifyDataTypePreferencesAsync(DbConnector connector, CancellationToken cancellationToken) at Faithlife.NotesApi.ClientData.SqliteNotesClientRepository.UpdateAnchorsAsync(UpdateAnchorsRepositorySettings settings, CancellationToken cancellationToken) at Faithlife.NotesApi.Core.CommonNotesApi.UpdateAnchorsAsync(UpdateAnchorsSettings settings, CancellationToken cancellationToken) at Faithlife.NotesApi.ClientCore.ClientNotesApi.UpdateAnchorsAsync(UpdateAnchorsSettings settings, CancellationToken cancellationToken) at Libronix.DigitalLibrary.NotesTool.NotesToolManager.UpdateAnchorsAsync(CancellationToken cancellationToken) at Libronix.DigitalLibrary.NotesTool.NotesToolManager.BackgroundWork.RunAsync(CancellationToken cancellationToken) at Libronix.DigitalLibrary.NotesTool.NotesToolManager.BackgroundWork.<Run>b__1_0()
Der Manager des Notiz-Tools wird im Hintergrund gestartet. Er updated die Notiz-Anker und versucht die Einstellungen der Datentypen zu verifizieren (und lädt sie von der lokalen SQLite-Datenbank). Dabei ruft er die Bibel-Datentypen in Logos ab und iteriert durch alle Typen. Dabei wird versucht ein Wert aus einer Wörterbuch-Datenstruktur abzurufen mit einem ungültigen NULL-Wert.
0 -
Es könnte natürlich sein, dass eine neue Bibel beim Datentyp einen falschen oder keinen Wert gesetzt hat…
0 -
Es gibt auch andere Fehlerquellen als Praktikanten 🤣
Das ganze ist aber jetzt behoben.1 -
Es gibt sicherlich andere Fehlerquellen, ich sage nur, normalerweise müssen Programmierer einen Null-Check machen und nicht immer erwarten, dass auch die richtigen Daten kommen. Dazu einfach ein bisschen mehr Unit-Testing und/oder Integration-Tests sowie TDD machen…
0 -
Jep, das Problem war nur, dass jemand außerhalb der Programmierung an den Büchern etwas geändert hat. Es lag also nicht an einer neuen Version, die getestet werden konnte. Ärgerlich ist es trotzdem, das ist verständlich.
0