Eraser 6.0.6 crashes when editing eraser methods

Walda

New Member
I was trying to add a null byte eraser method and after exiting the default plugin dialog, Eraser crashed. I was simply adding a single constant (hexadecimal) pass method. Also the passes list isn't updated correctly... when I change from Random to Hexadecimal, it still says Random in the list above. Only when I hit OK and go back to the "Add Mehtod" sub-dialog, the pass is named correctly ("Constant (1 byte)"), it makes editing passes very tricky, because you don't really know if Eraser saves the bytes you have typed in correctly. Also "00", becomes "0" in the Hexadecimal view for some odd reason, so when adding "00000000", going back it becomes " 0 0 0 0", then saving and coming back it's as if I have typed half the zeros and then there is " 0 0"... and so on.

But anyway the crash also happens when I type other figures into the box, like "afaf".

Code:
See the end of this message for details on invoking 
just-in-time (JIT) debugging instead of this dialog box.

************** Exception Text **************
System.ArgumentException: The GUID of the erasure method to remove refers to an invalid erasure method.
   at Eraser.Manager.ErasureMethodManager.Unregister(Guid value)
   at Eraser.DefaultPlugins.SettingsForm.okBtn_Click(Object sender, EventArgs e)
   at System.Windows.Forms.Control.OnClick(EventArgs e)
   at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
   at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ButtonBase.WndProc(Message& m)
   at System.Windows.Forms.Button.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)
   at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** Loaded Assemblies **************
mscorlib
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework64/v2.0.50727/mscorlib.dll
----------------------------------------
Eraser
    Assembly Version: 6.0.6.1376
    Win32 Version: 6.0.6.1376
    CodeBase: file:///C:/Program%20Files/Eraser/Eraser.exe
----------------------------------------
Eraser.Manager
    Assembly Version: 6.0.6.1376
    Win32 Version: 6.0.6.1376
    CodeBase: file:///C:/Program%20Files/Eraser/Eraser.Manager.DLL
----------------------------------------
System.Windows.Forms
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Windows.Forms/2.0.0.0__b77a5c561934e089/System.Windows.Forms.dll
----------------------------------------
System
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System/2.0.0.0__b77a5c561934e089/System.dll
----------------------------------------
System.Drawing
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Drawing/2.0.0.0__b03f5f7f11d50a3a/System.Drawing.dll
----------------------------------------
Microsoft.VisualBasic
    Assembly Version: 8.0.0.0
    Win32 Version: 8.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Microsoft.VisualBasic/8.0.0.0__b03f5f7f11d50a3a/Microsoft.VisualBasic.dll
----------------------------------------
Eraser.Util
    Assembly Version: 6.0.6.1376
    Win32 Version: 6.0.6.1376
    CodeBase: file:///C:/Program%20Files/Eraser/Eraser.Util.DLL
----------------------------------------
Eraser.DefaultPlugins
    Assembly Version: 6.0.6.1376
    Win32 Version: 6.0.6.1376
    CodeBase: file:///C:/Program%20Files/Eraser/Plugins/Eraser.DefaultPlugins.dll
----------------------------------------
System.Core
    Assembly Version: 3.5.0.0
    Win32 Version: 3.5.30729.4926 built by: NetFXw7
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Core/3.5.0.0__b77a5c561934e089/System.Core.dll
----------------------------------------
Eraser.resources
    Assembly Version: 6.0.6.1376
    Win32 Version: 6.0.6.1376
    CodeBase: file:///C:/Program%20Files/Eraser/en/Eraser.resources.DLL
----------------------------------------
Eraser.Manager.resources
    Assembly Version: 6.0.6.1376
    Win32 Version: 6.0.6.1376
    CodeBase: file:///C:/Program%20Files/Eraser/en/Eraser.Manager.resources.DLL
----------------------------------------
BevelLine
    Assembly Version: 1.0.3589.29437
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Program%20Files/Eraser/BevelLine.DLL
----------------------------------------
System.Xml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Xml/2.0.0.0__b77a5c561934e089/System.Xml.dll
----------------------------------------
Accessibility
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/Accessibility/2.0.0.0__b03f5f7f11d50a3a/Accessibility.dll
----------------------------------------

