I've stumbled upon a weird edge case.
I'm on windows 11.
Somehow I managed to have a folder which name was a single space (I think I messed up a destination directory in qBittorent which led to the content being in \somedir\<space>\something instead of \somedir\something.
With this folder in my drive, Cobian.Reflector.UserInterface.exe crashed when it was scanning the folder (this is while estimating the size of a backup)
I could debug a dmp file and I got the following callstack:
Code: Select all
[External Code]
mscorlib.dll!string.Substring(int startIndex, int length) Line 1268
at System\String.cs(1268)
AlphaFS.dll!Alphaleonis.Win32.Filesystem.Path.GetRegularPathCore(string path, Alphaleonis.Win32.Filesystem.GetFullPathOptions options, bool allowEmpty)
AlphaFS.dll!Alphaleonis.Win32.Filesystem.FileSystemEntryInfo.FullPath.set(string value)
AlphaFS.dll!Alphaleonis.Win32.Filesystem.FindFileSystemEntryInfo.<Enumerate>d__88<string>.MoveNext()
[External Code]
AlphaFS.dll!Alphaleonis.Win32.Filesystem.Directory.GetDirectories(string path, string searchPattern, System.IO.SearchOption searchOption)
Cobian.Reflector.Common.dll!Cobian.Reflector.SizeCalculatorTool.calculateDirectory(string directoryName, bool includeSubdirs, System.Collections.Generic.List<Cobian.Reflector.FilterObject> inclusions, System.Collections.Generic.List<Cobian.Reflector.FilterObject> exclusions)
Cobian.Reflector.Common.dll!Cobian.Reflector.SizeCalculatorTool.calculateDirectory(string directoryName, bool includeSubdirs, System.Collections.Generic.List<Cobian.Reflector.FilterObject> inclusions, System.Collections.Generic.List<Cobian.Reflector.FilterObject> exclusions)
[The 1 frame(s) above this were repeated 7880 times]
Cobian.Reflector.Common.dll!Cobian.Reflector.SizeCalculatorTool.calculateDirectory(string directoryName, bool includeSubdirs, System.Collections.Generic.List<Cobian.Reflector.FilterObject> inclusions, System.Collections.Generic.List<Cobian.Reflector.FilterObject> exclusions)
Cobian.Reflector.Common.dll!Cobian.Reflector.SizeCalculatorTool.calculateTask(Cobian.Reflector.BackupTask task)
Cobian.Reflector.Common.dll!Cobian.Reflector.SizeCalculatorTool.CalculateTaskList(System.Collections.Generic.List<Cobian.Reflector.BackupTask> taskList)
[External Code]
Bonus point: I could also suggest to have a very detailed log when the UI runs after a crash, so that if it fails twice, at least we have a log the 2nd time. That could help users debug a faulty situation
I've upload a dmp file on drive for you to repro : https://drive.google.com/file/d/1LWv8Xz ... sp=sharing
Thanks,
Johan