Implementing a new host and noticed that trace route would only show the address of the local gateway, the address on the Hosts LAN, but all other hops where being displayed as *'s.
When I ran TCPDUMP on the same host whilst doing the trace route I could see that the ICMP TTL exceeded messages where being generated by the nodes in the path but TRACEROUTE just did not display the IP addresses...just more *'s.
The host had two network interfaces, Interface A which which had a default route configured on it and Interface B that had a static route to the Destination. It was Interface B that I was running the trace route on that was only displaying *'s.
To try and break down the problem I added another static route to the second hop, the next router in the path, so that I could work on a much shorter path. When I first started the test the second hop was only displayed as *'s but as soon as I added a static route to the network trace route displayed its IP address.
I did a trace route to the final destination again and noted all the IP addresses that generated ICMP TTL exceeded messages so that I could make sure that Interface B's routing had all of these networks statically configured. When I did this I could now see all the IP's listed in the trace routes result.
So, it looks like if the Interface receiving the ICMP TTL exceeded messages does not have routing back to that address then its not displayed in the Trace route results. I am sure someone in the community can explain why it behaves like this but a host with multiple interfaces running trace route on an interface the does not have the default route configured is pretty much a waste of time.