Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Dependency walker hangs

I have a problem with my.xll addin when it loads on my clients PC. It crashes Excel at startup (possible because of missing dependent dlls).

I know it is possible to use dependency walker in profile mode to find out what dlls are loaded when the .exe runs. When I try that dependency walker hangs when profiling Excel, and I can’t find out why.

In a command window I ran this:

C:\Program Files (x86)\Windows Kits\8.1\Tools\x86>start /wait depends.exe /c /f:1 /pb /pp:1 /pg:1 /oc:d:\temp\Log.txt "C:\Program Files (x86)\Microsoft Office\Office14\excel.exe"

But it hangs. enter image description here

I am using dependency walker version 2.2.9600 x86, Windows 8.1 x86, office 2010 x86

I also tried to setup a VM machine with a clean install of win 8.1 and Office 2010 but XL does not crash on that machine when I load the .xll.

I works on another machine Windows 10 x64, office 2013 x64 and dependency walker x64. I can profile Excel.

Note: I ended up using Sysinternals Process Explorer instead. A bit more complicated but works.

like image 835
Damian Avatar asked Nov 11 '16 14:11

Damian


2 Answers

I'm currently on Windows 10 build 1809, and depends.exe hangs for every dll I try it with. The depends home page says "Dependency Walker runs on Windows 95, 98, Me, NT, 2000, XP, 2003, Vista, 7, and 8" so I guess it's not supported.

Try Dependencies - An open-source modern Dependency Walker, it works fine for me.

like image 122
Andrew Roberts Avatar answered Nov 01 '22 20:11

Andrew Roberts


Microsoft has very slowly been adding modularization, versioning, and indirection to Windows OS API libraries.1 This effort started in Windows 7, but only in recent builds of Windows 10 has this initiative hit some of the core win32/kernel libraries that essentially all traditional Windows binaries link to and use.

Naïve dependency walkers will create a graph combinatorial explosion for themselves they try render the complete dependency graph without some extra logic to short-circuit this layer of indirection, or limit the depth of the graph search to be on-demand at a certain depth. If your program is relatively simple, depends.exe will eventually wake up and render the dependency graph for you, but it may take a few hours.

I don't know if the author of depends.exe intends to ever update it, but in the meantime, as Andrew pointed out in his answer, the lucasg/Dependencies project on GitHub seems to not suffer from the same problem.

Also see this SO post: Dependency Walker: missing dlls

like image 34
Mike Clark Avatar answered Nov 01 '22 19:11

Mike Clark