Cleaning freespace on Seagate external drive crashes at end

Rishu73

New Member
I captured the errors in a debugger, so I have call stacks and the like:

Output:
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\Eraser.Util.FileSystem.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251\msvcm90.dll', Symbols loaded.
A first chance exception of type 'System.IO.IOException' occurred in Eraser.Util.dll

Additional information: Could not lock volume.


Callstack:
Eraser.Util.dll!Eraser.Util.VolumeLock.VolumeLock(System.IO.FileStream stream) + 0x145 bytes
Eraser.Util.dll!Eraser.Util.VolumeInfo.LockVolume(System.IO.FileStream stream) + 0x26 bytes
Eraser.DefaultPlugins.dll!Eraser.DefaultPlugins.FatFileSystem.EraseDirectoryStructures(Eraser.Util.VolumeInfo info, Eraser.Manager.FileSystemEntriesEraseProgress callback) + 0x13d bytes
Eraser.Manager.dll!Eraser.Manager.DirectExecutor.EraseUnusedSpace(Eraser.Manager.Task task, Eraser.Manager.UnusedSpaceTarget target, Eraser.Manager.DirectExecutor.TaskProgressManager progress) + 0x899 bytes
Eraser.Manager.dll!Eraser.Manager.DirectExecutor.Main() + 0x3f6 bytes
mscorlib.dll!System.Threading.ExecutionContext.Run(System.Threading.ExecutionContext executionContext, System.Threading.ContextCallback callback, object state) + 0x9b bytes
mscorlib.dll!System.Threading.ThreadHelper.ThreadStart() + 0x4d bytes


Crash:

Output:
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_64\mscorlib\2.0.0.0__b77a5c561934e089\mscorlib.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\Eraser.exe'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\Eraser.Manager.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Windows.Forms\2.0.0.0__b77a5c561934e089\System.Windows.Forms.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_MSIL\System\2.0.0.0__b77a5c561934e089\System.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Drawing\2.0.0.0__b03f5f7f11d50a3a\System.Drawing.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_MSIL\Microsoft.VisualBasic\8.0.0.0__b03f5f7f11d50a3a\Microsoft.VisualBasic.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\Eraser.Util.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\Plugins\Eraser.DefaultPlugins.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Core\3.5.0.0__b77a5c561934e089\System.Core.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\en\Eraser.resources.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\BevelLine.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Xml\2.0.0.0__b77a5c561934e089\System.Xml.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\Plugins\en\Eraser.DefaultPlugins.resources.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\en\Eraser.Manager.resources.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\assembly\GAC_MSIL\System.Configuration\2.0.0.0__b03f5f7f11d50a3a\System.Configuration.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Program Files\Eraser\Eraser.Util.FileSystem.dll'
'Eraser.exe' (Managed (v2.0.50727)): Loaded 'C:\Windows\WinSxS\amd64_microsoft.vc90.crt_1fc8b3b9a1e18e3b_9.0.30729.6161_none_08e61857a83bc251\msvcm90.dll', Symbols loaded.
An unhandled exception of type 'System.NullReferenceException' occurred in Eraser.Util.dll

Additional information: Object reference not set to an instance of an object.

Callstack:
Eraser.Util.dll!Eraser.Util.VolumeLock.Dispose(bool disposing) + 0x24 bytes
Eraser.Util.dll!Eraser.Util.VolumeLock.Finalize() + 0x19 bytes
 
Re: Cleaning freespace on Seagate external drive crashes at

Thanks! VolumeLock wasn't implemented properly; if the volume was not locked, an exception would be thrown (correct) but the deterministic cleanup code did not handle the situation correctly (which was wrong). I've fixed this in r2780.
 
Back
Top