DTrace Change Log
Below are lists of changes made to DTrace since its initial release in Solaris 10 (10/04). The first list notes the major features (new functions, variables, capabilities, etc.), and the second list includes every bug fix or RFE that was DTrace-related.
Solaris 10 7/05 includes all changes up to an including those in snv_17. Solaris 10 6/06 has only minor DTrace improvements. Future backports to Solaris 10 will similarly synchronize with a particular build.
Features by Build
snv_109
- DTrace CPC Provider
snv_93
- DTrace IP Provider
snv_84
- DTrace NFS v3 Provider
- stddev() aggregating function
snv_80
- DTrace NFS v4 Provider
snv_69
- iSCSI target provider
snv_66
- inet_ntoa(), inet_ntoa6(), inet_ntop() subroutines
snv_58
- sysevent DTrace provider
snv_50
- htons(), htonl(), htonll(), ntohs(), ntohl(), and htohll() subroutines
- _DTRACE_VERSION defined in standard system headers
- dtrace(1M) -G 'guesses' the output bitness
snv_48
- DTrace test suite
snv_38
- is-enabled probes
- fsinfo provider
snv_37
- DTrace support in Zones
snv_35
- DTrace JNI Binding
snv_34
- USDT headergen
snv_30
- printa() with multiple aggregations
- aggregation sorting options
snv_23
- umod()/ufunc()/usym(), mod()/func()/sym()
- allow quantize()/lquantize() increments to be D expressions
- ucaller variable
- flowindent should operate on any probe ending in "-entry"/"-return"
snv_20
- stackdepth variable
snv_16
- fds[] array for file descriptor information
snv_15
- strtok(), strstr(), strchr(), strrchr(), substr(), index(), rindex() subroutines
- support for non-scalar clause-local variables
- optional limit parameter to copyinstr()
snv_11
- dtrace(1M) -lv to show probes argument types and stability
snv_09
- retained enablings to allow for run-time probe matching
- -x and other options for lockstat(1M) and plockstat(1M)
Changes By Build
snv_109
6486156 DTrace cpc provider
snv_108
6791723 Dtrace doesn't populate the fi_pathname in io provider whith UFS directio 6749441 intrstat(1M) shows zeroed values after suspend/resume 6786517 /usr/demo/dtrace/qtime.d tracks enqueue/dequeue times incorrectly
snv_107
No DTrace-related changes.
snv_106
6750659 drti.o crashes app due to corrupt environment
snv_105
No DTrace-related changes.
snv_104
No DTrace-related changes.
snv_103
6738982 Representative thread after DTrace stop() action is incorrect 6737974 DTrace probe module globbing doesn't work 6730287 tst/common/printf/tst.str.d needs to be updated for ZFS boot
snv_102
No DTrace-related changes.
snv_101
No DTrace-related changes.
snv_100
No DTrace-related changes.
snv_99
6737926 getAggregate() method fails to specify anonymous aggregation explicitly 6735480 race between probe enabling and provider registration
snv_98
No DTrace-related changes.
snv_97
6734627 protocmp complains about opt/SUNWdtrt/README after TW -> Hg switch
snv_96
6696397 NFS v3 provider reports all UDP clients as 0.0.0.0
snv_95
No DTrace-related changes.
snv_94
6721057 tst.sdtargs.d fails on 7th sdt arg on amd64 6721426 tst.sdtargs.d passes despite dtrace "invalid address" error 6718877 crgetzoneid() use can cause problems when forking processes with USDT providers in a non global zone
snv_93
6640019 DTrace IP Provider 6655707 sdt arguments are off-by-one past the 5th 6667364 /usr/demo/dtrace/index.html: URLs to dtrace guide chapters wrong
snv_92
6705554 dtrace_disx86() returns incorrect instruction size causing spurious watchpoint traps
snv_91
6685348 Hypervisor event provider for DTrace
snv_90
6677812 race between dtrace activities in non-local zones 6684076 is_enabled at -xO2 and greater causes a functions return value to be over-written
snv_89
6690973 assertion failure during test run (schrock)
snv_88
6583726 race between program and process destruction 6642281 substr() doesn't properly null-terminate 6642734 substr() can do the wrong thing for invalid index values 6642972 substr() is broken with a negative third argument 6646597 library load failures aren't properly propagated to dependents 6654396 new pid probes aren't attached to retained enablings 6654402 user provider clean up needs some work 6663020 fasttrap_pid_probe() wasn't fully updated for amd64 6672627 Code optimizer cause problems for dtrace -G
snv_87
No DTrace-related changes.
snv_86
No DTrace-related changes.
snv_85
6545859 ERROR: /opt/SUNWdtrt/tst/common/java_api/tst.Bean.ksh stdout mismatch 6650894 'dtest -i java' errors 6652174 add "-target 1.5" javac flag to build dtest Java classes 6652183 add "-Xlint" javac flag to Java DTrace API build 6652217 Java DTrace API loses aggregation record order 6667597 Java DTrace API does not handle negative average in avg() action 6667606 Java DTrace API needs to support stddev() action 6668854 DTrace Java tests should run by default 6668856 dtest -u is useless
snv_84
6660173 PSARC 2008/050 DTrace NFS v3 Provider 6660179 fix stability of NFS v4 provider 6325485 A stddev() aggregator would be a nice adjunct to avg() 6618705 p*d123 doesn't cause pid probes to be created 6624541 dtrace aggregations should assume signed arguments 6639830 chkargs Makefile gets a binary from the build machine, and not the works pace
snv_83
6657340 tst.helper.d on x86 was broken by 4947191
snv_82
6623226 lockstat(1M) causes a system panic
snv_81
No DTrace-related changes.
snv_80
6635086 DTrace NFS v4 Provider
snv_79
6600430 library dependencies for DTrace 6602183 names of all non USDT based providers should be able to end with a digit 6630135 symbols created for dtrace -G should be removed in the final link
snv_78
6624263 syscall/tst.args cannot fail
snv_77
No DTrace-related changes.
snv_76
No DTrace-related changes.
snv_75
6606981 the ucaller variable requires additional checks
snv_74
No DTrace-related changes.
snv_73
6543061 /opt/SUNWdtrt/tst/common/mib/tst.tcp.ksh can hang if fingerd is disabled 6581091 some DTrace test suite tests are not dstyle clean 6581196 many ksh scripts in the DTrace test suite use incorrect SCCS ID string 6581228 some DTrace test suite scripts need to specify a unit for cleanrate 6593038 some D scripts in the test suite contain multiple identical SCCS ident strings
snv_72
6546290 /opt/SUNWdtrt/tst/common/predicates/tst.predcache.ksh : could not unload dtrace 6573659 removing a USDT provider can undermine pid probes 6576041 ERROR: /opt/SUNWdtrt/tst/common/usdt/tst.dlclose1.ksh stdout mismatch 6581257 dtrace_lookup_by_type() can fail spuriously 6582425 tst/common/usdt/tst.forker.ksh can hang 6593326 dtrace test suite failures
snv_71
No DTrace-related changes.
snv_70
6468390 dtrace_canstore()'s mechanism for validating dynamic variable stores needs improving 6578110 The DIF 'ret' instruction doesn't work as advertised 6576371 Tail-call USDT probes can use wrong argument values
snv_69
6533833 A trapstat and ustack()/ustackdepth combination causes problems with invalid contexts 6573073 usdt args[] are incorrectly translated 6574850 dt_idhash_iter() needs to cache the array length 6573074 PSARC 2007/153 iSCSI target provider
snv_68
No DTrace-related changes.
snv_67
No DTrace-related changes.
snv_66
6535590 Pid provider doesn't work with probe "main:entry" 6551723 dtrace's mkdemo.pl causes false positive on inter-workspace wsdiff 6556673 potential deadlock with USDT tear-down and enable 6558517 need DTrace versions of IP address to string functions, like inet_ntop() 6560894 inet_nto* functions need DTrace version number bumped
snv_65
No DTrace-related changes.
snv_64
No DTrace-related changes.
snv_63
6542480 fix for 6534991 broke the nightly build with gcc
snv_62
6533678 dtrace incorrectly resumes execution in the middle of 2-byte int 3 instr 6534035 dtrace_user_probe fails to consider alternate code selectors when checking for int3 functions 6484266 fasttrap needs to check for duplicate offsets 6497891 dtrace -G can fail due to uninitialized data 6504328 mapid disabling isn't enough 6512813 calendar-based DTrace tests fail when not in US/Pacific 6513027 tst.[v]fork.d needs updating for forksys() 6534984 fasttrap emulation code could use some work 6534988 remove the lint work-around from fasttrap 6534991 prepare the DTrace test suite for PIT
snv_61
6479888 dtrace_detach() deadlocks with cpu_configure() via cpu_lock
snv_60
6524709 executables using /usr/lib/libc.so.1 as the ELF interpreter dump core
snv_59
6513018 tst.udp. needs updating 6517428 readObject() methods should call initCause() on InvalidObjectException 6517433 replace StringBuffer with StringBuilder 6521523 aggregation drops can hang the Java DTrace API 6479756 dtrace can cause "panic send mondo timeout" 6512250 dtrace_getustack_common() could be improved
snv_58
6507659 tsc differences between CPU's give dtrace_gethrtime() serious problems 6513863 java_api tests assume that PATH includes current directory 6515452 Program.File deserialization is broken PSARC 2007/036 sysevent DTrace provider 6517131 sysevent DTrace provider
snv_57
6510395 Add "-target 1.5" to javac build 5030630 bcmp() on x86 cannot be dtraced
snv_56
6436284 ::dtrace dumps core if given anonymous trace state 6488973 Implement DTrace ECB walker 6504126 pid provider probemod test for DTrace test suite 6501469 xref should include dtrace scripts in cscope.out 6494827 OPL dtrace_blksuword32() needs to do a flush 6505802 test suite failure: tst.Bean.ksh 6505806 test suite failure: tst.MultiAggPrinta.ksh 6506495 -DJAVA_DTRACE_MAX_CONSUMERS=N for any N < 8 is treated as if it were 8
snv_55
No DTrace-related changes.
snv_54
6489516 fix up some Makefile issues for dtrace/test 6493158 pid provider having problems matching module names
snv_53
6478725 dtrace_load* are no longer as safe as they used to be.
snv_52
No DTrace-related changes.
snv_51
6458281 dtrace structure tracing problem 6474442 dtrace would benefit from a few extra safety tests 6296612 plockstat dumps core on second call 6478044 dtrace assert: kaddr >= kernelbase && kaddr + size >= kaddr in dtrace_copyin() 6479887 DTRACE_INRANGE incorrectly treats testsz as a signed quantity 6479991 some err.* test cases need work
snv_50
6282214 Byte Ordering Functions in libdtrace 6353438 syscall arguments past the 5th are incorrect 6432394 some sort of #define to denote the availability of USDT 6435862 dtrace -G can generate malformed string tables 6443592 dtrace(1M) leaves a breakpoint in rtld_db_dlactivity on error 6455174 assertion failed: new_pc != 0, file: ../../intel/dtrace/fasttrap_isa.c, line: 1606 6456626 dtrace -G should be able to 'guess' output format 6461522 Availability of dummy-macros for USDT probes in non-DTrace-supported environments 6462995 the syscall provider truncates return values on 32-bit x86 kernels 6465195 assertion failed: -1 <= rmindex && rmindex < tp->ftt_size 6472119 fasttrap should optimize the nop case on x86 6472121 dtest.pl should use the right compilers 6457918 Java DTrace API does not support umod()/ufunc()/usym(), mod()/func()/sym() 6467507 Java DTrace API javadoc links to DTrace guide broken 6468139 ufunc() aggregation key sorts strangely 6470482 Aggregation key integer representation and ordering differs between Java API and libdtrace 6470519 LocalConsumer CLOSED state reverts to STOPPED 6465302 integrate Java DTrace API tests with DTrace test suite 6467526 test suite: sched/tst.stackdepth.d fails in empty stack case
snv_49
6455612 DTrace proc provider should have inline for thread home lgroup
snv_48
6464285 integrate the DTrace test suite
snv_47
6387493 uid variable isn't available to non-root DTrace users 6436283 anonymous tracing is broken on MP systems 6458769 x86 anonymous tracing may not work on non-boot CPUs 6458770 x86 startup is confused for two seconds per slave CPU
snv_46
No DTrace-related changes.
snv_45
No DTrace-related changes.
snv_44
No DTrace-related changes.
snv_43
6430221 few memory leaks from dtrace 6436303 the old fasttrap static probe needs to go 6436364 race between creating and enabling USDT probes
snv_42
No DTrace-related changes.
snv_41
6426129 abort() after close() throws NoSuchElementException 6345226 iotime.d is off by 10 6426934 USDT providers should leave with their load objects 6431036 dtrace_helpers_duplicate() confuses dtrace_helpers_destroy()
snv_40
6419826 USDT DOF is rejected with a plurality of is-enabled probes
snv_39
6413280 lookupKernelFunction() & lookupUserFunction() truncate last char 6410027 ustack() on x86 doesn't match pstack(1) 6414721 it should be legal to have only is-enabled probes 6414729 USDT probes can't be enabled during fork 6414734 $dtrace... symbols appear for static functions containing USDT probes 6414740 processes without DTrace privileges don't auto-enable their USDT probes 6415612 core section headers can be corrupt 6415617 USDT providers with identical names can cause an assertion failure
snv_38
6405927 USDT is-enabled probes 6405929 USDT DOF with zero probes results in an unsatisfiable memory allocation 6405932 dead variables in usr/src/uts/common/dtrace/dtrace.c 6405939 ::dofdump doesn't use section sizes correctly 6399888 stop() hangs if listener calls synchronized Consumer method 6399897 Option class getOption() method should be renamed getName() 6399915 ProbeDescription single arg constructor should parse probedesc PSARC 2006/196 DTrace Filesystem Info Provider 6405662 add DTrace fsinfo provider 6369582 dtrace fbt:procfs:prgetattr:return probe causes panic 6377362 killing a -xbufpolicy=ring dtrace consumer can panic the system 6379717 dtrace_dynvar() lookup/dealloc race when dirty list is empty 6380434 dtrace_softstate items consume more space than required 6405658 "failed to grab process" when instrumenting many processes 6408665 dtrace fails in nightly build
snv_37
4970596 RFE: should be able to run some DTrace programs in a zone 6231905 PRIV_DTRACE_PROC and PRIV_DTRACE_USER don't respect PRIV_PROC_ZONE 6388070 non-root non-global zone users can't get dtrace provider modules to load 6393431 dtrace_proc + proc_owner doesn't sufficiently enable destructive actions
snv_36
6390378 Java DTrace API javadoc permissions inconsistencies 6392748 Java DTrace API class diagram improve gif quality 6395902 use of USDT probes can cause plockstat and other scripts to fail
snv_35
PSARC 2006/054 DTrace JNI Binding 6384263 PSARC 2006/054 DTrace JNI Binding 6217718 plockstat(1m) should sort by total 6381059 libdtrace doesn't correctly detect all x64 jump tables 6381319 the compiler reuses aggregation IDs for disparate aggregations 6384324 plockstat output can be very confusing 6386262 DTrace version needs to be bumped for the update
snv_34
4864945 spelling error in usage message 6299947 ustack() needs to ignore the top 32 bits for 32-bit processes 6305794 libdtrace misses rtld notifications 6309681 USDT headergen 6349088 dtrace command, Assertion failed: dpr->dpr_refs != 0, file ../common/dt_proc.c, line 976 6375841 USDT providers shouldn't be allowed to end in a digit
snv_33
No DTrace-related changes.
snv_32
6198296 dtrace's printf() misses a corner case 6235357 dtrace(1M) can't ignore SIGINT and SIGTERM 6282866 D string behaviors need some cleanup 6304467 dtrace -G by itself does nothing and produces no output 6305443 dtrace falls for typedef fake 6312329 qlen.d example won't parse 6312678 D compiler needs to resolve direct_declarator IDENT/TNAME ambiguity 6320980 ctf_enum_value() returns NULL instead of CTF_ERR on failure 6368524 ctf_lookup_by_name() qualifier check can be made more efficient 6368529 Psetbkpt() is returning EBUSY instead of setting errno to EBUSY 6370454 dtrace should support USDT probes in static functions
snv_31
6356708 libdtrace should interrogate providers, open devices via /dev.
snv_30
6340196 Probe effect when using strings in aggregations could be reduced 6350217 printa() refuses to use %Y/%T format specifiers 6350219 aggregation/assoc. array error messages should use "key" nomenclature 6350221 undefined behavior when lquantize() is used inconsistently 6350223 printa() should support multiple aggregations 6350224 need aggregation sorting options 6350225 need private dtrace(1M) option for buffered handler debugging 6357600 zero value in AGGKEY bufhandler does not match buffered output 6357949 lockstat fails with "bad quantize size in aggregation record" 6309410 gcc and SPARC-specific dtrace code don't get along
snv_29
6332949 V240 panics with kmem_flags set, buffer corruption in streams/Dtrace while testing arbitrary patches 6340028 assertion failed: dtrace_deferred_pid != NULL, file: ../../common/dtrace/dtrace.c, line: 12485
snv_28
No DTrace-related changes.
snv_27
No DTrace-related changes.
snv_26
6334302 dtrace panic the system when enabling probes.
snv_25
5094814 dtrace user return probe trap causes assertion failure 6322760 dt_pid.c needs to rework its use of xyerror() 6327139 pid provider link map handling is inconsistent 6330782 ustackdepth may not always match the depth of ustack() 6330787 threads with no user context can report bogus ustacks
snv_24
5072038 binaries shouldn't be stripped 6319069 multiple providers can't instrument the same user-land instruction 6254145 Assertion failed: dpr != NULL, file ../common/dt_proc.c, line 629 6304960 Instrumentation of "ret" needs to be more sophisticated 6324319 runtime dtrace options work only by chance
snv_23
6256581 System got a hang or a panic with dtrace+kmdb 6264573 unanchored dtrace_getpcstack is rather imprecise toward function end 6289517 dtrace doesn't like fd_intr anymore 6291378 dtrace helpers can interfere with the use of kmdb 6295554 dtrace doesn't report errors in ERROR probes 6311947 add umod()/ufunc()/usym(), mod()/func()/sym() 6311952 buffered handler should be called after printing each tuple element 6311956 drops induced by END are not recorded 6311958 should indicate missing jstack() frames due to string table overflows 6311960 allow some DTrace options to be set dynamically 6311963 jstack() produces stacks packed with "StubRoutines" 6311975 allow boolean DTrace options to be unset 6315028 allow quantize()/lquantize() increments to be D expressions 6315033 add dtrace_addr2str()/dtrace_uaddr2str() to libdtrace API 6315034 add ucaller variable 6315035 enablings containing USDT probes are not dynamically reevaluated 6315037 cannot aggregate on the return value of some subroutines 6315039 including in a D script induces compile-time error 6315087 stack() not correctly printed for 32-bit consumers on amd64 kernel 6315975 flowindent should operate on any probe ending in "-entry"/"-return" 6317350 symbol tables should not be discarded for UNDEAD processes 6320437 ::difo doesn't always properly align its output 6320438 helper tracing should trace detailed error information 6320439 aggregations with negative values are not properly sorted 6320440 quantizations with values in zero bucket are not properly sorted 6320443 linear quantizations with values beyond range aren't properly printed 6320445 need mechanism for ustack helpers to annotate frames 6320447 %d doesn't work properly for printa() of aggregation w/ negative values 6320449 helpers should be able to call string-related subroutines
snv_22
6303188 some dtrace scripts with speculations fail to load 6304654 predicates containing args[] references may be incorrectly cached 6272865 race condition between SIGKILL and /proc PCAGENT 6295588 intrstat reports statistics incorrectly
snv_21
6275414 unary operator * doesn't work properly when applied to args[] elements 6282291 D compiler core dumps in dt_node_dynamic() for inline parameter 6295808 dtrace could warn about /* w/i a comment 6301080 dtrace debugging support should be easier to maintain 6301082 mdb should provide raw target support for DOF 6301083 dt_probe_discover() fails assertion when matching unpublished provider 6301086 dtrace(1M) should always dtrace_close() before returning 6301087 dtrace_close() deadlock in dt_proc_destroy() when processes are idle 6301088 dtrace_program_link() leaks ELF handles for object files 6301091 D compiler support for USDT translators (part 2) 6303053 pid provider panic under low memory conditions
snv_20
4970475 There should be a stackdepth equivalent for userland 5084954 value of dip can be incorrect in autovec 6181505 dtrace sysinfo:::modload probe does not fire when using 'modload' 6265417 schedctl-yield isn't listed in sdt_subr.c 6272558 gcc and dtrace don't get along 6276101 dtrace -G behaves strangely with multiple scripts 6284880 intrstat can leak dynamic variable state 6295662 plockstat needs more characters for stack addresses 6296903 invalid memory accesses clear other DTrace error bits
snv_19
No DTrace-related changes.
snv_18
No DTrace-related changes.
snv_17
6258738 fbt refuses to instrument functions starting with branches 6264469 fbt is confused by jump tables in code 6264473 fbt is confused by the return instruction 6276979 dtrace needs some clean up 6278983 SDT misbehaves for gcc-compiled kernel modules on SPARC
snv_16
6267117 Arguments are incorrectly printed for fbt provider on amd64 5108961 vestigial kadb turds left in dtrace 6214615 Conversion of bufinfo_t's b_resid is not defined in the io.d translator 6225650 D compiler can't resolve past implicit forward declarations 6267670 dt_type_pointer() should report reason for failure 6267671 ctf_add_type() fails when definition added after forward declaration 6267680 D compiler should not permit void parameters to have names 6267682 D compiler is not checking array redeclarations properly 6267693 D compiler support for inline associative array references 6267695 DTrace should provide a fds[] array for file descriptor information
snv_15
6259805 Enabling compilation of ON with Studio 10 compilers for x86 6265086 DTrace has anemic string handling facilities 6265087 clause-local D variables can only be scalars 6265088 storing NULL to by-reference static variables induces an error 6265090 need mechanism to redirect stdout from within a D script 6265094 copyinstr() should take optional limit parameter
snv_14
6254258 dtrace doesn't pick up usdt probes in dlopened objects 6254741 usdt generation can do the wrong thing with tail calls
snv_13
6217821 dtrace cmd fails assertion in dt_proc_lock() 6219195 lockstat under Solaris10 unacceptably degrades performance 6223379 lockstat fails to report one stack frame 6253027 bufpolicy of "fill" or "ring" causes dtrace(1M) to consume 100% of CPU 6253028 dtrace_probe()/dtrace_state_go() race can induce D data corruption 6253030 adding an action to an ECB takes quadratic time 6253031 dtrace_consume() can (still) call record callbacks with bad argument 6253033 aggregations should be sorted on key as well as value
snv_12
No DTrace-related changes.
snv_11
6234072 pid provider mishandles recursive returns 6232748 pid provider can miss recursive function returns 5029967 dtrace should provide an option to show probe argument types, stability 6231207 libdtrace is not able to properly resolve some probe argument types 6234004 libctf should support interfaces for client data in ctf_file_t's 6234033 ctf_type_name() should return NULL if input fp is NULL 6234037 D strchr2esc() incorrectly includes sign extension bit 6234063 D compiler support for USDT translators (part 1) 6234449 ctf_lookup_by_name() fails when typedef is a qualifier substring 6236617 D compiler support for restrict keyword 6236726 ustack() at pid provider return probes can be confusing 6237196 pmap does not label thread stacks as documented 6238322 fasttrap::fasttrap:fasttrap args are broken on amd64 6239626 helpers aren't backward compatible with S10
snv_10
6216776 wrong function name for sysinfo:::modunload 6226263 usdt probes will fail to instantiate if pid probes are specified first 6228044 the pid provider can miss some function returns 6229159 dtrace should be able to trace dynamically loaded objects 6230315 pid123::ioctl:return finds the wrong instruction
snv_09
6226302 must allow enablings to be retained and rematched 6226320 must allow enablings to be duplicated after tracing is enabled 6226345 dtrace_consume() can call record callbacks with incorrect argument PSARC 2005/052 plockstat(1M) and lockstat(1M) options 6197606 plockstat could have a lower overhead 6221490 plockstat(1M) needs options to set aggsize and aggrate 6221495 plockstat(1M) needs a verbose option to report when tracing has 6221496 plockstat(1M) should have an option to exit after a time limit 6221498 plockstat(1M) should have an option to limit number of entries 6223603 the pid provider is willing to instrument things it shouldn't
snv_08
6218854 USDT and the jstack() action don't work on processes on a zone 6220843 dt_pid should look for PR_OBJ_LDSO rather than ld.so
snv_07
6213962 dtrace -G doesn't work on sparcv8+ object files
snv_06
No DTrace-related changes.
snv_05
No DTrace-related changes.
snv_04
No DTrace-related changes.
snv_03
No DTrace-related changes.
snv_02
No DTrace-related changes.
snv_01
No DTrace-related changes.