Eraser 6.0.6 doesn't start - InvalidOperationException

chojrak11

New Member
I wasn't able to start Eraser 6.0.6 at all. OS is Win7. It doesn't even show any window, no matter normal or admin mode. Just a dialog telling something about invalid User interface language, then it displays window that "Eraser stopped working". I have .NET 4 beta 2 installed, maybe that helps. Below there's full error report (some messages are in polish). Thanks.

Code:
Version=1
EventType=CLR20r3
EventTime=129092830754662708
ReportType=2
Consent=1
UploadTime=129092830755422752
ReportIdentifier=1dd86ba4-0d32-11df-b748-00164195e33c
Response.type=4
Sig[0].Name=Podpis problemu: 01
Sig[0].Value=eraser.exe
Sig[1].Name=Podpis problemu: 02
Sig[1].Value=6.0.6.1376
Sig[2].Name=Podpis problemu: 03
Sig[2].Value=4b26dc33
Sig[3].Name=Podpis problemu: 04
Sig[3].Value=System.Windows.Forms
Sig[4].Name=Podpis problemu: 05
Sig[4].Value=2.0.0.0
Sig[5].Name=Podpis problemu: 06
Sig[5].Value=4a275ebd
Sig[6].Name=Podpis problemu: 07
Sig[6].Value=16ce
Sig[7].Name=Podpis problemu: 08
Sig[7].Value=21
Sig[8].Name=Podpis problemu: 09
Sig[8].Value=System.InvalidOperationException
DynamicSig[1].Name=Wersja systemu operacyjnego
DynamicSig[1].Value=6.1.7600.2.0.0.256.48
DynamicSig[2].Name=Identyfikator ustawień regionalnych
DynamicSig[2].Value=1045
UI[2]=C:\Program Files\Eraser\Eraser.exe
UI[3]=Program Eraser przestał działać.
UI[4]=System Windows może wyszukać rozwiązanie tego problemu w trybie online.
UI[5]=Wyszukaj rozwiązanie w trybie online i zamknij program
UI[6]=Wyszukaj rozwiązanie w trybie online później i zamknij program
UI[7]=Zamknij program
LoadedModule[0]=C:\Program Files\Eraser\Eraser.exe
LoadedModule[1]=C:\Windows\SYSTEM32\ntdll.dll
LoadedModule[2]=C:\Windows\SYSTEM32\MSCOREE.DLL
LoadedModule[3]=C:\Windows\system32\KERNEL32.dll
LoadedModule[4]=C:\Windows\system32\KERNELBASE.dll
LoadedModule[5]=C:\Windows\system32\ADVAPI32.dll
LoadedModule[6]=C:\Windows\system32\msvcrt.dll
LoadedModule[7]=C:\Windows\SYSTEM32\sechost.dll
LoadedModule[8]=C:\Windows\system32\RPCRT4.dll
LoadedModule[9]=C:\Windows\Microsoft.NET\Framework\v4.0.21006\mscoreei.dll
LoadedModule[10]=C:\Windows\system32\SHLWAPI.dll
LoadedModule[11]=C:\Windows\system32\GDI32.dll
LoadedModule[12]=C:\Windows\system32\USER32.dll
LoadedModule[13]=C:\Windows\system32\LPK.dll
LoadedModule[14]=C:\Windows\system32\USP10.dll
LoadedModule[15]=C:\Windows\system32\IMM32.DLL
LoadedModule[16]=C:\Windows\system32\MSCTF.dll
LoadedModule[17]=C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorwks.dll
LoadedModule[18]=C:\Windows\WinSxS\x86_microsoft.vc80.crt_1fc8b3b9a1e18e3b_8.0.50727.4927_none_d08a205e442db5b5\MSVCR80.dll
LoadedModule[19]=C:\Windows\system32\shell32.dll
LoadedModule[20]=C:\Windows\system32\ole32.dll
LoadedModule[21]=C:\Windows\system32\profapi.dll
LoadedModule[22]=C:\Windows\assembly\NativeImages_v2.0.50727_32\mscorlib\8c1770d45c63cf5c462eeb945ef9aa5d\mscorlib.ni.dll
LoadedModule[23]=C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorsec.dll
LoadedModule[24]=C:\Windows\system32\WINTRUST.dll
LoadedModule[25]=C:\Windows\system32\CRYPT32.dll
LoadedModule[26]=C:\Windows\system32\MSASN1.dll
LoadedModule[27]=C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_5.82.7600.16385_none_ebf82fc36c758ad5\COMCTL32.dll
LoadedModule[28]=C:\Windows\system32\CRYPTSP.dll
LoadedModule[29]=C:\Windows\system32\rsaenh.dll
LoadedModule[30]=C:\Windows\system32\CRYPTBASE.dll
LoadedModule[31]=C:\Windows\system32\imagehlp.dll
LoadedModule[32]=C:\Windows\system32\ncrypt.dll
LoadedModule[33]=C:\Windows\system32\bcrypt.dll
LoadedModule[34]=C:\Windows\system32\bcryptprimitives.dll
LoadedModule[35]=C:\Windows\system32\USERENV.dll
LoadedModule[36]=C:\Windows\system32\GPAPI.dll
LoadedModule[37]=C:\Windows\system32\cryptnet.dll
LoadedModule[38]=C:\Windows\system32\WLDAP32.dll
LoadedModule[39]=C:\Windows\system32\SensApi.dll
LoadedModule[40]=C:\Windows\system32\Cabinet.dll
LoadedModule[41]=C:\Windows\system32\DEVRTL.dll
LoadedModule[42]=C:\Windows\system32\uxtheme.dll
LoadedModule[43]=C:\Windows\assembly\GAC_MSIL\mscorlib.resources\2.0.0.0_pl_b77a5c561934e089\mscorlib.resources.dll
LoadedModule[44]=C:\Windows\Microsoft.NET\Framework\v2.0.50727\mscorjit.dll
LoadedModule[45]=C:\Windows\system32\shfolder.dll
LoadedModule[46]=C:\Windows\system32\RpcRtRemote.dll
LoadedModule[47]=C:\Program Files\Eraser\Eraser.Manager.dll
LoadedModule[48]=C:\Windows\assembly\NativeImages_v2.0.50727_32\System\5ba3bf5367fc012300c6566f20cb7f54\System.ni.dll
LoadedModule[49]=C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Drawing\ead6be8b410d56b5576b10e56af2c180\System.Drawing.ni.dll
LoadedModule[50]=C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Windows.Forms\fedf1ba58dced4f0b3f8c457648ceed9\System.Windows.Forms.ni.dll
LoadedModule[51]=C:\Windows\assembly\NativeImages_v2.0.50727_32\Microsoft.VisualBas#\965b1fa2decab0efc0c837ab7252bba1\Microsoft.VisualBasic.ni.dll
LoadedModule[52]=C:\Program Files\Eraser\Eraser.Util.dll
LoadedModule[53]=C:\Windows\system32\SspiCli.dll
LoadedModule[54]=C:\Windows\system32\Netapi32.dll
LoadedModule[55]=C:\Windows\system32\netutils.dll
LoadedModule[56]=C:\Windows\system32\srvcli.dll
LoadedModule[57]=C:\Windows\system32\wkscli.dll
LoadedModule[58]=C:\Windows\system32\VERSION.dll
LoadedModule[59]=C:\Program Files\Eraser\Plugins\Eraser.DefaultPlugins.dll
LoadedModule[60]=C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Core\1762137638019a091020b3baf52f6de3\System.Core.ni.dll
LoadedModule[61]=C:\Windows\system32\dwmapi.dll
LoadedModule[62]=C:\Windows\WinSxS\x86_microsoft.windows.gdiplus_6595b64144ccf1df_1.1.7600.16385_none_72fc7cbf861225ca\gdiplus.dll
LoadedModule[63]=C:\Windows\assembly\GAC_MSIL\System.Windows.Forms.resources\2.0.0.0_pl_b77a5c561934e089\System.Windows.Forms.resources.dll
LoadedModule[64]=C:\Windows\system32\WindowsCodecs.dll
LoadedModule[65]=C:\Windows\WinSxS\x86_microsoft.windows.common-controls_6595b64144ccf1df_6.0.7600.16385_none_421189da2b7fabfc\comctl32.dll
LoadedModule[66]=C:\Program Files\Eraser\BevelLine.dll
LoadedModule[67]=C:\Windows\assembly\NativeImages_v2.0.50727_32\System.Xml\5dd9f783008543df3e642ff1e99de4e8\System.Xml.ni.dll
LoadedModule[68]=C:\Windows\system32\oleaut32.dll
LoadedModule[69]=C:\Windows\system32\apphelp.dll
FriendlyEventName=Zatrzymano działanie.
ConsentKey=CLR20r3
AppName=Eraser
AppPath=C:\Program Files\Eraser\Eraser.exe
ReportDescription=Stopped working
 
