From owner-freebsd-hackers@FreeBSD.ORG Wed Jul 24 18:13:21 2013 Return-Path: Delivered-To: hackers@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 50E22A98 for ; Wed, 24 Jul 2013 18:13:21 +0000 (UTC) (envelope-from yuri@rawbw.com) Received: from www.rawbandwidth.com (www.rawbandwidth.com [198.144.193.1]) by mx1.freebsd.org (Postfix) with ESMTP id 3E4CE232D for ; Wed, 24 Jul 2013 18:13:20 +0000 (UTC) Received: from eagle.yuri.org (stunnel@localhost [127.0.0.1]) (authenticated bits=0) by www.rawbandwidth.com (8.14.4/8.14.4) with ESMTP id r6OIDK7b043848 for ; Wed, 24 Jul 2013 11:13:20 -0700 (PDT) (envelope-from yuri@rawbw.com) Message-ID: <51F01940.2020402@rawbw.com> Date: Wed, 24 Jul 2013 11:13:20 -0700 From: Yuri User-Agent: Mozilla/5.0 (X11; FreeBSD amd64; rv:17.0) Gecko/20130628 Thunderbird/17.0.7 MIME-Version: 1.0 To: FreeBSD Hackers Subject: DTrace copyin with struct doesn't work? Content-Type: text/plain; charset=ISO-8859-1; format=flowed Content-Transfer-Encoding: 7bit X-BeenThere: freebsd-hackers@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: Technical Discussions relating to FreeBSD List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Wed, 24 Jul 2013 18:13:21 -0000 This simple .d script fails: ---script begin--- #!/usr/sbin/dtrace -s struct my_args { int ii; }; fbt::sys_select:entry { printf("sys_select %i", ((struct my_args*)copyin(arg1, sizeof (struct my_args)))->ii); } ---script end--- dtrace: error on enabled probe ID 1 (ID 33598: fbt:kernel:sys_select:entry): invalid address (0xffffff82ff0799d8) in action #1 at DIF offset 40 dtrace: error on enabled probe ID 1 (ID 33598: fbt:kernel:sys_select:entry): invalid address (0xffffff82fefb19d8) in action #1 at DIF offset 40 Function sys_select is defined in kern/sys_generic.c: int sys_select(struct thread *td, struct select_args *uap) arg1 in DTrace script should correspond to uap argument of sys_select, and dereferencing should always produce an int. Yuri