************** JIT Debugging **************
To enable just-in-time (JIT) debugging, the .config file for this
application or computer (machine.config) must have the
jitDebugging value set in the system.windows.forms section.
The application must also be compiled with debugging
enabled.

For example:

<configuration>
    <system.windows.forms jitDebugging="true" />
</configuration>

When JIT debugging is enabled, any unhandled exception
will be sent to the JIT debugger registered on the computer
rather than be handled by this dialog box.

PS: Important! I just found out how to exactly reproduce the bug.
  • The problem is that Eraser crashes, because it wants to remove a custom method from an empty list of methods! So it won't crash unless there is no other method in your list of custom methods. It might
  • There's one case (this is another bug), where a newly created or and edited method will be removed automatically, because of the 0x00 bug I mentioned above ("00" becomes "0" in the Hexadecimal view). If the only pass of a method is a Constant Byte write and this byte is entered as "0", not "00" but "0" then this pass is automatically removed by Eraser, and if this is the only pass in the method, then the whole method is removed automatically, too. And, you see what happens next, if the last method is automatically removed from the list of custom methods, Eraser crashes.

Oh, there's another thing I've noticed... once I have added a custom method and then selected it for normal and free space erasure and then hit "Save settings", it vanished from the list of custom methods. So I'm unable to edit or remove this new method anymore! It's in the drop-down list of available methods, but it's not a custom method anymore...
 
Yes there's a problem with the way Eraser deals with null bytes in the custom erasure dialog. As for the rest of the problems I'll look into it at the start of next week.
 
Hey Walda,

Walda said:
Also the passes list isn't updated correctly... when I change from Random to Hexadecimal, it still says Random in the list above. Only when I hit OK and go back to the "Add Mehtod" sub-dialog, the pass is named correctly ("Constant (1 byte)"), it makes editing passes very tricky, because you don't really know if Eraser saves the bytes you have typed in correctly.
If you unselect the pass from the list of passes in the Custom Erasure Method editor or select another pass the list will be updated.

Walda said:
Also "00", becomes "0" in the Hexadecimal view for some odd reason, so when adding "00000000", going back it becomes " 0 0 0 0", then saving and coming back it's as if I have typed half the zeros and then there is " 0 0"... and so on.
Fixed in r1475/r1476.

Walda said:
But anyway the crash also happens when I type other figures into the box, like "afaf"

PS: Important! I just found out how to exactly reproduce the bug.
  • The problem is that Eraser crashes, because it wants to remove a custom method from an empty list of methods! So it won't crash unless there is no other method in your list of custom methods. It might
I think this happens when you edit a method more than once. This should be fixed in r1477.

Walda said:
There's one case (this is another bug), where a newly created or and edited method will be removed automatically, because of the 0x00 bug I mentioned above ("00" becomes "0" in the Hexadecimal view). If the only pass of a method is a Constant Byte write and this byte is entered as "0", not "00" but "0" then this pass is automatically removed by Eraser, and if this is the only pass in the method, then the whole method is removed automatically, too. And, you see what happens next, if the last method is automatically removed from the list of custom methods, Eraser crashes.
I see that the pass is kept at 0, but I don't see the erasure method being removed automatically nor do I get a crash... Once again, please provide an exact list of steps to replicate the crash.

Walda said:
Oh, there's another thing I've noticed... once I have added a custom method and then selected it for normal and free space erasure and then hit "Save settings", it vanished from the list of custom methods. So I'm unable to edit or remove this new method anymore! It's in the drop-down list of available methods, but it's not a custom method anymore...
I think this also occurs when you edit a method, I'm working on this now. Will post again.
 
Walda said:
Oh, there's another thing I've noticed... once I have added a custom method and then selected it for normal and free space erasure and then hit "Save settings", it vanished from the list of custom methods. So I'm unable to edit or remove this new method anymore! It's in the drop-down list of available methods, but it's not a custom method anymore...
Okay fixed in r1478.
 
Another fix was required, committed in r1484.
 
And even more fixes, r1489 should have a (finally) good and usable editor.
 
Scrap that, I've been playing the custom method editor just to ensure all bugs are ironed out. I think r1491 is about as polished as it gets. Could you please close the ticket in Trac once you've tried and verified it works properly?
 
Back
Top