Bug 211821 - dtrace: invalid probe specifier lockstat:::: "/usr/lib/dtrace/tcp.d", line 201: operator / requires operands of arithmetic type
Summary: dtrace: invalid probe specifier lockstat:::: "/usr/lib/dtrace/tcp.d", line 20...
Status: Closed Unable to Reproduce
Alias: None
Product: Base System
Classification: Unclassified
Component: kern (show other bugs)
Version: 10.3-RELEASE
Hardware: powerpc Any
: --- Affects Only Me
Assignee: Mark Johnston
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2016-08-13 23:56 UTC by Damon Zwolinski
Modified: 2018-05-30 16:51 UTC (History)
1 user (show)

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Damon Zwolinski 2016-08-13 23:56:32 UTC
It seems that while dtrace knows about `hz, /usr/lib/dtrace/tcp.d does not, which causes the following problem:

EXPECTED
--------

When I run dtrace -ln [[[provider:]module:]probe:]name I expect output like this:

# dtrace -ln lockstat:::
   ID   PROVIDER            MODULE                          FUNCTION NAME
25295   lockstat            kernel                     mtx_lock_spin spin-acquire
25296   lockstat            kernel                     mtx_lock_spin spin-spin
25297   lockstat            kernel                   mtx_unlock_spin spin-release
...
25321   lockstat            kernel                    sx_try_upgrade sx-upgrade
25322   lockstat            kernel                      sx_downgrade sx-downgrade
25323   lockstat            kernel                       thread_lock thread-spin


ACTUAL
------

but instead I get output like this:

dtrace -ln lockstat:::
dtrace: invalid probe specifier lockstat:::: "/usr/lib/dtrace/tcp.d", line 201: operator / requires operands of arithmetic type


# dtrace -l by itself is not affected.


HACK/FIX
--------

In /usr/lib/dtrace/tcp.d, when I change line 201 from:

 201        tcps_rto =              p == NULL ? -1 : (p->t_rxtcur * 1000) / `hz;

to:

 201        tcps_rto =              p == NULL ? -1 : (p->t_rxtcur * 1000) / (int) `hz;

I get the output I expect.



My understanding is that backticks tell dtrace to use kernel variable names but I'm not sure how to include them so that dtrace sees it.

I think hz is an int defined in sys/sys/kernel.h:

 60 extern int tick;                        /* usec per tick (1000000 / hz) */
 61 extern int hz;                          /* system clock's frequency */
 62 extern int psratio;                     /* ratio: prof / stat */

and that t_rxtcur defined in sys/netinet/tcp_var.h is also an int.

 202
 203         int     t_rxtcur;               /* current retransmit value (ticks) */
 204         u_int   t_maxseg;               /* maximum segment size */

So I think casting to an int is reasonable.


With my hack this also works:

# dtrace -n 'BEGIN { trace(`hz); }'
dtrace: description 'BEGIN ' matched 1 probe
dtrace: buffer size lowered to 2m
CPU     ID                    FUNCTION:NAME
  0      1                           :BEGIN      1000

So I conclude that dtrace knows about hz but tcp.d does not.  I suspect there is a way for tcp.d to know about kernel.h rather than do a cast, and that this would be preferable, but I don't know how to do that.


SYSTEM INFO
-----------

I'm using an eMac (PowerPC G4).

# uname -a
FreeBSD emac.local 10.3-RELEASE FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 05:18:20 UTC 2016     root@releng1.nyi.freebsd.org:/usr/obj/powerpc.powerpc/usr/src/sys/GENERIC  powerpc

$ dmesg
...
FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 05:18:20 UTC 2016
    root@releng1.nyi.freebsd.org:/usr/obj/powerpc.powerpc/usr/src/sys/GENERIC powerpc
gcc version 4.2.1 20070831 patched [FreeBSD]
cpu0: Motorola PowerPC 7455 revision 3.3, 1000.29 MHz
cpu0: Features 9c000000<PPC32,ALTIVEC,FPU,MMU>
cpu0: HID0 8450c0bc<EMCP,TBEN,NAP,DPM,ICE,DCE,SGE,BTIC,LRSTK,FOLD,BHT>
real memory  = 520597504 (496 MB)
...

Thank you,
- d
Comment 1 Mark Johnston freebsd_committer freebsd_triage 2016-08-14 00:04:12 UTC
Your example invocation works for me on amd64. Could you run the command with DTRACE_DEBUG=1 set in the environment and record the output here?
Comment 2 Damon Zwolinski 2016-08-15 04:20:03 UTC
# echo $SHELL
/bin/csh
# setenv DTRACE_DEBUG 1
# echo $DTRACE_DEBUG
1

