The USE_KERNEL_ROUTING_TABLE patch to traceroute causes it to segfault with used with -i. This is because the ifaddrlist is searched for the interface you specify, but then the search_routing_table() call continues the search at the position in the list found by the previous search. Consequently, the second search eventually runs right past the end of the array in a vain attempt to find a unique interface. This unintialized memory (zeroed in my case) causes a segfault when a field of the run away pointer is passed to a strcmp. Because all this red tape sickens me, and because I have better things to do than to wait around for a BUG ID to submit a one line patch, I'm going to describe the fix here. Right around line 703 you add: if(device == NULL && n > 1) right before the call to search_routing_table()
*** This bug has been marked as a duplicate of 2819 ***