Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Jun 2012 11:53:01 +0200
From:      Fabian Keil <freebsd-listen@fabiankeil.de>
To:        Ryan Goodfellow <rgoodfel@eecs.wsu.edu>
Cc:        freebsd-current@freebsd.org
Subject:   Re: DTrace broken on 9.0-Release?
Message-ID:  <20120614115301.1cd0975b@fabiankeil.de>
In-Reply-To: <5D6510D5-A8B3-41D9-B175-15FA680AF7F2@eecs.wsu.edu>
References:  <5D6510D5-A8B3-41D9-B175-15FA680AF7F2@eecs.wsu.edu>

next in thread | previous in thread | raw e-mail | index | archive | help
--Sig_/E6obdHOAq.1VH2PflLSPJDX
Content-Type: text/plain; charset=US-ASCII
Content-Transfer-Encoding: quoted-printable

Ryan Goodfellow <rgoodfel@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:
>=20
> // test.cc
> #include<cstdlib>
>=20
> int main(void) {
>   for(int i =3D 0; i < 5; i++) {
>     malloc(47);
>   }
> }
>=20
> then compiling and running DTrace as follows:
>=20
> g++ test.cc -o test
>=20
> dtrace -n 'pid$target::malloc:entry{ }' -c ./test
>=20
>=20
> The correct output for this example is something to the tune of:
>=20
> dtrace: description 'pid$target::malloc:entry' matched 2 probes
> dtrace: pid 95236 has exited
> CPU     ID                    FUNCTION:NAME
>   0 188748                     malloc:entry=20
>   0 188748                     malloc:entry=20
>   0 188748                     malloc:entry=20
>   0 188748                     malloc:entry=20
>   0 188748                     malloc:entry=20
>=20
> (this from a machine with the same code running DTrace)
>=20
> 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=20
>=20
> 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.
>=20
> 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

--Sig_/E6obdHOAq.1VH2PflLSPJDX
Content-Type: application/pgp-signature; name=signature.asc
Content-Disposition: attachment; filename=signature.asc

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.19 (FreeBSD)

iEYEARECAAYFAk/ZtIUACgkQBYqIVf93VJ0vHQCfS/5oHrwEDEr7vhi7EFjXUm9t
CUIAoI/sPbw1WwPbfjK/axaieisKKcEu
=Ouc8
-----END PGP SIGNATURE-----

--Sig_/E6obdHOAq.1VH2PflLSPJDX--



Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20120614115301.1cd0975b>