>
> 1 2 :END 5 9163
> ===================================================
>
>
> 1 2 :END 6 1686
> ===================================================
>
>
>
> See the problem? In this case speculations 5 and 6 both have non-zero
> ts array entries (or they would not have printed) but there is
> nothing in the speculation buffer (otherwise there would have been the
> first set of traces printed). Any ideas why this is happening?
>
Consider the following 2 probes firing on 2 different cpu's at
approximately the same time.
> } \
> END \
> /ts[this->spec]/ \
> { \
> commit(this->spec); \
> this->spec++; \
> }
>
>
>
> syscall::pollsys:return
> /self->spec/
> {
> ts[self->spec] = 0;
> discard(self->spec);
> self->spec = 0;
> }
>
>
The interleaved execution of the predicate and the clause could lead to
the kind of output you are observing.
The first probe would find ts[this->spec] to be non-zero and before it
can execute 'commit(this->spec)' the second
probe would fire and execute 'discard(self->spec)' . The contents of the
speculative buffer are discarded and the 'commit(this->spec)'
would become a nop.
Such a sequence could explain the missing data for speculation 5 and 6.
Pramod
_______________________________________________
dtrace-discuss mailing list
[email protected]