Using IDA 6.2 (and also with IDA 6.4), I'm trying out the Proximity viewer to find the path between 2 functions as described at the hexblog post here.Using the Xrefs From/To (old option) it shows the clear path: AllocateVolume -> VolumeSortCmp -> CompareVolumeComponents as shown in the screenshot belowApart from the add name and hide childs options not existing in the context menu (as described in the blog) of the proximity browser as seen in the screenshot belowthe find path menu does list CompareVolumeComponents in the dialog that opens (so it has some knowledge of what is reachable). However when I press search I expected a nice clean graph (as again shown in the blog and added as reference below) showing only the the 3 relevant nodes, but instead nothing seems to change to the proximity browser layout as I still see 30 something nodes. Hexblog condensed Find path example resultMy resultIs the proximity viewer malfunctioning or are my expectations off? Or am i doing something wrong here?
IDA Proximity viewer not finding obvious paths?
ida
I think that the problem is a misunderstanding of how the Proximity Viewer works. It will not clear out all the other nodes in the graph when finding a path: it simply finds a path and adds the required nodes to the graph. If you want to view only the nodes between AllocateVolume and CompareVolumeComponents, do the following:Navigate to AllocateVolume and press '-'.Right click on the center node AllocateVolume and select Collapse  children, then, Collapse parents as well.Then, right click outside this node in the proximity view and select Add name.Find CompareVolumeComponents and add it.After this step, right click on the AllocateVolume node, select Find Path and select the only other available node.If everything goes OK, you will have a graph with only the functions required to display a path from AllocateVolume to CompareVolumeComponents. If it does not, there may be some problem with the current code of the Proximity Viewer (in that case, please contact support at Hex-Rays for a fix). Also, you may want to take a look to the callgraph plugin in the SDK: the algorithm to find paths is pretty much the same and you may get an idea about why it isn't working.As a side note, a little explanation of how the PV works: The algorithm does not consider a path only calls/jmps as (Q)WinGraph32 does (IIRC) but also consider a path when there are data references. If a function A references, in any way, function B, then the proximity viewer will show that reference (with a gray edge instead of a blue edge). BTW, I'm the guy who wrote it.