(2013/11/26 17:57), Masami Hiramatsu wrote: > (2013/11/26 16:20), Jovi Zhangwei wrote: >> I'm not sure this relate with ftrace:function event, from the >> crash log, it seems more like caused by lock events. >> >> Now I only enable lock events (lockdep compiled in my box), below >> two commands both can crash system. > > That is not the lockdep, but the lockstat. :) > >> >> #echo 1 > /sys/kernel/debug/tracing/events/lock/lock_acquire/enable >> or. >> #echo 1 > /sys/kernel/debug/tracing/events/lock/lock_release/enable >> >> According to the log, it seems like a recursion tracing bug. >> >> register lock event -> jump_label_update -> text_poke_bp -> >> on_each_cpu -> local_apic_timer_interrupt -> ktime_get_update_offsets >> -> lock_release > > OK, the problem is in the lock_acquire/release events.
Hm, it seems that the bug is caused because lock->name is NULL in ftrace_raw_event_lock(_acquire). To allocate a buffer on ring_buffer, ftrace_raw_event_##call tries to measure the length of lock->name but it causes a memory access violation in ftrace_get_offsets_##call because lock->name is NULL. :( I could fix this by checking lock->name in include/trace/events/lock.h e.g. TP_STRUCT__entry( __field(unsigned int, flags) __string(name, lock->name ?: "NULL") __field(void *, lockdep_addr) ), TP_fast_assign( __entry->flags = (trylock ? 1 : 0) | (read ? 2 : 0); __assign_str(name, lock->name ?: "NULL"); __entry->lockdep_addr = lock; ), Thank you, -- Masami HIRAMATSU IT Management Research Dept. Linux Technology Center Hitachi, Ltd., Yokohama Research Laboratory E-mail: masami.hiramatsu...@hitachi.com -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/