Messages in this thread | | | Date | Thu, 3 Jan 2008 12:00:34 +0100 | From | Ingo Molnar <> | Subject | Re: [PATCH] [20/20] x86: Print which shared library/executable faulted in segfault etc. messages |
| |
* Andi Kleen <ak@suse.de> wrote:
> They now look like > > hal-resmgr[13791]: segfault at 3c rip 2b9c8caec182 rsp 7fff1e825d30 > error 4 in libacl.so.1.1.0[2b9c8caea000+6000] > > This makes it easier to pinpoint bugs to specific libraries.
yep, that's really useful.
I think the patch needs one more iteration though:
> And printing the offset into a mapping also always allows to find the > correct fault point in a library even with randomized mappings. Previously > there was no way to actually find the correct code address inside > the randomized mapping. > > Relies on earlier patch to shorten the printk formats. > > They are often now longer than 80 characters, but I think that's worth > it.
why not make it multi-line? that way the %lx hack wouldnt be needed either.
> +void print_vma_addr(char *prefix, unsigned long ip) > +{ > + struct mm_struct *mm = current->mm; > + struct vm_area_struct *vma; > + down_read(&mm->mmap_sem); > + vma = find_vma(mm, ip);
grumble. Proper CodingStyle please.
> + if (buf) { > + char *p, *s; > + p = d_path(f->f_dentry, f->f_vfsmnt, buf, PAGE_SIZE);
this one too.
> + if (show_unhandled_signals && printk_ratelimit()) { > + printk("%s[%d] bad frame in %s frame:%p ip:%lx sp:%lx orax:%lx", > me->comm,me->pid,where,frame,regs->ip,regs->sp,regs->orig_ax);
and this.
Ingo
| |