This is the mail archive of the systemtap@sourceware.org mailing list for the systemtap project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

systemtap 2.9 release


The SystemTap team announces release 2.9!

  More compiler optimizations, prologue-searching option, backtracing
  with kernel symbols without debuginfo, callee probe extensions,
  STAP_PRINTF embedded-C macro, improved debuginfo-related
  diagnostics, and more tapset functions, reduced translator memory
  usage.


= Where to get it

  https://sourceware.org/systemtap/ - our project page
  https://sourceware.org/systemtap/ftp/releases/systemtap-2.9.tar.gz
  https://koji.fedoraproject.org/koji/packageinfo?packageID=615
  git tag release-2.9 (commit 7009f2f782e5)

  There have been over 232.66 commits since the last release.
  There have been between 50 and 500 bugs fixed / features added
  since the last release.  Closer to 50.

= How to build it

  See the README and NEWS files at
  https://sourceware.org/git/?p=systemtap.git;a=tree

  Further information at https://sourceware.org/systemtap/wiki/


= SystemTap frontend (stap) changes

- New --prologue-searching[=WHEN] option has been added to stap with '-P' being
  its short counterpart.  Using --prologue-searching=never turns prologue
  searching deliberately off working around issue of int_arg() returning wrong
  value when a 32-bit userspace binary having debug info is being probed with
  active prologue searching.

- Callee probe points now support '.return' and '.call' suffix.
  For example,
    process("proc").function("foo").callee("bar").return
  will fire upon returning from bar when called by foo.
    process("proc").function("foo").callee("bar").call
  will only fire for non-inlined callees.

- SystemTap has reduced its memory consumption by using interned_strings (a
  wrapper for boost::string_ref) in place of std::string instances. The change
  is to reduce the number of duplicate strings created by replacing them with
  interned_strings which act like pointers to existing strings.


= SystemTap script language changes

- Embedded-C functions may now use the new STAP_PRINTF(fmt, ...)
  macro for output.

- Embedded-C functions with parameter arity-0 can now be marked with
  the /* stable */ /* pure */ pragmas, if (roughly speaking) the
  function is side-effect-free and idempotent.  The translator may
  execute these speculatively and have their results memoized.  This
  lets probes with multiple calls to such functions run faster. 
  
  Context variable ($foo) getter functions (in non-guru mode), and
  numerous tapset functions are now marked as /* stable */ /* pure */.
  Several example scripts have been modified to eschew explicit
  memoization.


= SystemTap runtime changes

- SystemTap now uses symbols from /proc/kallsyms when kernel debuginfo is not
  available.

- When using the procfs .maxsize() parameter, an error will be generated if the
  buffer is too small.


= SystemTap tapset changes
  
  logging.stp     new assert() function
                  many uses of error() in registers.stp 
                  have been replaced in favor of assert()
  dentry.stp      new functions fullpath_struct_path() and
                  fullpath_struct_nameidata() resolve full path
                  names from internal kernel struct pointers,
                  fullpath_struct_file gets the full path to root
  task.stp        new function task_fd_lookup gets the file struct
                  for a task's fd 
  registers.stp   new functions arch_bytes() and uarch_bytes()
                  to obtain address size of kernel and user space
  switchfile.stp  new function switch_file() allows control over
                  rotation of output files

- The [nd_]syscall tapset got autodocumented. Related paragraph got added to PDF
  and HTML tapset reference. Also a new tapset::syscall 3stap man page got added.

- The following tapset variables and functions are deprecated in
  version 2.9:
  - The '__int32_compat' library macro got deprecated in favor of
    new '__compat_long' library macro.
  - The 'uargs' convenience variable of the 'seccomp' syscall probe
    got deprecated in favor of new 'uargs_uaddr' variable.
  - The powerpc variant of nd_syscall.compat_sysctl got deprecated on favor of
    nd_syscall.sysctl32. This aligns the nd_syscall to its respective syscall and
    to ia64/s390/x86_64 variants too.


= SystemTap sample scripts

- New samples:
  switchfile.stp  every second print a log message 
                  and switch log files every 5 seconds.
  slowvfs.stp     prints a line for every kernel vfs_open
                  operation that takes longer than a
                  configurable number of microseconds.


= Examples of tested kernel versions

  2.6.18 (RHEL 5 x86 and x86_64)
  2.6.32 (RHEL 6 x86 and x86_64)
  3.10.0 (RHEL 7 x86_64)
  4.1.6  (Fedora 22 x86_64)
  4.3.0-rc3 (Fedora rawhide x86_64)

