On Fri, 24 Jan 2014, Sebastian Andrzej Siewior wrote: > Mostly unwind is done with irqs enabled however SLUB may call it with > irqs disabled while creating a new SLUB cache. > > I had system freeze while loading a module which called > kmem_cache_create() on init. That means SLUB's __slab_alloc() disabled > interrupts and then > > ->new_slab_objects() > ->new_slab() > ->setup_object() > ->setup_object_debug() > ->init_tracking() > ->set_track() > ->save_stack_trace() > ->save_stack_trace_tsk() > ->walk_stackframe() > ->unwind_frame() > ->unwind_find_idx() > =>spin_lock_irqsave(&unwind_lock); > > I would prefer not to turn this into a raw lock so for now it will just > fail if it is called with irqs disabled which might return a few "empty" > traces… If we really end up with unwinding then the few cycles to follow the stack are not that important anymore. We really want that output. Thanks, tglx