WITHOUT HACK
------------
# dtrace -ln lockstat:::
libdtrace DEBUG: opened provider dtrace
libdtrace DEBUG: opened provider dtmalloc
libdtrace DEBUG: opened provider fbt
libdtrace DEBUG: opened provider lockstat
libdtrace DEBUG: opened provider profile
libdtrace DEBUG: opened 32-bit module kernel () [0]
libdtrace DEBUG: opened 32-bit module dtraceall.ko () [0]
libdtrace DEBUG: opened 32-bit module profile.ko () [0]
libdtrace DEBUG: opened 32-bit module opensolaris.ko () [0]
libdtrace DEBUG: opened 32-bit module dtrace.ko () [0]
libdtrace DEBUG: opened 32-bit module systrace.ko () [0]
libdtrace DEBUG: opened 32-bit module sdt.ko () [0]
libdtrace DEBUG: opened 32-bit module lockstat.ko () [0]
libdtrace DEBUG: opened 32-bit module fbt.ko () [0]
libdtrace DEBUG: opened 32-bit module dtnfscl.ko () [0]
libdtrace DEBUG: opened 32-bit module dtmalloc.ko () [0]
libdtrace DEBUG: created CTF container for C (0x4207a180)
libdtrace DEBUG: created CTF container for D (0x4207a300)
libdtrace DEBUG: loaded kernel [.SUNW_ctf] (408068 bytes)
libdtrace DEBUG: loaded kernel [.symtab] (551824 bytes)
libdtrace DEBUG: loaded kernel [.strtab] (929404 bytes)
libdtrace DEBUG: hashed kernel [.symtab] (34449 symbols)
libdtrace DEBUG: sorted kernel [.symtab] (34410 symbols)
libdtrace DEBUG: loaded CTF container for kernel (0x4207a480)
libdtrace DEBUG: loaded printf conversion %a
libdtrace DEBUG: loaded printf conversion %A
libdtrace DEBUG: loaded printf conversion %c
libdtrace DEBUG: loaded printf conversion %C
libdtrace DEBUG: loaded printf conversion %d
libdtrace DEBUG: loaded printf conversion %e
libdtrace DEBUG: loaded printf conversion %E
libdtrace DEBUG: loaded printf conversion %f
libdtrace DEBUG: loaded printf conversion %g
libdtrace DEBUG: loaded printf conversion %G
libdtrace DEBUG: loaded printf conversion %hd
libdtrace DEBUG: loaded printf conversion %hi
libdtrace DEBUG: loaded printf conversion %ho
libdtrace DEBUG: loaded printf conversion %hu
libdtrace DEBUG: loaded printf conversion %hx
libdtrace DEBUG: loaded printf conversion %hX
libdtrace DEBUG: loaded printf conversion %i
libdtrace DEBUG: loaded printf conversion %I
libdtrace DEBUG: loaded printf conversion %k
libdtrace DEBUG: loaded printf conversion %lc
libdtrace DEBUG: loaded printf conversion %ld
libdtrace DEBUG: loaded printf conversion %li
libdtrace DEBUG: loaded printf conversion %lo
libdtrace DEBUG: loaded printf conversion %lu
libdtrace DEBUG: loaded printf conversion %ls
libdtrace DEBUG: loaded printf conversion %lx
libdtrace DEBUG: loaded printf conversion %lX
libdtrace DEBUG: loaded printf conversion %lld
libdtrace DEBUG: loaded printf conversion %lli
libdtrace DEBUG: loaded printf conversion %llo
libdtrace DEBUG: loaded printf conversion %llu
libdtrace DEBUG: loaded printf conversion %llx
libdtrace DEBUG: loaded printf conversion %llX
libdtrace DEBUG: loaded printf conversion %Le
libdtrace DEBUG: loaded printf conversion %LE
libdtrace DEBUG: loaded printf conversion %Lf
libdtrace DEBUG: loaded printf conversion %Lg
libdtrace DEBUG: loaded printf conversion %LG
libdtrace DEBUG: loaded printf conversion %o
libdtrace DEBUG: loaded printf conversion %p
libdtrace DEBUG: loaded printf conversion %P
libdtrace DEBUG: loaded printf conversion %s
libdtrace DEBUG: loaded printf conversion %S
libdtrace DEBUG: loaded printf conversion %T
libdtrace DEBUG: loaded printf conversion %u
libdtrace DEBUG: loaded printf conversion %wc
libdtrace DEBUG: loaded printf conversion %ws
libdtrace DEBUG: loaded printf conversion %x
libdtrace DEBUG: loaded printf conversion %X
libdtrace DEBUG: loaded printf conversion %Y
libdtrace DEBUG: loaded printf conversion %%
libdtrace DEBUG: populating global idhash from 0x41908468
libdtrace DEBUG: loaded dtraceall.ko [.SUNW_ctf] (1884 bytes)
libdtrace DEBUG: loaded dtraceall.ko [.symtab] (1072 bytes)
libdtrace DEBUG: loaded dtraceall.ko [.strtab] (1813 bytes)
libdtrace DEBUG: hashed dtraceall.ko [.symtab] (52 symbols)
libdtrace DEBUG: sorted dtraceall.ko [.symtab] (47 symbols)
libdtrace DEBUG: loaded CTF container for dtraceall.ko (0x4207a600)
libdtrace DEBUG: loaded profile.ko [.SUNW_ctf] (17923 bytes)
libdtrace DEBUG: loaded profile.ko [.symtab] (1568 bytes)
libdtrace DEBUG: loaded profile.ko [.strtab] (1660 bytes)
libdtrace DEBUG: hashed profile.ko [.symtab] (81 symbols)
libdtrace DEBUG: sorted profile.ko [.symtab] (52 symbols)
libdtrace DEBUG: loaded CTF container for profile.ko (0x4207a780)
libdtrace DEBUG: loaded opensolaris.ko [.SUNW_ctf] (10844 bytes)
libdtrace DEBUG: loaded opensolaris.ko [.symtab] (2352 bytes)
libdtrace DEBUG: loaded opensolaris.ko [.strtab] (2482 bytes)
libdtrace DEBUG: hashed opensolaris.ko [.symtab] (129 symbols)
libdtrace DEBUG: sorted opensolaris.ko [.symtab] (87 symbols)
libdtrace DEBUG: loaded CTF container for opensolaris.ko (0x4207aa80)
libdtrace DEBUG: loaded dtrace.ko [.SUNW_ctf] (28262 bytes)
libdtrace DEBUG: loaded dtrace.ko [.symtab] (8032 bytes)
libdtrace DEBUG: loaded dtrace.ko [.strtab] (9572 bytes)
libdtrace DEBUG: hashed dtrace.ko [.symtab] (482 symbols)
libdtrace DEBUG: sorted dtrace.ko [.symtab] (363 symbols)
libdtrace DEBUG: loaded CTF container for dtrace.ko (0x4207ac00)
libdtrace DEBUG: loaded systrace.ko [.SUNW_ctf] (30808 bytes)
libdtrace DEBUG: loaded systrace.ko [.symtab] (1312 bytes)
libdtrace DEBUG: loaded systrace.ko [.strtab] (1491 bytes)
libdtrace DEBUG: hashed systrace.ko [.symtab] (65 symbols)
libdtrace DEBUG: sorted systrace.ko [.symtab] (48 symbols)
libdtrace DEBUG: loaded CTF container for systrace.ko (0x4207ad80)
libdtrace DEBUG: loaded sdt.ko [.SUNW_ctf] (17716 bytes)
libdtrace DEBUG: loaded sdt.ko [.symtab] (1408 bytes)
libdtrace DEBUG: loaded sdt.ko [.strtab] (1399 bytes)
libdtrace DEBUG: hashed sdt.ko [.symtab] (71 symbols)
libdtrace DEBUG: sorted sdt.ko [.symtab] (43 symbols)
libdtrace DEBUG: loaded CTF container for sdt.ko (0x4207b080)
libdtrace DEBUG: loaded lockstat.ko [.SUNW_ctf] (17361 bytes)
libdtrace DEBUG: loaded lockstat.ko [.symtab] (1232 bytes)
libdtrace DEBUG: loaded lockstat.ko [.strtab] (1450 bytes)
libdtrace DEBUG: hashed lockstat.ko [.symtab] (60 symbols)
libdtrace DEBUG: sorted lockstat.ko [.symtab] (45 symbols)
libdtrace DEBUG: loaded CTF container for lockstat.ko (0x4207b380)
libdtrace DEBUG: loaded fbt.ko [.SUNW_ctf] (19929 bytes)
libdtrace DEBUG: loaded fbt.ko [.symtab] (1872 bytes)
libdtrace DEBUG: loaded fbt.ko [.strtab] (1883 bytes)
libdtrace DEBUG: hashed fbt.ko [.symtab] (100 symbols)
libdtrace DEBUG: sorted fbt.ko [.symtab] (67 symbols)
libdtrace DEBUG: loaded CTF container for fbt.ko (0x4207b500)
libdtrace DEBUG: loaded dtnfscl.ko [.SUNW_ctf] (17578 bytes)
libdtrace DEBUG: loaded dtnfscl.ko [.symtab] (1808 bytes)
libdtrace DEBUG: loaded dtnfscl.ko [.strtab] (2657 bytes)
libdtrace DEBUG: hashed dtnfscl.ko [.symtab] (96 symbols)
libdtrace DEBUG: sorted dtnfscl.ko [.symtab] (61 symbols)
libdtrace DEBUG: loaded CTF container for dtnfscl.ko (0x4207b680)
libdtrace DEBUG: loaded dtmalloc.ko [.SUNW_ctf] (17500 bytes)
libdtrace DEBUG: loaded dtmalloc.ko [.symtab] (1280 bytes)
libdtrace DEBUG: loaded dtmalloc.ko [.strtab] (1496 bytes)
libdtrace DEBUG: hashed dtmalloc.ko [.symtab] (63 symbols)
libdtrace DEBUG: sorted dtmalloc.ko [.symtab] (46 symbols)
libdtrace DEBUG: loaded CTF container for dtmalloc.ko (0x4207b800)
libdtrace DEBUG: library /usr/lib/dtrace/udp.d sorted (1/2)
libdtrace DEBUG: library /usr/lib/dtrace/tcp.d sorted (3/4)
libdtrace DEBUG: library /usr/lib/dtrace/ip.d sorted (5/6)
libdtrace DEBUG: library /usr/lib/dtrace/io.d sorted (7/8)
libdtrace DEBUG: library /usr/lib/dtrace/signal.d sorted (9/10)
libdtrace DEBUG: library /usr/lib/dtrace/unistd.d sorted (11/12)
libdtrace DEBUG: library /usr/lib/dtrace/errno.d sorted (13/14)
libdtrace DEBUG: library /usr/lib/dtrace/psinfo.d sorted (15/16)
libdtrace DEBUG: typedef psinfo_t added as id 32805
libdtrace DEBUG: typedef lwpsinfo_t added as id 32808
libdtrace DEBUG: typedef devinfo_t added as id 32811
libdtrace DEBUG: typedef bufinfo_t added as id 32817
libdtrace DEBUG: typedef pktinfo_t added as id 32820
libdtrace DEBUG: typedef zoneid_t added as id 32821
libdtrace DEBUG: typedef csinfo_t added as id 32823
libdtrace DEBUG: typedef ipinfo_t added as id 32825
libdtrace DEBUG: typedef ifinfo_t added as id 32827
libdtrace DEBUG: typedef ipaddr_t added as id 32828
libdtrace DEBUG: typedef ipha_t added as id 32830
libdtrace DEBUG: typedef ipv4info_t added as id 32833
libdtrace DEBUG: typedef in6_addr_t added as id 32844
libdtrace DEBUG: typedef ipv6info_t added as id 32855
libdtrace DEBUG: typedef tcpsinfo_t added as id 32865
libdtrace DEBUG: typedef tcplsinfo_t added as id 32867
libdtrace DEBUG: typedef tcpinfo_t added as id 32876
libdtrace DEBUG: typedef tcpinfoh_t added as id 32878
dtrace: invalid probe specifier lockstat:::: "/usr/lib/dtrace/tcp.d", line 201: operator / requires operands of arithmetic type
libdtrace DEBUG: dt_buf_destroy(section headers): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(string table): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(loadable data): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(unloadable data): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe data): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe args): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe offs): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe is-enabled offs): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe rels): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(xlate members): size=512 resizes=0


