dtrace compiler crash compiling additional identical predicates.

Ash Gokhale ashfixit at gmail.com
Fri Jul 13 17:54:21 UTC 2018


While developing a long dtrace script; I seem to be tripping over a
compiler bug. I can tickle the bug by using this in a predicate /
self->thing_var !=  "" / one too many times. Although I use that exact
construction many times. Changing the probe , or even providing an invalid
probe does not change the crash. Commenting out the predicate saves the
compile. Comparing self->var to an integer compiles ok,  ( while not really
making sense in the context). The compiler will segv when asked to produce
the IR  via  'dtrace -S  -ls srcipt.dt'
Efforts to reproduce the crash with a reduced dtrace file have been futile
and the system is sufficiently custom that sharing the script may not be
useful.

Has anyone else seen this crash? Has anyone noticed arbitrary size limit on
dtrace scripts?

[New LWP 103111]
Core was generated by `dtrace -v -s drive-lifecycle.dt'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x0000000800cf5910 in strchr () from /lib/libc.so.7

Thread 1 (LWP 103111):
#0  0x0000000800cf5910 in strchr () from /lib/libc.so.7
#1  0x000000080090999f in ctf_lookup_by_name (fp=<optimized out>,
name=<optimized out>) at
/usr/src/cddl/contrib/opensolaris/common/ctf/ctf_lookup.c:138
#2  0x00000008006b8716 in dtrace_lookup_by_type (dtp=0x801644000,
object=<optimized out>, name=0x803bc8010 "str", tip=<optimized out>) at
/usr/src/cddl/contrib
/opensolaris/lib/libdtrace/common/dt_module.c:1639
#3  0x000000080069c0ce in id_or_type (s=0x803bc8010 "str") at
/usr/src/cddl/contrib/opensolaris/lib/libdtrace/common/dt_lex.l:775
#4  0x00000008006ade05 in yyparse () at dt_grammar.c:1388
#5  0x00000008006a973f in dt_compile (dtp=<optimized out>, context=363,
pspec=DTRACE_PROBESPEC_NAME, arg=0x0, cflags=0, argc=1, argv=0x80064c000,
fp=<optimized
 out>, s=0x0) at
/usr/src/cddl/contrib/opensolaris/lib/libdtrace/common/dt_cc.c:2457
#6  0x00000008006aaf90 in dtrace_program_fcompile (dtp=0x803bc8fff,
fp=0x803bc8010, cflags=114, argc=-2139062144, argv=0x3) at
/usr/src/cddl/contrib/opensolari
s/lib/libdtrace/common/dt_cc.c:2594
#7  0x000000000040493f in compile_file (dcp=0x801638180) at
/usr/src/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:805
#8  0x000000000040311e in main (argc=4, argv=<optimized out>) at
/usr/src/cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:1725


More information about the freebsd-dtrace mailing list