In D27213, @ae reported that he was seeing this problem:
# dtrace -n 'fbt::ip_input:entry { printf("%s", stringof(args[0]->m_pkthdr.rcvif->if_xname)); }'
dtrace: invalid probe specifier fbt::ip_input:entry { printf("%s", stringof(args[0]->m_pkthdr.rcvif->if_xname)); }: in action list: m_pkthdr is not a member of struct mbuf
This only occurs when ipfw.d is loaded first, which imports `struct mbuf` into the "D" CTF container.
As part of the import, ctf_add_type() is calling ctf_member_iter() to call membadd() on each member of the structure/union:
if (ctf_member_iter(src_fp, src_type, membadd, &dst) != 0)
ctf_member_iter() calls ctf_strptr() to convert the name index to a string. ctf_strptr() is converting a 0-index to an empty string. membadd() is then adding the member with a name of the empty string. However, that confuses other places in the code (such as _ctf_member_info), which expect empty string member names to be encoded as index 0.