= Known issues with this release

- Some kernel crashes continue to be reported when a script probes
  broad kernel function wildcards.  (PR2725)

- 32-on-64 bit userspace unwinding is truncated on older kernels, such
  as 2.6.32 (PR15757)

- The dyninst backend is still very much a prototype, with a number
  of issues, limitations, and general teething woes. For instance:
  + lack of support for multiarch/cross-instrumentation
  + tapset functions are still incomplete relative to what is supported
    when the kernel backend is active
  + exception handling becomes completely broken in programs
    instrumented by the current version of dyninst (PR14702)
  + not all registers are made available on 32-bit x86 (PR15136)

  See dyninst/README and the systemtap/dyninst Bugzilla component
  (http://tinyurl.com/stapdyn-PR-list) if you want all the gory                 
  details about the state of the feature.


= Contributors for this release

  Abegail Jakop, David Smith, Felix Lu, Frank Ch. Eigler,
  Ivan Diorditsa*, Jose Castillo*, Josh Stone, Lukas Berk,
  Mark Wielaard, Martin Cermak, Mikhail Kulemin*, Nicolas Brito*
  Snehal Phule*

  Special thanks to new contributors, marked with '*' above.
  Special thanks to Felix Lu for compiling these notes.


= Bugs fixed for this release <https://sourceware.org/PR#####>

  909   perf counter events, perfmon? kernel API
  2111  document syscalls tapset
  10487 flight recorder control from script
  10977 Getting the address size used in a module
  11263 exposing foo32 syscalls
  12151 support /* stable */ embedded-c pragma
  13664 support dwarf types for stap variables
  15972 core dump with process probes
  16493 Improve bkl.stp to add backtrace
  16968 bad formatting in many help pages for probes
  17831 kprobes_onthefly.exp fails on powerpc
  17893 el6: cannot stat `build/en-US/pdf/*SystemTap_Beginners_Guide*.pdf': No such file or directory
  17920 File descriptor to pathname function
  17921 kernel backtrace missing /proc/kallsyms symbols
  18455 const_folder::visit_binary_expression hurting type inference
  18462 macro deprecation
  18503 procfs .maxsize() overflow should generate error
  18555 ppc64le: can't probe demangled C++ function names
  18562 the listing_mode.exp test case has lots of errors on systems without uprobes
  18563 on ppc64, the mbrwatch.stp example script fails when tested
  18571 Tapset support and test coverage for bpf and seccomp syscalls.
  18577 on rhel7, listing_mode_sanity.exp always gets a failure when doing 'stap -l **'
  18597 long_arg() doesn't correctly handle negative values in 32-on-64 environment
  18598 stap_staticmarkers.stp tapset has no test case
  18630 dwarfless parameters from a uprobe need test coverage
  18634 on rawhide, using timer probes gets a compilation error
  18649 int_arg() misbehaves on x86[_64] for 32-bit uprobe in binary having debuginfo
  18650 powerpc variant of longlong_arg() for uprobes swaps the high and low half of its 64bit retval
  18651 Possible nd_syscall tapset cleanup based on PR18597 fix
  18711 Pass 4 failure on RHEL7 for examples netfilter_summary and netfilter_drop
  18751 support a STAP_PRINTF(....) macro for use in embedded-C functions
  18769 [ppc64BE/--dyninst] unknown operator @__compat_task
  18827 consistency check for syscall and nd_syscall tapset
  18856 nfsd.close probe alias fails on rawhide
  18885 Use /* unmodified-fnargs */ in tapsets
  18889 lost ability to probe kernel module initializers
  18936 script cache will fail if $jiffies is referenced
  18942 any script will include all the globals from tapset/argv.stp
  18944 the ioblock.stp tapset fails to compile on RHEL7
  18971 process_by_pid.exp issues
  18999 error("") stall (causing similar assert() stall)
  19000 several task tapset functions can cause kernel crash
  19021 the tapset function task_dentry_path() should handle more than just files
  19043 __bio_ino(), __rqstp_gid() and __rqstp_uid() can crash the kernel
  19045 kernel_string_quoted() can crash the kernel
  19057 _is_reset() can crash the rhel6 / s390 kernel
  19065 task_fd_lookup() can crash the s390x kernel when invoked with an invalid input
  19069 task_euid() doesn't compile on aarch64
  19070 Call to __ustack_raw(0) causes 'Unknown symbol in module' on rhel6-


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]