[dtrace-discuss] Where is my typo

Peter van Gemert peter.van.gemert at accenture.com
Wed Jan 17 07:03:12 PST 2007


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


More information about the dtrace-discuss mailing list