From owner-freebsd-hackers@FreeBSD.ORG Thu Aug 4 16:41:40 2011 Return-Path: Delivered-To: freebsd-hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id 3EDD8106564A; Thu, 4 Aug 2011 16:41:40 +0000 (UTC) (envelope-from ambrosehua@gmail.com) Received: from mail-qw0-f54.google.com (mail-qw0-f54.google.com [209.85.216.54]) by mx1.freebsd.org (Postfix) with ESMTP id D8E748FC0A; Thu, 4 Aug 2011 16:41:39 +0000 (UTC) Received: by qwc9 with SMTP id 9so1515878qwc.13 for ; Thu, 04 Aug 2011 09:41:39 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=mime-version:in-reply-to:references:date:message-id:subject:from:to :cc:content-type; bh=LpTviYBwZyXA4iHfdGIytd10mLwTvhbiwHj+k+rPG/g=; b=uWsrMbUsSYrHbGC3uJPesVE9CKTw1+ZsFftAiJouQDGRcA4yilaztufcnsC7t/8cJX 5jqbeHqz984WrAtD1Q3SF2/61IBOCKIb69bttyqksNWCt/Eh48hXFazshbonb5AdfPTH yiL2XIwjby8NFI+MeCe6RRurWZOQi3XSCo/WU= MIME-Version: 1.0 Received: by 10.224.173.207 with SMTP id q15mr702996qaz.278.1312476098390; Thu, 04 Aug 2011 09:41:38 -0700 (PDT) Received: by 10.229.185.75 with HTTP; Thu, 4 Aug 2011 09:41:38 -0700 (PDT) In-Reply-To: References: <20110722202811.17302hol2s3ar084@newwebmail.rawbw.com> <20110723135655.4479d190@fabiankeil.de> <4E392458.1060606@FreeBSD.org> Date: Fri, 5 Aug 2011 00:41:38 +0800 Message-ID: From: ambrosehuang ambrose To: Andriy Gapon Content-Type: text/plain; charset=ISO-8859-1 X-Content-Filtered-By: Mailman/MimeDel 2.1.5 Cc: Yuri , Fabian Keil , freebsd-hackers@freebsd.org Subject: Re: DTrace script asserts and kills the other process X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 04 Aug 2011 16:41:40 -0000 2011/8/4 ambrosehuang ambrose > > > 2011/8/3 Andriy Gapon > >> on 28/07/2011 07:10 ambrosehuang ambrose said the following: >> >> Yuri 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 >> >> FYI and benefit: I've committed what should be a fix for this issue, >> r224632. >> >> >> 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 >> > >> ..................................................................................................................................................... >> > _______________________________________________ >> > freebsd-hackers@freebsd.org mailing list >> > http://lists.freebsd.org/mailman/listinfo/freebsd-hackers >> > To unsubscribe, send any mail to " >> freebsd-hackers-unsubscribe@freebsd.org" >> > >> >> I just saw your commit, I will verify it on 8-stable soon, thank you! >> > -- >> Andriy Gapon >> > I test your commit on 8-stable, here is my commit: commit 84f49c7ffa130ec4bcd7fb0a619b36ab615dfeb4 Author: mm Date: Thu Aug 4 10:37:12 2011 +0000 this is the my result: [root@lateaxfreebsd dtrace]# dtrace -n 'pid$target:libc::entry' -p 39699 libc.so.7: invalid probe specifier pid$target:libc::entry: probe description pid39699:libc::entry User defined signal 1: 30 [1]+ Hangup: 1 ../test I also test the example from userland/dtrace in wiki, it failed with same result, it seems the pid provider has something wrong with libc when probing; [root@lateaxfreebsd dtrace]# dtrace -n 'pid$target:::entry' -p 40346 test: description 'pid$target:::entry' matched 2 probes ^C success [root@lateaxfreebsd dtrace]# dtrace -ln 'pid$target:::entry' -p 40346 ID PROVIDER MODULE FUNCTION NAME 33913 pid40346 test _start entry 33914 pid40346 test main entry User defined signal 1: 30 [1]+ Hangup: 1 ../test Anyway, there is no core dump.