crash mini cheat sheet
Quick Overviewhttp://people.redhat.com/anderson/crash_whitepaper/
Verschiedenes...
- Welcher Spinlock wurde angefragt?
bt -f -a [...] #5 [ffff880396db3e00] xen_spin_wait at ffffffff80262262 ffff880396db3e08: ffff88063cf39268 00ff8805e631fd00 ffff880396db3e18: ffff880396db3ebc 01ffffff00000006 ffff880396db3e28: ffff88000109a310 0000000000000001 ffff880396db3e38: 0000000000000000 ffff8805e631fdc8 ffff880396db3e48: ffffffffa001c1a0 ffffffff00009e7e ffff880396db3e58: 0000000000000000 ffff8802eb7ae6c0 ffff880396db3e68: ffff88063cf39218 ffffffffa001c1a0 ffff880396db3e78: 0000000000005020 0000000000000000 ffff880396db3e88: ffff880396db3ebc 0000000000000000 ffff880396db3e98: 0000000000001000 ffffffff80358759 #6 [ffff880396db3ea0] _spin_lock_irqsave at ffffffff80358759 ffff880396db3ea8: ffff880780deee60 ffff8807fcbed701 ffff880396db3eb8: 9e7e9e77fcbecf40 ffff8807fe2e2800 ffff880396db3ec8: ffff8807ced88850 ffff8807fe3a9220 ffff880396db3ed8: 00007f62b8b0f000 ffffffff801ab263 #7 [ffff880396db3ee0] cfq_exit_single_io_context at ffffffff801ab263 [...]
Was für Argumente braucht xen_spin_wait()?crash> whatis xen_spin_wait bool xen_spin_wait(raw_spinlock_t *, unsigned int *, unsigned int); crash>
OK, und was für ein Spinlock wurde angefordert? Schauen wir uns den Struct am Anfang des Stacks der aufrufenden Funktion an:crash> struct raw_spinlock_t ffff880780deee60 struct raw_spinlock_t { slock = 2762771416, { cur = 35800, seq = 42156, owner = 34822 } } crash>
OK, also haben wir den angefragten Spinlock (2762771416) und auch den Owner desselben (34822). Was ist nun der Owner?crash> whatis raw_spinlock_t typedef union { unsigned int slock; struct { u16 cur; u16 seq; u16 owner; }; } raw_spinlock_t; SIZE: 8 crash>
Nunja, ein u16. Das hilft leider jetzt nicht weiter.