Skip site navigation (1)Skip section navigation (2)
Date:      Thu, 28 Jul 2011 12:10:12 +0800
From:      ambrosehuang ambrose <ambrosehua@gmail.com>
To:        Fabian Keil <freebsd-listen@fabiankeil.de>
Cc:        Yuri <yuri@rawbw.com>, freebsd-hackers@freebsd.org
Subject:   Re: DTrace script asserts and kills the other process
Message-ID:  <CAMwoQQ6gNDDTi020ZDkrFQK6HbVBKeMATeZUqoGvaPO1q8o7Ug@mail.gmail.com>
In-Reply-To: <20110723135655.4479d190@fabiankeil.de>
References:  <20110722202811.17302hol2s3ar084@newwebmail.rawbw.com> <20110723135655.4479d190@fabiankeil.de>

next in thread | previous in thread | raw e-mail | index | archive | help
> Yuri <yuri@rawbw.com> wrote:
>
> > I am trying to run this dtrace script:
> >
> > #!/usr/sbin/dtrace -s
> > pid123:libc::entry
> > {
> > self->timestmp[probefunc] = timestmp;
> > }
> > pid123:libc::return
> > /self->timestmp[probefunc] != 0/
> > {
> > @function_duration[probefunc] = sum(timestmp -
> > self->timestmp[probefunc]); timestmp[probefunc] = 0;
> > }
> >
> > which I got from here:
> > http://www.princeton.edu/~unix/Solaris/troubleshoot/dtrace.html
> > replacing 123 with the pid of some running process.
> >
> > Result: dtrace utility asserts:
> > Assertion failed: (dpr != NULL), file
> >
> /usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c,
> > line 751.
> > Abort trap: 6
> >
> > Also the target process is killed too:
> > Killed: 9
> >
> > 8.2-STABLE amd64
>
> This is a known issue. You may be able to work around it by
> letting dtrace start the traced process.
>
> There's already a PR about it:
> http://www.freebsd.org/cgi/query-pr.cgi?pr=bin/158431
> but the limitation isn't mentioned in the wiki:
> http://wiki.freebsd.org/DTrace/userland
>
> It's not clear to me if this has worked in the past or if it
> works for other architectures (the reporter and I are both using
> amd64, too).
>
> Fabian
>
I came across the same problem in 8.2-stable , it seemed the problem had
been there since 8.2-release with userland dtrace integrated. I followed the
PR185431 and found when  dtrace  started, it indeed attached to the traced
process( dpr != NULL), but the traced process died soon, and
according to the PR, this is "error in error" since the dtrace  came accross
error in dfatal
....................................................................................................................................................
#3 0x0000000808d8af2d in dt_proc_lookup (dtp=0x80b841000, P=0x80d7ffb40,
remove=0)
at
/usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:751
#4 0x0000000808d8af92 in dt_proc_destroy (dtp=0x80b841000, P=0x80d7ffb40)
at
/usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:763
#5 0x0000000808d8bc6e in dt_proc_hash_destroy (dtp=0x80b841000)
at
/usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_proc.c:1162
#6 0x0000000808daa4b5 in dtrace_close (dtp=0x80b841000)
at
/usr/src/cddl/lib/libdtrace/../../../cddl/contrib/opensolaris/lib/libdtrace/common/dt_open.c:1554
#7 0x0000000000402775 in dfatal (fmt=0x408572 "no probes %s\n")
at
/usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:236
#8 0x0000000000406b2c in main (argc=3, argv=0x7ffffffed9c0)
at
/usr/src/cddl/usr.sbin/dtrace/../../../cddl/contrib/opensolaris/cmd/dtrace/dtrace.c:1825
.....................................................................................................................................................



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