2008-08-11 06:55:26

by Wang Yi

[permalink] [raw]
Subject: Segmentation fault details?

Hi, all!

I'd like to know some details about segmentation fault.
What I mean is when a program accesses invalid memory area, it will
get a SIGSEGV signal from kernel, and a message "Segmentation fault".

I also find that dmesg can show we something like this:
ProgramName[Pid]: segfault at xxxx eip xxxx esp xxxx error x
It is useful and provides the first-step information for further
debug/analysis.

My question is how dmesg gets the information, and if there are any
"decent" way to get this and maybe more information(An "indecent" way
I came to is grep dmesg)
so that I can perform some basic auto analysis.

Thank you.

Leo


2008-08-11 08:36:15

by Alan Jenkins

[permalink] [raw]
Subject: Re: Segmentation fault details?

Wang Yi wrote:

> Hi, all!
>
> I'd like to know some details about segmentation fault.
> What I mean is when a program accesses invalid memory area, it will
> get a SIGSEGV signal from kernel, and a message "Segmentation fault".
>
> I also find that dmesg can show we something like this:
> ProgramName[Pid]: segfault at xxxx eip xxxx esp xxxx error x
> It is useful and provides the first-step information for further
> debug/analysis.
>
> My question is how dmesg gets the information, and if there are any
> "decent" way to get this and maybe more information(An "indecent" way
> I came to is grep dmesg)
> so that I can perform some basic auto analysis.
>
> Thank you.
>
> Leo

Core dumps.

You might also like to look at Ubuntu's "apport" bug reporting tool. IIRC
the necessary kernel support is now in mainline. I believe it provides the
option to dump core by piping it through an arbitrary program. The aim of
apport is to capture these core dumps, notify the user, and give them the
option to submit it to the Ubuntu developers.

One advantage of this pipe technique is that you don't need to search the
filesystem for core files. (They're dumped in the current directory, but
you may not know what directory the program was in when it crashed).

Alan

2008-08-11 08:40:20

by Alan Jenkins

[permalink] [raw]
Subject: Re: Segmentation fault details?

Wang Yi wrote:

> Hi, all!
>
>  I'd like to know some details about segmentation fault.
>  What I mean is when a program accesses invalid memory area, it will
> get a SIGSEGV signal from kernel, and a message "Segmentation fault".
>
>  I also find that dmesg can show we something like this:
>  ProgramName[Pid]: segfault at xxxx eip xxxx esp xxxx error x
>  It is useful and provides the first-step information for further
> debug/analysis.
>
>  My question is how dmesg gets the information, and if there are any
> "decent" way to get this and maybe more information(An "indecent" way
> I came to is grep dmesg)
> so that I can perform some basic auto analysis.
>
>  Thank you.
>
> Leo

Core dumps.

You might also like to look at Ubuntu's "apport" bug reporting tool.  IIRC
the necessary kernel support is now in mainline.  I believe it provides the
option to dump core by piping it through an arbitrary program.  The aim of
apport is to capture these core dumps, notify the user, and give them the
option to submit it to the Ubuntu developers.

One advantage of this last feature is that you don't need to search the
filesystem for core files.  (They're dumped in the current directory, but
you may not know what directory the program was in when it crashed).

Alan

2008-08-23 20:17:45

by Bodo Eggert

[permalink] [raw]
Subject: Re: Segmentation fault details?

Wang Yi <[email protected]> wrote:

> I'd like to know some details about segmentation fault.
> What I mean is when a program accesses invalid memory area, it will
> get a SIGSEGV signal from kernel, and a message "Segmentation fault".
>
> I also find that dmesg can show we something like this:
> ProgramName[Pid]: segfault at xxxx eip xxxx esp xxxx error x
> It is useful and provides the first-step information for further
> debug/analysis.
>
> My question is how dmesg gets the information, and if there are any
> "decent" way to get this and maybe more information(An "indecent" way
> I came to is grep dmesg)
> so that I can perform some basic auto analysis.

I'm wondering if the default handler might print this information isntead
of the plain segmentation violation.

2008-08-24 03:26:19

by Calvin Walton

[permalink] [raw]
Subject: Re: Segmentation fault details?

On Sat, 2008-08-23 at 22:23 +0200, Bodo Eggert wrote:
> Wang Yi <[email protected]> wrote:
>
> > I'd like to know some details about segmentation fault.
> > What I mean is when a program accesses invalid memory area, it will
> > get a SIGSEGV signal from kernel, and a message "Segmentation fault".
> >
> > I also find that dmesg can show we something like this:
> > ProgramName[Pid]: segfault at xxxx eip xxxx esp xxxx error x
> > It is useful and provides the first-step information for further
> > debug/analysis.
> >
> > My question is how dmesg gets the information, and if there are any
> > "decent" way to get this and maybe more information(An "indecent" way
> > I came to is grep dmesg)
> > so that I can perform some basic auto analysis.
>
> I'm wondering if the default handler might print this information isntead
> of the plain segmentation violation.

If you want to debug a segfaulting user-space program, there's a
somewhat better way to get this information (and a whole lot more info,
too...), and it's been around in various unixes for ages: core dumps
(core files).

Unfortunately (but given the state of modern linux desktop programs,
understandably), most current linux distributions ship with core dumps
turned off. But it isn't too hard to turn them back on if you have a
segfaulting program that you want to debug.

--
Calvin Walton <[email protected]>