WITH HACK
---------
# dtrace -ln lockstat:::
libdtrace DEBUG: opened 32-bit module kernel () [0]
libdtrace DEBUG: opened 32-bit module dtraceall.ko () [0]
libdtrace DEBUG: opened 32-bit module profile.ko () [0]
libdtrace DEBUG: opened 32-bit module opensolaris.ko () [0]
...
libdtrace DEBUG: typedef ipv4info_t added as id 32833
libdtrace DEBUG: typedef in6_addr_t added as id 32844
libdtrace DEBUG: typedef ipv6info_t added as id 32855
libdtrace DEBUG: typedef tcpsinfo_t added as id 32865
libdtrace DEBUG: typedef tcplsinfo_t added as id 32867
libdtrace DEBUG: typedef tcpinfo_t added as id 32876
libdtrace DEBUG: typedef tcpinfoh_t added as id 32878
libdtrace DEBUG: typedef udpsinfo_t added as id 32884       [above does't get to here...]
libdtrace DEBUG: typedef udpinfo_t added as id 32889
libdtrace DEBUG: set context to lockstat::: [0] prp=0x0 attr=[u/u/c] argc=0
libdtrace DEBUG: set label to <action list>
libdtrace DEBUG: set label to <NULL>
   ID   PROVIDER            MODULE                          FUNCTION NAME
25295   lockstat            kernel                     mtx_lock_spin spin-acquire
25296   lockstat            kernel                     mtx_lock_spin spin-spin
25297   lockstat            kernel                   mtx_unlock_spin spin-release
25298   lockstat            kernel                          mtx_lock adaptive-acquire
25299   lockstat            kernel                          mtx_lock adaptive-block
25300   lockstat            kernel                          mtx_lock adaptive-spin
25301   lockstat            kernel                        mtx_unlock adaptive-release
25302   lockstat            kernel                       mtx_trylock adaptive-acquire
25303   lockstat            kernel                          rw_rlock rw-acquire
25304   lockstat            kernel                          rw_rlock rw-block
25305   lockstat            kernel                          rw_rlock rw-spin
25306   lockstat            kernel                        rw_runlock rw-release
25307   lockstat            kernel                          rw_wlock rw-acquire
25308   lockstat            kernel                          rw_wlock rw-block
25309   lockstat            kernel                          rw_wlock rw-spin
25310   lockstat            kernel                        rw_wunlock rw-release
25311   lockstat            kernel                    rw_try_upgrade rw-upgrade
25312   lockstat            kernel                      rw_downgrade rw-downgrade
25313   lockstat            kernel                          sx_slock sx-acquire
25314   lockstat            kernel                          sx_slock sx-block
25315   lockstat            kernel                          sx_slock sx-spin
25316   lockstat            kernel                        sx_sunlock sx-release
25317   lockstat            kernel                          sx_xlock sx-acquire
25318   lockstat            kernel                          sx_xlock sx-block
25319   lockstat            kernel                          sx_xlock sx-spin
25320   lockstat            kernel                        sx_xunlock sx-release
25321   lockstat            kernel                    sx_try_upgrade sx-upgrade
25322   lockstat            kernel                      sx_downgrade sx-downgrade
25323   lockstat            kernel                       thread_lock thread-spin
libdtrace DEBUG: dt_buf_destroy(section headers): size=512 resizes=0  [...above resumes here]
libdtrace DEBUG: dt_buf_destroy(string table): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(loadable data): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(unloadable data): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe data): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe args): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe offs): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe is-enabled offs): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(probe rels): size=512 resizes=0
libdtrace DEBUG: dt_buf_destroy(xlate members): size=512 resizes=0
Comment 3 Damon Zwolinski 2016-08-15 05:49:55 UTC
I think this is relevant:

