[DTrace-devel] [oracle/dtrace-utils] c3f94d: work: run under valgrind

Kris Van Hees noreply at github.com
Mon Oct 11 07:13:38 PDT 2021


  Branch: refs/heads/dev
  Home:   https://github.com/oracle/dtrace-utils
  Commit: c3f94d807a6653799e8859c9ebd8163ff0fbf77d
      https://github.com/oracle/dtrace-utils/commit/c3f94d807a6653799e8859c9ebd8163ff0fbf77d
  Author: Nick Alcock <nick.alcock at oracle.com>
  Date:   2021-10-08 (Fri, 08 Oct 2021)

  Changed paths:
    M dtrace.spec
    M libdtrace/dt_work.c

  Log Message:
  -----------
  work: run under valgrind

Running BEGIN/END probes under valgrind failed because these probes work
by dropping uprobes on DTrace itself, and uprobes fail if the uprobed
process is being valgrinded: the breakpoint instruction inserted by
uprobes is translated into VEX IR and then emulated by valgrind, and the
emulation is located at a different address than the address originally
used by the kernel: so the kernel has no idea it was a uprobe, and
passes the breakpoint through to dtrace itself, killing it with a
SIGTRAP.

The solution is to use the bizarrely-named VALGRIND_NON_SIMD_CALL0
request to call the probes when valgrind is in use.  This asks valgrind
to invoke a function on the real CPU rather than the emulated one, which
invokes it from the right address, so the kernel spots the uprobe for
what it is. VALGRIND_NON_SIMD_CALL* has harsh and barely-documented
requirements on what it can be used to call, but our probe functions are
entirely empty, so we can be pretty sure it'll always work for us.

Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>
Orabug: 32760574


  Commit: 5f57f40aa61d2d4a6892ac757bc51b013de0c1eb
      https://github.com/oracle/dtrace-utils/commit/5f57f40aa61d2d4a6892ac757bc51b013de0c1eb
  Author: Nick Alcock <nick.alcock at oracle.com>
  Date:   2021-10-08 (Fri, 08 Oct 2021)

  Changed paths:
    M libdtrace/dt_kernel_module.c

  Log Message:
  -----------
  modules: support .gz and .xz-compressed modules

The module path ends in .ko.*:, where * depends on the compression
algorithm: so systems with compressed modules would skip all modules on
the incorrect grounds that none existed.

Add a few compression algorithms to make this subsystem work again.
(It is mostly invisible for in-tree modules.)

Signed-off-by: Nick Alcock <nick.alcock at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>


  Commit: c80033dcc000cd1a5bdc6056209e5e7ce90c1966
      https://github.com/oracle/dtrace-utils/commit/c80033dcc000cd1a5bdc6056209e5e7ce90c1966
  Author: Eugene Loh <eugene.loh at oracle.com>
  Date:   2021-10-08 (Fri, 08 Oct 2021)

  Changed paths:
    M runtest.sh
    M test/unittest/consumer/addr2str-null.c
    M test/unittest/consumer/tst.merge_ranges_bug25767469.c
    M test/unittest/consumer/tst.symbols.c

  Log Message:
  -----------
  Fix compilation problems in C tests

The tests that are C source files are not compiling.  Fix those
errors, including:

- augmenting test_incflags in runtest.sh
  (and improving readability while we are at it)

- remove xfail for some tests

- update names of dtrace_syminfo_t members

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>


  Commit: 9f27b8c7bb406ff3337072bfae69758e4eddc0f8
      https://github.com/oracle/dtrace-utils/commit/9f27b8c7bb406ff3337072bfae69758e4eddc0f8
  Author: Kris Van Hees <kris.van.hees at oracle.com>
  Date:   2021-10-08 (Fri, 08 Oct 2021)

  Changed paths:
    M test/utils/.gitignore

  Log Message:
  -----------
  Clean up order of entries in test/utils/.gitignore

Signed-off-by: Eugene Loh <eugene.loh at oracle.com>
Reviewed-by: Kris Van Hees <kris.van.hees at oracle.com>


Compare: https://github.com/oracle/dtrace-utils/compare/f1d8646be43f...9f27b8c7bb40



More information about the DTrace-devel mailing list