I’m backing up from a Linux host (Docker image linuxserver/duplicati: (2.1.0.5_stable_2025-03-04) to a Win10 host via SMB mount. During the clean-up phase, Duplicati makes 5 attempts to download the dblock file and then crashes completely and restarts. Logs are lost and the signal to healthchecks.io is never sent. The only way I catch this is through profiling. I’m in the process of manually “identifying” each file and deleting it from the host, then running a purge-broken-files
but this feels like a bug.
Live Profiling Logs
Operation Get with file duplicati-b73a3bf40330f4ce0bc32c2493f45b22c.dblock.zip attempt 3 of 5 failed with message: The file duplicati-b73a3bf40330f4ce0bc32c2493f45b22c.dblock.zip was downloaded and had size 52559872 but the size was expected to be 52524595
...
System.Exception: The file duplicati-b73a3bf40330f4ce0bc32c2493f45b22c.dblock.zip was downloaded and had size 52559872 but the size was expected to be 52524595 at Duplicati.Library.Main.BackendManager.DoGetAsync(FileEntryItem item, CancellationToken cancellationToken) at Duplicati.Library.Utility.Utility.Await(Task task) at Duplicati.Library.Main.BackendManager.ThreadRun()
Docker Logs
fail: Microsoft.AspNetCore.Server.Kestrel[13]
Connection id "0HNC8R3OG5RO4", Request id "0HNC8R3OG5RO4:00000001": An unhandled exception was thrown by the application.
System.NullReferenceException: Object reference not set to an instance of an object.
at Duplicati.Server.Scheduler.get_WorkerQueue()
at Duplicati.Server.Scheduler.GetSchedulerQueueIds()
at WebserverCore.Services.SchedulerService.GetSchedulerQueueIds()
at Duplicati.WebserverCore.Services.StatusService.GetStatus()
at Duplicati.WebserverCore.Notifications.WebsocketAccessor.SendInitialStatus(WebSocket connection)
at Duplicati.WebserverCore.Notifications.WebsocketAccessor.AddConnection(WebSocket newConnection)
at Duplicati.WebserverCore.Middlewares.WebsocketExtensions.<>c__DisplayClass0_0.<<UseNotifications>b__0>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.HandleException(HttpContext context, ExceptionDispatchInfo edi)
at Microsoft.AspNetCore.Diagnostics.ExceptionHandlerMiddlewareImpl.<Invoke>g__Awaited|10_0(ExceptionHandlerMiddlewareImpl middleware, HttpContext context, Task task)
at Duplicati.WebserverCore.Middlewares.StaticFilesExtensions.<>c__DisplayClass5_0.<<UseDefaultStaticFiles>b__1>d.MoveNext()
--- End of stack trace from previous location ---
at Microsoft.AspNetCore.Authorization.AuthorizationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Authentication.AuthenticationMiddleware.Invoke(HttpContext context)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
Unhandled exception. System.NullReferenceException: Object reference not set to an instance of an object.
at Duplicati.Server.Scheduler.get_WorkerQueue()
at Duplicati.Server.Scheduler.GetSchedulerQueueIds()
at WebserverCore.Services.SchedulerService.GetSchedulerQueueIds()
at Duplicati.WebserverCore.Services.StatusService.GetStatus()
at Duplicati.WebserverCore.Notifications.WebsocketAccessor.<.ctor>b__4_0(Object _, EventArgs _)
at System.Threading.Tasks.Task.<>c.<ThrowAsync>b__128_1(Object state)
at System.Threading.QueueUserWorkItemCallback.Execute()
at System.Threading.ThreadPoolWorkQueue.Dispatch()
at System.Threading.PortableThreadPool.WorkerThread.WorkerThreadStart()
Connection to localhost (::1) 8200 port [tcp/*] succeeded!
Server has started and is listening on port 8200