missing system struct definitions during compilation files in /usr/lib/dtrace/ in local releng/10.1 build

Viktor Štujber viktor.stujber at gmail.com
Mon Dec 8 15:39:48 UTC 2014


I was running releng/10.0 from 10-jul-2014 and dtrace was working fine.
I built/installed releng/10.1 from 07-dec-2014 and now when running 
"dtrace -s anyfile", even an empty file, it prints the following errors:
    dtrace: failed to compile script test.d: "/usr/lib/dtrace/tcp.d", 
line 166: operator -> cannot be applied to a forward declaration: no 
struct tcpcb definition is available
(same with io.d struct devstat and struct bio)

I tried a clean install of release/10.1 from the 12-nov-2014 iso file, 
and it works fine there. There doesn't seem to have been any changes to 
the branch since the release. I went through all the directories in / 
and /usr, making sure there are no stale config/header/lib files, and 
that the contents of all existing config/header files is identical to 
the clean version (plusminus my custom changes). I also temporarily 
moved the entire /usr/local tree to make sure its contents don't 
interfere; did not help. Finally I tried just shoving the missing system 
C header information into the D code, which might have worked, but after 
the 5th time I got tired of it.

I would like to fix this problem without doing a full system reinstall. 
However at this point I'm stuck. I don't know how to make the D compiler 
built into dtrace to print diagnostic information about the build 
process. I'm not even sure what exactly the compiler is trying to do - 
does it parse the system C headers (possibly indicating an INCLUDE path 
problem)? But I think I checked all the files... Maybe something went 
wrong during buildworld and the executable itself is broken?


More information about the freebsd-dtrace mailing list