Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 14 Jun 2012 12:53:07 -0700
From:      Ryan Goodfellow <rgoodfel@eecs.wsu.edu>
To:        freebsd-current@freebsd.org
Subject:   Re: DTrace broken on 9.0-Release?
Message-ID:  <EF688929-B1ED-487F-94CF-F84806FDDC9E@eecs.wsu.edu>
In-Reply-To: <5BD5B2B1-7165-4705-8750-50EEBB5E26F2@neville-neil.com>
References:  <5D6510D5-A8B3-41D9-B175-15FA680AF7F2@eecs.wsu.edu> <20120614115301.1cd0975b@fabiankeil.de> <5BD5B2B1-7165-4705-8750-50EEBB5E26F2@neville-neil.com>

next in thread | previous in thread | raw e-mail | index | archive | help
Hi everyone, and thank you for the very prompt responses.

I did indeed compile world with CFLAGS+=3D-fno-omit-frame-poiner in my =
make.conf.  I will file the PR shortly.

Thank You
Ryan G

On Jun 14, 2012, at 9:00 AM, George Neville-Neil <gnn@neville-neil.com> =
wrote:

> Top post.
>=20
> File a PR and assign it to me (gnn) please.
>=20
> I'm on vacation until Sunday but I am actively working on DTrace when =
I'm not
> on vacation.
>=20
> Best,
> Geo
> On Jun 14, 2012, at 02:53 , Fabian Keil wrote:
>=20
>> Ryan Goodfellow <rgoodfel@eecs.wsu.edu> wrote:
>>=20
>>> 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.
>>=20
>> 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.
>>=20
>>> 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.
>>=20
>> 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.
>>=20
>> 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.
>>=20
>> Without documentation it's hard to tell.
>>=20
>> Fabian
>=20




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?EF688929-B1ED-487F-94CF-F84806FDDC9E>