Hey Michael, I can reproduce that on the latest bits as well. Please file a bug and we'll try to get this fixed. In the meantime, you can work around the problem by using the fbt provider:
fbt::kaio:entry /args[0][0] == 0/ /* AIOREAD */ { printf("*** dtrace: kaio read %d %d 0x%x %d %d %d 0x%x\n", args[0][0], args[0][1], args[0][2], args[0][3], args[0][4], args[0][5], args[0][6]); } *** dtrace: kaio read 0 3 0x8061280 2048 4096 0 0x804777c Note that the offset is a 64-bit that's split between the 4th and 5th parameters. Please file a bug on bugs.opensolaris.org. Adam On Fri, Feb 27, 2009 at 01:24:16PM +0100, Michael Mueller wrote: > I tried on these systems, all with the same result: > > Solaris 10 6/06 SPARC, kernel 64 bit, app 32 bit, large file support > Solaris 10 10/08 i386, kernel 64 bit, app 32 bit, large file support > Solaris 10 10/08 i386, kernel 64 bit, app 64 bit > > Michael > > Adam Leventhal wrote: > > Hey Michael, > > > > What version of Solaris are you running, and what bitness (32 or 64) are > > your process and kernel? > > Thanks. > > > > Adam > > > > On Feb 26, 2009, at 3:34 AM, Michael Mueller wrote: > > > >> Hi, > >> > >> For the kaio sys call (aioread) I found that the sycall provider does > >> not show all arguments correctly, while good old truss does. Is this a > >> bug?: > >> > >> DTrace script: > >> > >> /usr/sbin/dtrace -q -c tst -s /dev/fd/0 <<eof > >> syscall::kaio:entry > >> /arg0 == 0/ /* AIOREAD */ > >> { > >> printf("*** dtrace: kaio read %d %d 0x%x %d %d %d 0x%x %d %d %d\n", > >> arg0, arg1, arg2, arg3, arg4, arg5, arg6, arg7, arg8, arg9); > >> } > >> eof > >> > >> DTrace output: > >> ------- > >> > >> *** dtrace: kaio read 0 3 0x20f70 2048 0 4096 0x1182001a03 178 0 0 > >> ^ strange from arg4 on > >> > >> Truss output: > >> ------------- > >> > >> kaio(AIOREAD, 3, 0x00020F70, 2048, 4096, 0xFFBFF920) = 0 > >> ^ this is the correct > >> address passed by tst.c > >> > >> Test program output: > >> -------------------- > >> > >> aioread(fd 3, bufp 20f70, bufs 2048, offset 4096, whence 0, > >> resultp ffbff920) > >> > >> > >> C Program tst.c: > >> ---------------- > >> > >> #include <stdio.h> > >> #include <sys/types.h> > >> #include <sys/asynch.h> > >> #include <sys/stat.h> > >> #include <fcntl.h> > >> #include <unistd.h> > >> > >> #define OFF 4096 > >> #define L (2048) > >> char buf[L]; > >> > >> int > >> main() > >> { > >> int fd; > >> aio_result_t r, *p; > >> > >> fd = open("/dbspaces/michaelm/RAW1", O_RDONLY); > >> printf("aioread(fd %d, bufp %p, bufs %d, offset %d," > >> " whence %d, resultp %p)\n", fd, buf, L, OFF, SEEK_SET, &r); > >> if (aioread(fd, buf, L, OFF, SEEK_SET, &r)) > >> perror("aioread"); > >> } > >> _______________________________________________ > >> dtrace-discuss mailing list > >> dtrace-discuss@opensolaris.org > > > > > > -- > > Adam Leventhal, Fishworks http://blogs.sun.com/ahl > > > > > > > -- > > === Michael Mueller ================== > Web: http://www.michael-mueller-it.de > ====================================== -- Adam Leventhal, Fishworks http://blogs.sun.com/ahl _______________________________________________ dtrace-discuss mailing list dtrace-discuss@opensolaris.org