Atsushi Nemoto wrote: > On Fri, 18 Aug 2006 10:50:01 +0200, Franck Bui-Huu <vagabon.xyz@xxxxxxxxx> wrote: >> Does something like this seem correct ? If an exception occured on a first >> instruction of a function, show_backtrace() will call get_frame_info() >> with info->func_size != 0 but very small. In this case it returns 1. > > Why get_frame_info() will be called with info->func_size != 0 ? The > offset of a _first_ instruction is 0, so "ofs" of this line in > unwind_stack() will be 0. > > info.func_size = ofs; /* analyze from start to ofs */ > because in unwind_stack(), before the line you showed, we do: if (!kallsyms_lookup(pc, &size, &ofs, &modname, namebuf)) return 0; if (ofs == 0) return 0; Maybe we should do instead: if (!kallsyms_lookup(pc, &size, &ofs, &modname, namebuf)) return 0; /* return ra if an exception occured at the first instruction */ if (ofs == 0) return ra; And in any cases, if we pass info->func_size = 0 to get_frame_info(), then it will consider the function size as unknown. Franck