Description
- I have searched open and closed issues for duplicates.
- I have searched the forum for related topics.
Environment info
- Duplicati version: 2.0.7.101 Canary (but it might just be a random .NET Framework failure)
- Operating system: Windows 10 Professional
- Backend: Microsoft OneDrive v2
Description
TrayIcon crashed during a routine backup, leaving its green icon which (as usual) vanished when moused over. Event log has:
Logged: 3/24/2024 12:59:32 PM Source: .NET Runtime Event ID: 1026 General:
Application: Duplicati.GUI.TrayIcon.exe
Framework Version: v4.0.30319
Description: The process was terminated due to an unhandled exception.
Exception Info: exception code c0000005, exception address 00007FFAAC888BED
Logged: 3/24/2024 12:59:39 PM Source: Application Error Event ID: 1000 General:
Faulting application name: Duplicati.GUI.TrayIcon.exe, version: 2.0.7.101, time stamp: 0x65eb0952
Faulting module name: ntdll.dll, version: 10.0.19041.3996, time stamp: 0x39215800
Exception code: 0xc0000005
Fault offset: 0x00000000000d8bed
Faulting process id: 0x5cc4
Faulting application start time: 0x01da77b40980d850
Faulting application path: C:\Duplicati\duplicati-2.0.7.101_canary_2024-03-08\Duplicati.GUI.TrayIcon.exe
Faulting module path: C:\Windows\SYSTEM32\ntdll.dll
Report Id: ab40d213-401d-461e-a670-48ac2c2441bc
Faulting package full name:
Faulting package-relative application ID:
Steps to reproduce
- Unknown. I ran a GUI backup. No recent changes to Windows or Duplicati known. Reproduce on demand might not exist.
- Actual result:
Crash partway through backup. It managed to upload 10 dblock and 10 dindex files to OneDrive before the crash though. - Expected result:
Backup
As you can see, my Duplicati folder path is a little non-standard. For years I've been installing Duplicati from .zip
files into per-version folders, enabling easier start of whatever Duplicati I need for whatever purpose I'm aiming at. I also disable autoupdate notifications and the usual dual-procsss updater steps because I want to run exactly the version I need. I don't think this setup is related to crash though.
Some Google searching makes me think .NET Framework had a memory access violation. I don't know how Duplicati can fix that beyond moving to a newer platform (to possibly get a different set of bugs -- but hopefully fewer overall). See Battle plan for migrating to .Net8
Screenshots
Debug log
I do have a profiling log with --profile-all-database-queries
, but I think there are intentional or accidental gaps in what that shows.
A slightly anonymized chunk at the end is:
2024-03-24 12:59:08 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: Starting - ExecuteNonQuery: INSERT INTO "FilesetEntry" ("FilesetID", "FileID", "Lastmodified") VALUES (654, 284798, 638465007362291830)
2024-03-24 12:59:08 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: ExecuteNonQuery: INSERT INTO "FilesetEntry" ("FilesetID", "FileID", "Lastmodified") VALUES (654, 284798, 638465007362291830) took 0:00:00:00.218
2024-03-24 12:59:08 -04 - [Verbose-Duplicati.Library.Main.Operation.Backup.MetadataPreProcess.FileEntry-AddDirectory]: Adding directory C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\idb\12183338011.sqlite\20170505143037\
2024-03-24 12:59:08 -04 - [Verbose-Duplicati.Library.Main.Operation.Backup.FileEnumerationProcess-IncludingPath]: Including path as no filters matched: C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\idb\12183338011.sqlite\20170505143037\12183338011.sqlite
2024-03-24 12:59:09 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: Starting - ExecuteScalarInt64: SELECT "ID" FROM "Block" WHERE "Hash" = "cMtrKp9+HXrBpyvPTv+EpjIoMuRHR/EUi4SfiCX0Rjk=" AND "Size" = 149
2024-03-24 12:59:18 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: ExecuteScalarInt64: SELECT "ID" FROM "Block" WHERE "Hash" = "cMtrKp9+HXrBpyvPTv+EpjIoMuRHR/EUi4SfiCX0Rjk=" AND "Size" = 149 took 0:00:00:09.269
2024-03-24 12:59:18 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: Starting - ExecuteScalarInt64: SELECT "ID" FROM "Blockset" WHERE "Fullhash" = "cMtrKp9+HXrBpyvPTv+EpjIoMuRHR/EUi4SfiCX0Rjk=" AND "Length" = 149
2024-03-24 12:59:18 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: ExecuteScalarInt64: SELECT "ID" FROM "Blockset" WHERE "Fullhash" = "cMtrKp9+HXrBpyvPTv+EpjIoMuRHR/EUi4SfiCX0Rjk=" AND "Length" = 149 took 0:00:00:00.213
2024-03-24 12:59:18 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: Starting - ExecuteScalarInt64: SELECT "A"."ID" FROM "Metadataset" A, "BlocksetEntry" B, "Block" C WHERE "A"."BlocksetID" = "B"."BlocksetID" AND "B"."BlockID" = "C"."ID" AND "C"."Hash" = "cMtrKp9+HXrBpyvPTv+EpjIoMuRHR/EUi4SfiCX0Rjk=" AND "C"."Size" = 149
2024-03-24 12:59:18 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: ExecuteScalarInt64: SELECT "A"."ID" FROM "Metadataset" A, "BlocksetEntry" B, "Block" C WHERE "A"."BlocksetID" = "B"."BlocksetID" AND "B"."BlockID" = "C"."ID" AND "C"."Hash" = "cMtrKp9+HXrBpyvPTv+EpjIoMuRHR/EUi4SfiCX0Rjk=" AND "C"."Size" = 149 took 0:00:00:00.012
2024-03-24 12:59:18 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: Starting - ExecuteScalarInt64: SELECT "ID" FROM "PathPrefix" WHERE "Prefix" = "C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\idb\12183338011.sqlite\"
2024-03-24 12:59:18 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: ExecuteScalarInt64: SELECT "ID" FROM "PathPrefix" WHERE "Prefix" = "C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\idb\12183338011.sqlite\" took 0:00:00:00.000
2024-03-24 12:59:18 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: Starting - ExecuteScalarInt64: SELECT "ID" FROM "FileLookup" WHERE "BlocksetID" = -100 AND "MetadataID" = 283921 AND "Path" = "20170505143037\" AND "PrefixID" = 5405
2024-03-24 12:59:19 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: ExecuteScalarInt64: SELECT "ID" FROM "FileLookup" WHERE "BlocksetID" = -100 AND "MetadataID" = 283921 AND "Path" = "20170505143037\" AND "PrefixID" = 5405 took 0:00:00:00.522
2024-03-24 12:59:19 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: Starting - ExecuteNonQuery: INSERT INTO "FilesetEntry" ("FilesetID", "FileID", "Lastmodified") VALUES (654, 284799, 638465008401123377)
2024-03-24 12:59:19 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: ExecuteNonQuery: INSERT INTO "FilesetEntry" ("FilesetID", "FileID", "Lastmodified") VALUES (654, 284799, 638465008401123377) took 0:00:00:00.000
2024-03-24 12:59:35 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: Starting - ExecuteScalarInt64: SELECT "ID" FROM "PathPrefix" WHERE "Prefix" = "C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\idb\12183338011.sqlite\20170505143037\"
2024-03-24 12:59:35 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteScalarInt64]: ExecuteScalarInt64: SELECT "ID" FROM "PathPrefix" WHERE "Prefix" = "C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\idb\12183338011.sqlite\20170505143037\" took 0:00:00:00.635
2024-03-24 12:59:36 -04 - [Verbose-Duplicati.Library.Main.Operation.Backup.FilePreFilterProcess.FileEntry-SkipCheckNoMetadataChange]: Skipped checking file, because no metadata was updated C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\idb\12183338011.sqlite\20170505143037\12183338011.sqlite
2024-03-24 12:59:36 -04 - [Profiling-Timer.Begin-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: Starting - ExecuteNonQuery: INSERT INTO "FilesetEntry" ("FilesetID", "FileID", "Lastmodified") VALUES (654, 11457, 636398010525420000)
2024-03-24 12:59:37 -04 - [Profiling-Timer.Finished-Duplicati.Library.Main.Database.ExtensionMethods-ExecuteNonQuery]: ExecuteNonQuery: INSERT INTO "FilesetEntry" ("FilesetID", "FileID", "Lastmodified") VALUES (654, 11457, 636398010525420000) took 0:00:00:00.394
2024-03-24 12:59:36 -04 - [Verbose-Duplicati.Library.Main.Operation.Backup.MetadataPreProcess.FileEntry-AddDirectory]: Adding directory C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\.metadata-v2\
2024-03-24 12:59:36 -04 - [Verbose-Duplicati.Library.Main.Operation.Backup.FileEnumerationProcess-IncludingPath]: Including path as no filters matched: C:\Users\Me\My Drive\CBB_HP4\C\Users\Me\AppData\Roaming\Mozilla\Firefox\Profiles\3w8afwwg.default\storage\default\http+++cas.ny.us.criteo.com\.metadata-v2\20170805232928\
I'm also preserving the database at the time of crash (including -journal
), and I also have the DB before (I keep a rolling history).
Some things in the crash DB look less than perfect, so I will probably bring this back up carefully, so any Duplicati goof gets found.
Sometimes all this care winds up being wasted, but I'd rather err on the side of caution because there are still unsolved corruptions around, which typically stay unsolved due to lack of information. If any developer experts want to advise on my analysis, please do.
Bad cleanups at backup time from a previous backup that failed were a suspected backup-breaker in the forum, but data is scarce...
Unexpected difference in fileset; unable to delete broken version. Crash here has lots of Duplicati info, but little on .NET Framework.
One thing I'll be looking at is what happens to a dblock/dindex pair that were uploaded but aren't currently in IndexBlockLink data.