Have you tried a nightly build for 6.0 on our downloads page?
 
Yep that helped. Thanks for instant answer, I didn't notice this download page. Eraser6.2 r1718 is free from this error.

Here are some suggestions after glancing at the new version for the first time:

1) I use high DPI setting on my laptop - 120%. Eraser UI is impacted, some strings do not fit, e.g. "Save settings" and "Add folder" button captions are wrapped, "When a recurring task has missed its starting time" has its bottom cut,

2) on the download page you tell that it's 6.2, however the installer displays 6.0 and throughout the program there's 6.0 rather than 6.2,

3) Eraser's crash helper wants to send you reports about when I tried to run Free disk space wipe with insufficient privileges; you really don't want to receive this; for your own sanity filter this type of exception as it is not a crash at all. IMO Eraser should have a separate EXE running with elevated privileges that would do the actual free space erasing and report progress back to UI. This way it would be easier for user. Some useful pointers:
http://victorhurdugaci.com/using-uac-with-c-part-1/ (runas)
http://www.codeproject.com/KB/vista-sec ... ation.aspx

Eraser is very good product, I use it for a long time, keep up the good work!

Thanks.
 
chojrak11 said:
1) I use high DPI setting on my laptop - 120%. Eraser UI is impacted, some strings do not fit, e.g. "Save settings" and "Add folder" button captions are wrapped, "When a recurring task has missed its starting time" has its bottom cut,
I'm aware, but I don't have the time to get this fixed... yet.

