On Wed, 18 May 2011 11:42:45 -0400
Jeff Blaine <[email protected]> wrote:
> 0 -> afs_GetDCache
> 0 -> afs_MemGetDSlot
> 0 -> Afs_Lock_ReleaseR
> 0 -> afs_osi_Wakeup
> 0 -> afs_getevent
> 0 <- afs_getevent
> 0 <- afs_osi_Wakeup
> 0 <- Afs_Lock_ReleaseR
> 0 <- afs_MemGetDSlot
> 0 -> afs_osi_Sleep
> 0 -> afs_getevent
> 0 <- afs_getevent
So, waiting on tdc->lock, I think?
Try the same thing with the attached D script; it may say who's holding
it.
--
Andrew Deason
[email protected]
#pragma D option flowindent
fbt:afs::entry /pid == $target/ {}
fbt:afs::return /pid == $target/ {}
fbt:afs:afs_GetDCache:entry /pid == $target/ {
self->traceme = 1;
}
fbt:afs:afs_GetDCache:return /self->traceme/ {
self->traceme = 0;
}
self unsigned *p;
fbt:afs:afs_osi_Sleep:entry /pid == $target && self->traceme/ {
self->p = (unsigned*)(arg0 & 0xfffffffffffffff8);
printf("event %p = %u, %u, %u, %u, %u, %u, %u, %u, %u, %u, %u\n",
(void*)arg0
,self->p[0]
,self->p[1]
,self->p[2]
,self->p[3]
,self->p[4]
,self->p[5]
,self->p[6]
,self->p[7]
,self->p[9]
,self->p[10]
,self->p[11]
);
self->p = 0;
}