1) On my emac, it looks like `hz is a pointer to an int.  

# dtrace -n 'BEGIN { printf("`hz: %d\n", `hz); exit(0); }'
dtrace: invalid probe specifier BEGIN { printf("%d\n", `hz); exit(0); }: printf( ) argument #2 is incompatible with conversion #1 prototype:
        conversion: %d
         prototype: char, short, int, long, or long long
          argument: int (*)()

# dtrace -qn 'BEGIN { printf("`hz: %p, (int) `hz: %d\n", `hz, (int) `hz); exit(0); }'
dtrace: buffer size lowered to 2m
`hz: 3e8, (int) `hz: 1000


2) On my amd64 system (running in virtualbox on a macbook), `hz is an int.

# uname -a
FreeBSD macbook.local 10.3-RELEASE FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 02:10:02 UTC 2016     root@releng1.nyi.freebsd.org:/usr
/obj/usr/src/sys/GENERIC  amd64

# dtrace -qn 'BEGIN { printf("`hz: %d\n", `hz); exit(0); }'
`hz: 1000

# dtrace -qn 'BEGIN { printf("&`hz: %p, `hz: %d\n", &`hz, `hz); exit(0); }'
&`hz: ffffffff816a5d4c, `hz: 1000


3) I would bet they should be the same.

Assuming sys/sys/kernel.h is the right file, hz is defined as an int there so maybe it's not being brought into dtrace correctly on powerpc and/or on 32 bit systems.  Because I used trace(`hz), which tries to do the right thing (use a cast if needed) above, it seemed like it worked.  I'm also surprised the value of hz is 1000 on my amd64 system.  I thought it would be higher; I double checked to make sure I didn't copy the wrong text.  I guess it doesn't mean what I thought it meant.
Comment 4 Mark Johnston freebsd_committer freebsd_triage 2016-08-15 16:59:49 UTC
Indeed, it looks like the CTF info (C type info used by DTrace) for your kernel is incorrect. hz should be an int.

As you're using a stock 10.3 kernel, I should be able to grab it myself and look for the problem.
Comment 5 Damon Zwolinski 2016-08-20 09:38:41 UTC
Is powerpc64 different than powerpc?  If they're different it seems powerpc64 has the same problem:

# dtrace -ln lockstat:::
dtrace: invalid probe specifier lockstat:::: "/usr/lib/dtrace/tcp.d", line 201: operator / requires operands of arithmetic type

# uname -a
FreeBSD g5.local 10.3-RELEASE FreeBSD 10.3-RELEASE #0 r297264: Fri Mar 25 05:57:04 UTC 2016     root@releng1.nyi.freebsd.org:/usr/obj/powerpc.powerpc64/usr/src/sys/GENERIC64  powerpc
Comment 6 Damon Zwolinski 2016-08-20 10:22:30 UTC
So I'm wrong.  On powerpc64 it's not the same; it's worse:

When I change /usr/lib/dtrace/tcp.d and cast `hz to int:
200         tcps_sack_snxt =        p == NULL ? 0  : p->sack_newdata;
201         tcps_rto =              p == NULL ? -1 : (p->t_rxtcur * 1000) / (int) `hz; 
202         tcps_mss =              p == NULL ? -1  : p->t_maxseg;

and run:
# dtrace -ln lockstat:::

I get:
dtrace: invalid probe specifier lockstat:::: "/usr/lib/dtrace/tcp.d", line 201: invalid cast expression: "struct ip6stat" to "int"

When I change /usr/lib/dtrace/tcp.d to:
200         tcps_sack_snxt =        p == NULL ? 0  : p->sack_newdata;
201         tcps_rto =              p == NULL ? -1 : (p->t_rxtcur * 1000) / 1000;
202         tcps_mss =              p == NULL ? -1  : p->t_maxseg;

and run:
# dtrace -n 'BEGIN { trace(`hz); exit(0); }'

I get:
dtrace: description 'BEGIN ' matched 1 probe
CPU     ID                    FUNCTION:NAME
  0      1                           :BEGIN 
             0  1  2  3  4  5  6  7  8  9  a  b  c  d  e  f  0123456789abcdef
         0: 00 00 03 e8 00 00 03 e8 00 00 00 00 00 41 89 37  .............A.7
        10: 00 00 00 00 00 00 00 00 00 41 89 37 4b c6 a7 ee  .........A.7K...
        20: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
        30: 00 01 80 00 00 00 00 00 00 00 00 00 04 00 00 00  ................
...
       ca0: 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 04  ................
       cb0: 00 00 00 00 01 54 3e 00 00 00 00 00 00 b3 24 c8  .....T>.......$.
       cc0: 00 0b 00 00 00 00 00 00 00 00 00 00 00 00 00 00  ................
       cd0: 00 00 00 00 00 00 00 04 00 00 00 00 01 54 28 80  .............T(.
       ce0: 00 00 00 00 00 b3 24 c8 00 0b 00 00 00 00 00 00  ......$.........
it seems `hz is a struct when it should be an int.

Would you prefer I file this as a separate bug?
Comment 7 Eitan Adler freebsd_committer freebsd_triage 2018-05-28 19:45:10 UTC
batch change:

For bugs that match the following
-  Status Is In progress 
AND
- Untouched since 2018-01-01.
AND
- Affects Base System OR Documentation

DO:

Reset to open status.


Note:
I did a quick pass but if you are getting this email it might be worthwhile to double check to see if this bug ought to be closed.
Comment 8 Mark Johnston freebsd_committer freebsd_triage 2018-05-28 19:59:01 UTC
I suspect that this issue is fixed on HEAD and stable/11; in the past we had issues with CTF type index overflows which could result in the symptoms seen here.

To the submitter: are you able to reproduce this on 10.4 or 11.*?
Comment 9 Mark Johnston freebsd_committer freebsd_triage 2018-05-30 16:51:23 UTC
Closing for now. Please reopen if this is reproducible on a more recent release.