Ideas about "System.ArgumentNullException: Value cannot be null.", "Parameter name: path"

I’ve received this error a few times now.

I can repair the database successfully, and have completed at least one manual backup after a successful repair. But this error is occurring with most backup runs …

System.ArgumentNullException: Value cannot be null.
Parameter name: path
  at Duplicati.Library.Main.BackendManager.WaitForEmpty (Duplicati.Library.Main.Database.LocalDatabase db, System.Data.IDbTransaction transation) [0x00067] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Operation.CompactHandler.DoDelete (Duplicati.Library.Main.Database.LocalDeleteDatabase db, Duplicati.Library.Main.BackendManager backend, System.Collections.Generic.IEnumerable`1[T] deleteableVolumes, System.Data.IDbTransaction& transaction) [0x00040] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Operation.CompactHandler.DoCompact (Duplicati.Library.Main.Database.LocalDeleteDatabase db, System.Boolean hasVerifiedBackend, System.Data.IDbTransaction& transaction, Duplicati.Library.Main.BackendManager sharedBackend) [0x004a2] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Operation.DeleteHandler.DoRun (Duplicati.Library.Main.Database.LocalDeleteDatabase db, System.Data.IDbTransaction& transaction, System.Boolean hasVerifiedBacked, System.Boolean forceCompact, Duplicati.Library.Main.BackendManager sharedManager) [0x00397] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Operation.BackupHandler.CompactIfRequired (Duplicati.Library.Main.BackendManager backend, System.Int64 lastVolumeSize) [0x000a5] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Operation.BackupHandler.RunAsync (System.String[] sources, Duplicati.Library.Utility.IFilter filter, System.Threading.CancellationToken token) [0x01033] in <8f1de655bd1240739a78684d845cecc8>:0 
  at CoCoL.ChannelExtensions.WaitForTaskOrThrow (System.Threading.Tasks.Task task) [0x00050] in <9a758ff4db6c48d6b3d4d0e5c2adf6d1>:0 
  at Duplicati.Library.Main.Operation.BackupHandler.Run (System.String[] sources, Duplicati.Library.Utility.IFilter filter, System.Threading.CancellationToken token) [0x00009] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Controller+<>c__DisplayClass14_0.<Backup>b__0 (Duplicati.Library.Main.BackupResults result) [0x0004b] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Controller.RunAction[T] (T result, System.String[]& paths, Duplicati.Library.Utility.IFilter& filter, System.Action`1[T] method) [0x0026f] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Controller.Backup (System.String[] inputsources, Duplicati.Library.Utility.IFilter filter) [0x00074] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Server.Runner.Run (Duplicati.Server.Runner+IRunnerData data, System.Boolean fromQueue) [0x00349] in <c5f097a49c0a4f1fb0f93cf3f5f218b1>:0 

This additional error occurs when/if a manual run is attempted after the above error, before a repair …

