drewnoakes / dependency-analyser

Shows the dependencies between .NET projects and assemblies as a graph.
https://drewnoakes.com/code/dependency-analyser/
GNU Lesser General Public License v3.0
46 stars 5 forks source link

Exception opening any Assembly on Win 7 64-bit #10

Closed GoogleCodeExporter closed 9 years ago

GoogleCodeExporter commented 9 years ago
What steps will reproduce the problem?
1. Attempt to open any .Net DLL or EXE on my system. I've tried with a wide 
variety of DLL's, including .Net framework DLL's. 

What is the expected output? What do you see instead?
Expected: To open the dependency graph.
Result: The following error, with the strack trace below.

Unhandled exception has occurred in your application. ...
Attempted to read or write protected memory. This is often an indication that 
other memory is corrupt.

DETAILED INFO:

************** Exception Text **************
System.AccessViolationException: Attempted to read or write protected memory. 
This is often an indication that other memory is corrupt.
   at WINGRAPHVIZLib.DOTClass.ToPNG(String Source)
   at Drew.DependencyAnalyser.DependencyPlotter.CalculatePlot(Double aspectRatio, DependencyGraph`1 graph, AssemblyFilterPreferences filterPreferences)
   at Drew.DependencyAnalyser.DependencyAnalyserForm.UpdateImage()
   at Drew.DependencyAnalyser.DependencyAnalyserForm.menuFileOpen_Click(Object sender, EventArgs e)
   at System.Windows.Forms.MenuItem.OnClick(EventArgs e)
   at System.Windows.Forms.MenuItem.MenuItemData.Execute()
   at System.Windows.Forms.Command.Invoke()
   at System.Windows.Forms.Command.DispatchID(Int32 id)
   at System.Windows.Forms.Control.WmCommand(Message& m)
   at System.Windows.Forms.Control.WndProc(Message& m)
   at System.Windows.Forms.ScrollableControl.WndProc(Message& m)
   at System.Windows.Forms.ContainerControl.WndProc(Message& m)
   at System.Windows.Forms.Form.WndProc(Message& m)
   at System.Windows.Forms.Control.ControlNativeWindow.OnMessage(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.4959 (win7RTMGDR.050727-4900)
    CodeBase: file:///C:/Windows/Microsoft.NET/Framework/v2.0.50727/mscorlib.dll
----------------------------------------
DependencyAnalyser
    Assembly Version: 1.1.4141.28255
    Win32 Version: 1.1.0.0
    CodeBase: file:///C:/Users/dhochee/Downloads/dot-net-dependency-analyser-1.1/DependencyAnalyser.exe
----------------------------------------
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
----------------------------------------
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
----------------------------------------
System.Configuration
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Configuration/2.0.0.0__b03f5f7f11d50a3a/System.Configuration.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
----------------------------------------
System.Data.SqlXml
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4927 (NetFXspW7.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Data.SqlXml/2.0.0.0__b77a5c561934e089/System.Data.SqlXml.dll
----------------------------------------
System.Security
    Assembly Version: 2.0.0.0
    Win32 Version: 2.0.50727.4951 (win7RTMGDR.050727-4900)
    CodeBase: file:///C:/Windows/assembly/GAC_MSIL/System.Security/2.0.0.0__b03f5f7f11d50a3a/System.Security.dll
----------------------------------------
Interop.WINGRAPHVIZLib
    Assembly Version: 1.0.0.0
    Win32 Version: 1.0.0.0
    CodeBase: file:///C:/Users/dhochee/Downloads/dot-net-dependency-analyser-1.1/Interop.WINGRAPHVIZLib.DLL
----------------------------------------

What version of the product are you using? On what operating system?

v1.1.4141.28255

Running on Windows 7 Professional 64-bit

Please provide any additional information below.

Original issue reported on code.google.com by dhoc...@gmail.com on 24 May 2011 at 3:22

GoogleCodeExporter commented 9 years ago
Thanks for your bug report.

Unfortunately I cannot reproduce this issue on my machine.  Furthermore I am 
also running Win7 Pro on 64-bit.

Are you sure that you have installed WinGraphviz?  If so, what version is 
installed?  Unfortunately the Dependency Analyser takes a dependency on a COM 
DLL which must be installed before it can run.  Could you try re-installing it 
anyway?  An MSI installer is included in the download.

Maybe a good idea would be to detect when WinGraphviz is not installed and 
report an appropriate error message.  If you could let me know whether this 
fixes the problem, perhaps I can use this information to add such a feature.

Original comment by drewnoakes on 24 May 2011 at 4:24

GoogleCodeExporter commented 9 years ago
Yes, I installed WinGraphviz using the MSI prior to running Dependency Analyser.

The problem was due to the UAC. It works ok if I run the Dependency Analyser as 
an admin.

This did not resolve the problem I had opening a VS2008 SLN file, noted in 
another issue.

Original comment by dhoc...@gmail.com on 24 May 2011 at 4:31

GoogleCodeExporter commented 9 years ago
Hmm that is strange.  I don't believe I have to run with elevated permissions.  
I'll do some more tests.

The other issue is a known limitation of the app that should be easy to fix but 
I don't have much bandwidth now.  If you fancy giving it a shot, great.

Long term I'd like to remove the dependency on WinGraphviz for a .NET solution. 
 It'd simplify installation and allow execution on other platforms via Mono.

Original comment by drewnoakes on 24 May 2011 at 4:38

GoogleCodeExporter commented 9 years ago
Sounds good. Thanks for your help and for a making a useful tool for free. I 
may try to take a stab at updating it if I can get a bit of free time.

Original comment by dhoc...@gmail.com on 24 May 2011 at 4:53

GoogleCodeExporter commented 9 years ago
Hi had the same issue as dhoc, could get it to work with elavated privileges.

Original comment by gbminn...@gmail.com on 4 Nov 2012 at 2:07

jeremysimmons commented 9 years ago

I believe 47335c38fb1cd9f99582104732b67e0181488b8c fixes this issue. The http://wingraphviz.sourceforge.net/wingraphviz/ ver1.02.25s we built against is a 32-bit COM DLL. Targeting x86 handles this automatically.

drewnoakes commented 9 years ago

@jeremysimmons I take it you're referring to this line in particular:

https://github.com/drewnoakes/dependency-analyser/commit/47335c38fb1cd9f99582104732b67e0181488b8c#diff-0998207343bf303e7f82016294e25ab4R25

Feel free to close this if you think it's solved.

jeremysimmons commented 9 years ago

Yes that's exactly it. Must target x86 so the com dll loads.