chojrak11 said:
2) on the download page you tell that it's 6.2, however the installer displays 6.0 and throughout the program there's 6.0 rather than 6.2,
Yes, I'm aware. I'm leaving the versions still at 6.0 because the 6.2 and 6.0 branches are quite similar (now.) Once I merge in the CodeReview branch it'll be 6.2 (significant changes)

chojrak11 said:
3) Eraser's crash helper wants to send you reports about when I tried to run Free disk space wipe with insufficient privileges; you really don't want to receive this; for your own sanity filter this type of exception as it is not a crash at all.
Yeah, it slipped my mind.

chojrak11 said:
IMO Eraser should have a separate EXE running with elevated privileges that would do the actual free space erasing and report progress back to UI. This way it would be easier for user. Some useful pointers:
http://victorhurdugaci.com/using-uac-with-c-part-1/ (runas)
http://www.codeproject.com/KB/vista-sec ... ation.aspx
Yes, that works, hence I want to write Eraser as a service. The thing is, it can't be any old process because if you schedule an unused space erasure, then you'll get a UAC prompt and no one may be around to approve it.

Thanks for your suggestions!
 
Joel said:
]Yes, that works, hence I want to write Eraser as a service. The thing is, it can't be any old process because if you schedule an unused space erasure, then you'll get a UAC prompt and no one may be around to approve it.

How about using the built in windows task scheduler? That allows for tasks to be scheduled to run in the future as a user with elevated privileges.
 
The thing that comes to mind immediately is that XP doesn't have the same scheduler than Vista and 7 has. Apart from that, I'm not too sure if there's an API that code can call to create tasks.. if someone knows what it is let me know.
 
Joel said:
The thing that comes to mind immediately is that XP doesn't have the same scheduler than Vista and 7 has. Apart from that, I'm not too sure if there's an API that code can call to create tasks.. if someone knows what it is let me know.

I don't know the technology used to create Eraser, but if it was .NET (as suggested by the exception type InvalidOperationException), the easiest way IMO would be to add source line information to the exception catching code (surrounded by #ifdef DEBUG for example), or just capture all exception details using ToString() or equivalent, what would give you the whole call trace -- this way you would easily know in which place the exception occurred and fix it.

Thanks.
 
Yes, we're already doing that.
 
Back
Top