lkml.org 
[lkml]   [2003]   [Aug]   [18]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    From
    SubjectRE: Dumb question: Why are exceptions such as SIGSEGV not logged
    Date


    > On Mon, Aug 18, 2003 at 03:39:15PM -0700, David Schwartz wrote:

    > > > And why not just catch the ones sent from the kernel? That's
    > > > the one that
    > > > is killing the program because it crashed, and that's the one the
    > > > origional
    > > > poster wants logged...

    > > Because sometimes a program wants to terminate. And it is
    > > perfectly legal
    > > for a programmer who needs to terminate his program as quickly
    > > as possible
    > > to do this:

    > > char *j=NULL;
    > > signal(SIGSEGV, SIG_DFL);
    > > *j++;

    > > This is a perfectly sensible thing for a program to do with
    > > well-defined
    > > semantics. If a program wants to create a child every minute
    > > like this and
    > > kill it, that's perfectly fine. We should be able to do that in
    > > the default
    > > configuration without a sysadmin complaining that we're DoSing
    > > his syslogs.

    > Are you saying that a signal requested from userspace uses the same code
    > path as the signal sent when a process has overstepped its bounds?

    It depends what you mean by "requested".

    > Surely some flag can be set so that we know the kernel is killing
    > it because
    > it did something illegal...

    It depends what you mean by "illegal".

    Dereferencing a NULL pointer deliberately to induce the kernel to kill your
    process is indistinguishable from dereferencing a NULL pointer accidentally
    and forcing the kernel to kill your process.

    These "illegal" operations have well-defined semantics that programmers can
    use and rely on. Logging every such operation changes their semantics and
    breaks programs that currently work -- breaks in the sense that they will
    now DoS logs and result in admin complaints.

    The kernel cannot determine whether a SEGV or ILL was the result of a
    deliberate attempt on the part of the programmer to create such a signal or
    whether it's due to a programming error. Even an uncaught exception can be
    used as a good way to terminate a process immediately (is there another
    portable way to do that?).

    DS


    -
    To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
    the body of a message to majordomo@vger.kernel.org
    More majordomo info at http://vger.kernel.org/majordomo-info.html
    Please read the FAQ at http://www.tux.org/lkml/

    \
     
     \ /
      Last update: 2005-03-22 13:47    [W:0.024 / U:32.780 seconds]
    ©2003-2016 Jasper Spaans. hosted at Digital OceanAdvertise on this site