No subject


Mon Jul 23 17:50:42 EST 2007


threads currently running. With "P 0" you get the dump of
threads running on the kernel.

Example of the output for one thread:
id 0x900000000, ptr 0xc000000002b27f90, attachment 0xc0000000024c6e00, state BLOCKED
            thread data 0xc000000002b27d80, groups 0x1c
            generation -1, targetID 0xffffffffffffffff
            call chain:  c000000002381298 c00000000237c9f4 c000000002386af8
                         c000000002384df4 c0000000022d82e8 c000000002316038
                         c0000000020fb214 c0000000023159ac c0000000023806bc
                         c00000000237b958

So if you suspect that you have a deadlock, you can go through the
BLOCKED threads trying to identify one that is trying to acquire a
lock. The threads with "generation -1" information are usually
"deactivated", and the fact that they are blocked doesn't imply
on something wrong. Start your investigation with BLOCKED (or
BARRED) threads with generation != -1).

You can inspect the call chain using the tool dezig. For example,
iff the thread is part of the kernel, you can invoke
dezig boot_image.dbg
and then you cut and paste the call chain, so you can see the
invocations, file and line numbers. (If you are experiencing the
problem with noDeb, you won't have this info). For the example
above dezig gives us:

[kix:.../powerpc/fullDeb/os] dezig boot_image.dbg
Using binary image: boot_image.dbg
call chain:  c000000002381298 c00000000237c9f4 c000000002386af8
                         c000000002384df4 c0000000022d82e8 c000000002316038
                         c0000000020fb214 c0000000023159ac c0000000023806bc
                         c00000000237b958
    .DispatcherDefault_Suspend                     DispatcherDefaultAsm.S  279
    .DispatcherDefault::disabledBlock()               DispatcherDefault.C  798
    .DispatcherDefault::block()                       DispatcherDefault.H  284
    .Scheduler::Block()                                       Scheduler.C  204
    .BaseSemaphore<BLock>::P(BLock*, long)                          Sem.H  128
    down_interruptible                                              Sem.H  284
    scsi_error_handler                                       scsi_error.c 1665
    ThreadStarter(unsigned long)                              Scheduler.C   66
    .DispatcherDefault::ThreadBase(DispatcherDefa     DispatcherDefault.C  415
    DispatcherDefault_ThreadBase                      DispatcherDefault.C  445

Hopefully this info is useful to someone :)

Dilma




More information about the K42-discussion mailing list