Re: DTrace broken on 9.0-Release?

From: Fabian Keil <freebsd-listen_at_fabiankeil.de>
Date: Thu, 14 Jun 2012 11:53:01 +0200
Ryan Goodfellow <rgoodfel_at_eecs.wsu.edu> wrote:

> Today I downloaded and installed FreeBSD 9.0-RELEASE and followed the
> directions from <http://wiki.freebsd.org/DTrace> to get DTrace up and
> running.  The output of DTrace instrumenting a simple program, however,
> is not correct.  The program is as follows:
> 
> // test.cc
> #include<cstdlib>
> 
> int main(void) {
>   for(int i = 0; i < 5; i++) {
>     malloc(47);
>   }
> }
> 
> then compiling and running DTrace as follows:
> 
> g++ test.cc -o test
> 
> dtrace -n 'pid$target::malloc:entry{ }' -c ./test
> 
> 
> The correct output for this example is something to the tune of:
> 
> dtrace: description 'pid$target::malloc:entry' matched 2 probes
> dtrace: pid 95236 has exited
> CPU     ID                    FUNCTION:NAME
>   0 188748                     malloc:entry 
>   0 188748                     malloc:entry 
>   0 188748                     malloc:entry 
>   0 188748                     malloc:entry 
>   0 188748                     malloc:entry 
> 
> (this from a machine with the same code running DTrace)
> 
> The DTrace session should also make an immediate exit on completion. On
> FreeBSD I have the following CPU     ID                    FUNCTION:NAME
>   2      42213                     malloc:entry 
> 
> and the execution does either not exit on it's own or hangs, it requires
> a ctrl-c.

Doesn't work for me either on 10-CURRENT amd64.
Converting it to C doesn't make a difference, it works if
one changes the loop to "for (;;)", though.

> I followed the instructions from the FreeBSD site exactly, compiling and
> installing the custom kernel.  I used both clang++ and g++ for
> compilation with the same result.  The system has even completely hung
> on other attempts.
> 
> Is DTrace not something that should be relied upon in FreeBSD?  I have
> also tried this on the latest 10-CURRENT build with the same result.

In my opinion the problem with DTrace on FreeBSD is that while it's
known to be incomplete, there doesn't seem to be documentation
available about which parts are supposed to work already and which
aren't.

For example the trivial example program at:
http://wiki.freebsd.org/DTrace/userland (which works for me) doesn't
actually use a counting loop, so maybe dtracing your example program
isn't supposed to work yet and never did on FreeBSD.

Without documentation it's hard to tell.

Fabian

Received on Thu Jun 14 2012 - 07:55:17 UTC

This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:40:28 UTC