I tried to implement (and eventually succeeded) structs in an iosnoop.d script. #! /usr/sbin/dtrace -s #pragma D option quiet struct ioinfo { uint64_t start; string command; int mypid; }; struct ioinfo info[dev_t,uint64_t]; BEGIN { printf("%16s %5s %40s %10s %2s %7s\n","COMMAND","PID","FILE","DEVICE","RW","MS"); } io:::start { start[args[0]->b_edev,args[0]->b_blkno] = timestamp; info[args[0]->b_edev,args[0]->b_blkno].start = timestamp; info[args[0]->b_edev,args[0]->b_blkno].command = execname; info[args[0]->b_edev,args[0]->b_blkno].mypid = pid; } io:::done / info[args[0]->b_edev,args[0]->b_blkno].start / { ela = timestamp - info[args[0]->b_edev,args[0]->b_blkno].start; printf("%16s %5i %40s %10s %2s %3d.%03d\n", info[args[0]->b_edev,args[0]->b_blkno].command, info[args[0]->b_edev,args[0]->b_blkno].mypid, args[2]->fi_pathname, args[1]->dev_statname, args[0]->b_flags&B_READ? "R":"W", ela/1000000, (ela/1000)%1000 ); info[args[0]->b_edev,args[0]->b_blkno].start = 0; info[args[0]->b_edev,args[0]->b_blkno].command = 0; info[args[0]->b_edev,args[0]->b_blkno].mypid = 0; } But while I was testing my this beta versions I got the following messages: (during runtime, not during compilation, so the command was actually running) dtrace: error on enabled probe ID 11 (ID 521: io:genunix:biodone:done): invalid address (0x0) in action #10 at DIF offset 124 dtrace: error on enabled probe ID 11 (ID 521: io:genunix:biodone:done): invalid address (0x0) in action #10 at DIF offset 124 Is there any indication in these messages as to where I should look in my d-script for solving this problem. I think action #10 at DIF offset 124 is meant as a pointer but how do I traces that back to lines in my d-script? By the way: after long searching I found what my typo was. Greetings, Peter This message posted from opensolaris.org