Duplicati.Library.Interface.UserInformationException: Found 1 remote files that are not recorded in local storage, please run repair
  at Duplicati.Library.Main.Operation.FilelistProcessor.VerifyRemoteList (Duplicati.Library.Main.BackendManager backend, Duplicati.Library.Main.Options options, Duplicati.Library.Main.Database.LocalDatabase database, Duplicati.Library.Main.IBackendWriter log, System.String protectedfile) [0x00103] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Operation.BackupHandler.PreBackupVerify (Duplicati.Library.Main.BackendManager backend, System.String protectedfile) [0x0010b] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Operation.BackupHandler.RunAsync (System.String[] sources, Duplicati.Library.Utility.IFilter filter, System.Threading.CancellationToken token) [0x01033] in <8f1de655bd1240739a78684d845cecc8>:0 
  at CoCoL.ChannelExtensions.WaitForTaskOrThrow (System.Threading.Tasks.Task task) [0x00050] in <9a758ff4db6c48d6b3d4d0e5c2adf6d1>:0 
  at Duplicati.Library.Main.Operation.BackupHandler.Run (System.String[] sources, Duplicati.Library.Utility.IFilter filter, System.Threading.CancellationToken token) [0x00009] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Controller+<>c__DisplayClass14_0.<Backup>b__0 (Duplicati.Library.Main.BackupResults result) [0x0004b] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Controller.RunAction[T] (T result, System.String[]& paths, Duplicati.Library.Utility.IFilter& filter, System.Action`1[T] method) [0x0026f] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Library.Main.Controller.Backup (System.String[] inputsources, Duplicati.Library.Utility.IFilter filter) [0x00074] in <8f1de655bd1240739a78684d845cecc8>:0 
  at Duplicati.Server.Runner.Run (Duplicati.Server.Runner+IRunnerData data, System.Boolean fromQueue) [0x00349] in <c5f097a49c0a4f1fb0f93cf3f5f218b1>:0 

There have been no recent changes to the backup settings, and weeks of successful backups until now. I’m unsure how to further track down the issue and repair it.

Any suggestions?

Thanks, in advance, for the attention.

I am also experiencing a similar error that has begun happening since upgrading to 2.0.5.1 beta:

System.ArgumentNullException: Path cannot be null.
Parameter name: path
   at Duplicati.Library.Main.BackendManager.WaitForEmpty(LocalDatabase db, IDbTransaction transation)
   at Duplicati.Library.Main.Operation.CompactHandler.DoDelete(LocalDeleteDatabase db, BackendManager backend, IEnumerable`1 deleteableVolumes, IDbTransaction& transaction)
   at Duplicati.Library.Main.Operation.CompactHandler.DoCompact(LocalDeleteDatabase db, Boolean hasVerifiedBackend, IDbTransaction& transaction, BackendManager sharedBackend)
   at Duplicati.Library.Main.Operation.DeleteHandler.DoRun(LocalDeleteDatabase db, IDbTransaction& transaction, Boolean hasVerifiedBacked, Boolean forceCompact, BackendManager sharedManager)
   at Duplicati.Library.Main.Operation.BackupHandler.CompactIfRequired(BackendManager backend, Int64 lastVolumeSize)
   at Duplicati.Library.Main.Operation.BackupHandler.<RunAsync>d__20.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.ExceptionServices.ExceptionDispatchInfo.Throw()
   at CoCoL.ChannelExtensions.WaitForTaskOrThrow(Task task)
   at Duplicati.Library.Main.Controller.<>c__DisplayClass14_0.<Backup>b__0(BackupResults result)
   at Duplicati.Library.Main.Controller.RunAction[T](T result, String[]& paths, IFilter& filter, Action`1 method)
   at Duplicati.Library.Main.Controller.Backup(String[] inputsources, IFilter filter)
   at Duplicati.Server.Runner.Run(IRunnerData data, Boolean fromQueue)

The job in question is a ~300 GB daily backup that keeps the last 30 versions. The couple of times this has happen to me thus far, it has been in the compaction phase.

Edit: More relevant info:
Operating System: Windows Server 2012 R2
Backend: WebDAV (NextCloud)

Looks like it may be happening after a compaction is attempted.

What version of Duplicati are you using?
What back end?
What operating system and version? (If not Windows, also specify your mono version.)

@drwtsn32, Thanks for the reply.

I’m using the docker image (duplicati/duplicati) on a QNAP NAS.
The current version is 2.0.5.1_beta_2020-01-18.

Thanks @rivy, what back end are you using?

Actually these details may be irrelevant. I searched the forum for “WaitForEmpty” and there are a few threads already of other people having similar issues.

I use Compaction feature and am not personally seeing this on any of my systems running 2.0.5.1. (I have about 10…)

Backend: Backblaze B2

This is an intermittent (although frequent) failure. Additionally, I have other (smaller) backups to the same target backend which are completing without any issues.

I ran the compaction task again and watched it more closely this time. It appeared to work fine right up until this happened:

Mar 19, 2020 1:49 PM: The operation Compact has failed with error: Path cannot be null. Parameter name: path
Mar 19, 2020 1:49 PM: Backend event: Put - Failed: duplicati-i273c492075474319979462da9b1593bb.dindex.zip.aes ()
Mar 19, 2020 1:49 PM: Operation Put with file duplicati-i273c492075474319979462da9b1593bb.dindex.zip.aes attempt 5 of 5 failed with message: Path cannot be null. Parameter name: path
Mar 19, 2020 1:49 PM: Renaming "duplicati-ic8fd0a88d5bf4015a068713cfd61f86f.dindex.zip.aes" to "duplicati-i273c492075474319979462da9b1593bb.dindex.zip.aes"
Mar 19, 2020 1:49 PM: Backend event: Put - Rename: duplicati-i273c492075474319979462da9b1593bb.dindex.zip.aes ()
Mar 19, 2020 1:49 PM: Backend event: Put - Rename: duplicati-ic8fd0a88d5bf4015a068713cfd61f86f.dindex.zip.aes ()
Mar 19, 2020 1:49 PM: Backend event: Put - Retrying: duplicati-ic8fd0a88d5bf4015a068713cfd61f86f.dindex.zip.aes ()
Mar 19, 2020 1:49 PM: Operation Put with file duplicati-ic8fd0a88d5bf4015a068713cfd61f86f.dindex.zip.aes attempt 4 of 5 failed with message: Path cannot be null. Parameter name: path
Mar 19, 2020 1:49 PM: Renaming "duplicati-ia4ee67e1a4474b06bc7a58fd1b09b6e2.dindex.zip.aes" to "duplicati-ic8fd0a88d5bf4015a068713cfd61f86f.dindex.zip.aes"
Mar 19, 2020 1:49 PM: Backend event: Put - Rename: duplicati-ic8fd0a88d5bf4015a068713cfd61f86f.dindex.zip.aes ()
Mar 19, 2020 1:49 PM: Backend event: Put - Rename: duplicati-ia4ee67e1a4474b06bc7a58fd1b09b6e2.dindex.zip.aes ()
Mar 19, 2020 1:49 PM: Backend event: Put - Retrying: duplicati-ia4ee67e1a4474b06bc7a58fd1b09b6e2.dindex.zip.aes ()
Mar 19, 2020 1:49 PM: Operation Put with file duplicati-ia4ee67e1a4474b06bc7a58fd1b09b6e2.dindex.zip.aes attempt 3 of 5 failed with message: Path cannot be null. Parameter name: path
Mar 19, 2020 1:48 PM: Renaming "duplicati-i125c1168e5934518aa127e4fb24da668.dindex.zip.aes" to "duplicati-ia4ee67e1a4474b06bc7a58fd1b09b6e2.dindex.zip.aes"
Mar 19, 2020 1:48 PM: Backend event: Put - Rename: duplicati-ia4ee67e1a4474b06bc7a58fd1b09b6e2.dindex.zip.aes ()
Mar 19, 2020 1:48 PM: Backend event: Put - Rename: duplicati-i125c1168e5934518aa127e4fb24da668.dindex.zip.aes ()
Mar 19, 2020 1:48 PM: Backend event: Put - Retrying: duplicati-i125c1168e5934518aa127e4fb24da668.dindex.zip.aes ()
Mar 19, 2020 1:48 PM: Operation Put with file duplicati-i125c1168e5934518aa127e4fb24da668.dindex.zip.aes attempt 2 of 5 failed with message: Path cannot be null. Parameter name: path
Mar 19, 2020 1:48 PM: Renaming "duplicati-i93d47cd424824be0a4bcebab4e2a9899.dindex.zip.aes" to "duplicati-i125c1168e5934518aa127e4fb24da668.dindex.zip.aes"
Mar 19, 2020 1:48 PM: Backend event: Put - Rename: duplicati-i125c1168e5934518aa127e4fb24da668.dindex.zip.aes ()
Mar 19, 2020 1:48 PM: Backend event: Put - Rename: duplicati-i93d47cd424824be0a4bcebab4e2a9899.dindex.zip.aes ()
Mar 19, 2020 1:48 PM: Backend event: Put - Retrying: duplicati-i93d47cd424824be0a4bcebab4e2a9899.dindex.zip.aes ()
Mar 19, 2020 1:48 PM: Operation Put with file duplicati-i93d47cd424824be0a4bcebab4e2a9899.dindex.zip.aes attempt 1 of 5 failed with message: Path cannot be null. Parameter name: path
Mar 19, 2020 1:48 PM: Backend event: Put - Completed: duplicati-bd61c3dd552de45b79ebbc8fb5039c013.dblock.zip.aes (50.72 MB)
Mar 19, 2020 1:48 PM: Backend event: Put - Started: duplicati-bd61c3dd552de45b79ebbc8fb5039c013.dblock.zip.aes (50.72 MB)
Mar 19, 2020 1:47 PM: Renaming "duplicati-b0e5da57e5769470098f1e63669b6b51e.dblock.zip.aes" to "duplicati-bd61c3dd552de45b79ebbc8fb5039c013.dblock.zip.aes"
Mar 19, 2020 1:47 PM: Backend event: Put - Rename: duplicati-bd61c3dd552de45b79ebbc8fb5039c013.dblock.zip.aes (50.72 MB)
Mar 19, 2020 1:47 PM: Backend event: Put - Rename: duplicati-b0e5da57e5769470098f1e63669b6b51e.dblock.zip.aes (50.72 MB)
Mar 19, 2020 1:47 PM: Backend event: Put - Retrying: duplicati-b0e5da57e5769470098f1e63669b6b51e.dblock.zip.aes (50.72 MB)
Mar 19, 2020 1:47 PM: Operation Put with file duplicati-b0e5da57e5769470098f1e63669b6b51e.dblock.zip.aes attempt 1 of 5 failed with message: One or more errors occurred.
Mar 19, 2020 1:47 PM: Backend event: Put - Started: duplicati-b0e5da57e5769470098f1e63669b6b51e.dblock.zip.aes (50.72 MB)

Meant to add this to my previous post but butchered the formatting pretty good.

The message that indicated “One more more errors occurred” contained this:

"ClassName":"System.AggregateException","Message":"One or more errors occurred.","Data":null,"InnerException":{"ClassName":"System.Net.WebException","Message":"The request was aborted: Could not create SSL/TLS secure channel.","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at Duplicati.Library.Utility.AsyncHttpRequest.AsyncWrapper.GetResponseOrStream()\r\n at Duplicati.Library.Utility.AsyncHttpRequest.GetRequestStream(Int64 contentlength)\r\n at Duplicati.Library.Backend.WEBDAV.<PutAsync>d__36.MoveNext()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nGetResponseOrStream\nDuplicati.Library.Utility, Version=2.0.5.1, Culture=neutral, PublicKeyToken=null\nDuplicati.Library.Utility.AsyncHttpRequest+AsyncWrapper\nSystem.Object GetResponseOrStream()","HResult":-2146233079,"Source":"Duplicati.Library.Utility","WatsonBuckets":null},"HelpURL":null,"StackTraceString":" at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)\r\n at Duplicati.Library.Main.BackendManager.DoPut(FileEntryItem item)\r\n at Duplicati.Library.Main.BackendManager.ThreadRun()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nWait\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.Threading.Tasks.Task\nBoolean Wait(Int32, System.Threading.CancellationToken)","HResult":-2146233088,"Source":"mscorlib","WatsonBuckets":null,"InnerExceptions":[{"ClassName":"System.Net.WebException","Message":"The request was aborted: Could not create SSL/TLS secure channel.","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at Duplicati.Library.Utility.AsyncHttpRequest.AsyncWrapper.GetResponseOrStream()\r\n at Duplicati.Library.Utility.AsyncHttpRequest.GetRequestStream(Int64 contentlength)\r\n at Duplicati.Library.Backend.WEBDAV.<PutAsync>d__36.MoveNext()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nGetResponseOrStream\nDuplicati.Library.Utility, Version=2.0.5.1, Culture=neutral, PublicKeyToken=null\nDuplicati.Library.Utility.AsyncHttpRequest+AsyncWrapper\nSystem.Object GetResponseOrStream()","HResult":-2146233079,"Source":"Duplicati.Library.Utility","WatsonBuckets":null}]}

The first four retry attempts failed with this message:

{"ClassName":"System.ArgumentNullException","Message":"Path cannot be null.","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at System.IO.FileStream.Init(String path, FileMode mode, FileAccess access, Int32 rights, Boolean useRights, FileShare share, Int32 bufferSize, FileOptions options, SECURITY_ATTRIBUTES secAttrs, String msgPath, Boolean bFromProxy, Boolean useLongPath, Boolean checkHost)\r\n at System.IO.FileStream..ctor(String path, FileMode mode, FileAccess access, FileShare share)\r\n at Duplicati.Library.Encryption.EncryptionBase.Encrypt(String inputfile, String outputfile)\r\n at Duplicati.Library.Main.BackendManager.FileEntryItem.Encrypt(IEncryption encryption, IBackendWriter stat)\r\n at Duplicati.Library.Main.BackendManager.DoPut(FileEntryItem item)\r\n at Duplicati.Library.Main.BackendManager.ThreadRun()","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nInit\nmscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089\nSystem.IO.FileStream\nVoid Init(System.String, System.IO.FileMode, System.IO.FileAccess, Int32, Boolean, System.IO.FileShare, Int32, System.IO.FileOptions, SECURITY_ATTRIBUTES, System.String, Boolean, Boolean, Boolean)","HResult":-2147467261,"Source":"mscorlib","WatsonBuckets":null,"ParamName":"path"}

The last retry attempt failed with this message:

{"ClassName":"System.ArgumentNullException","Message":"Path cannot be null.","Data":null,"InnerException":null,"HelpURL":null,"StackTraceString":" at Duplicati.Library.Main.BackendManager.WaitForEmpty(LocalDatabase db, IDbTransaction transation)\r\n at Duplicati.Library.Main.Operation.CompactHandler.DoDelete(LocalDeleteDatabase db, BackendManager backend, IEnumerable1 deleteableVolumes, IDbTransaction& transaction)\r\n at Duplicati.Library.Main.Operation.CompactHandler.DoCompact(LocalDeleteDatabase db, Boolean hasVerifiedBackend, IDbTransaction& transaction, BackendManager sharedBackend)\r\n at Duplicati.Library.Main.Operation.CompactHandler.Run()\r\n at Duplicati.Library.Main.Controller.RunAction[T](T result, String& paths, IFilter& filter, Action1 method)\r\n at Duplicati.Library.Main.Controller.Compact()\r\n at Duplicati.Server.Runner.Run(IRunnerData data, Boolean fromQueue)","RemoteStackTraceString":null,"RemoteStackIndex":0,"ExceptionMethod":"8\nWaitForEmpty\nDuplicati.Library.Main, Version=2.0.5.1, Culture=neutral, PublicKeyToken=null\nDuplicati.Library.Main.BackendManager\nVoid WaitForEmpty(Duplicati.Library.Main.Database.LocalDatabase, System.Data.IDbTransaction)","HResult":-2147467261,"Source":"Duplicati.Library.Main","WatsonBuckets":null,"ParamName":"path"

There’s a chance this is related to the following issue

which is fixed here:

Thanks for all the help / input.

Currently, after a few error/repair/retry cycles, the intermittent error has stopped.

No changes were made to the setup, and the duplicati version is unchanged (Duplicati - 2.0.5.1_beta_2020-01-18). So, I’m perplexed as to the real source of the problem and how it was “solved”.

:man_shrugging:

I observed a similar outcome. When the job failed, if I did a repair and then restart it would get a little further than it did last time and eventually complete the job.

I read the links @warwickmm provided indicating that the problem has been fixed… I look forward to the next beta release!

I think the issue mainly occurs when an upload and all of its reattempts fail. If the upload was successful, then you probably won’t encounter this problem.