Re: Crash Report
Re: Crash Report
- Subject: Re: Crash Report
- From: Jim Lloyd <email@hidden>
- Date: Fri, 2 Jun 2006 10:03:13 -0700
On Jun 1, 2006, at 12:03 PM, Dominic Blais wrote:
On Jun 1, 2006, at 11:48 AM, David A Rowland wrote:
At 4:39 PM +0100 6/1/06, Quinn wrote:
At 16:10 +0200 2/6/06, Dalton Hamilton wrote:
Does the below snippet of the Crash Report mean that the app
crashed on line 1586 of the method [MyAppIVC
mountIndex:DisplayMessages:] ??
No, it means that you crashed at offset 1586 into that routine.
Please pardon me if the following comments are too elementary.
Crashing is almost always the result of dereferencing (reading or
writing through) an invalid pointer.The possiblities are:
pointer is 0 (legitimate at the end of a list but fatal to
dereference)
pointer is uninitialized and thus random (a good candidate for
intermittent failures)
pointer has been stepped on by a bad write through another pointer
(also can be intermittent)
an array bound has been exceeded (data is damaged, and if the data
is a pointer then there may be a failure down the line. Or the
reference is far enough from the array as to be beyond legal memory.)
A million other things could be wrong, but on modern hardsware
there isn't much else that will produce a crash.
David
While accessing invalid memory regions (segfault, signal 11) is the
most common source of crashing errors in C/C++, there are many
other normally unhandled traps that can cause the program to crash
(SIGFPE is a notably common one in numerical software). From /usr/
include/sys/signal.h:
#define SIGHUP 1 /* hangup */
#define SIGINT 2 /* interrupt */
#define SIGQUIT 3 /* quit */
#define SIGILL 4 /* illegal instruction (not reset when caught) */
#define SIGTRAP 5 /* trace trap (not reset when caught) */
#define SIGABRT 6 /* abort() */
#if defined(_POSIX_C_SOURCE)
#define SIGPOLL 7 /* pollable event ([XSR] generated, not
supported) */
#else /* !_POSIX_C_SOURCE */
#define SIGIOT SIGABRT /* compatibility */
#define SIGEMT 7 /* EMT instruction */
#endif /* !_POSIX_C_SOURCE */
#define SIGFPE 8 /* floating point exception */
#define SIGKILL 9 /* kill (cannot be caught or ignored) */
#define SIGBUS 10 /* bus error */
#define SIGSEGV 11 /* segmentation violation */
#define SIGSYS 12 /* bad argument to system call */
#define SIGPIPE 13 /* write on a pipe with no one to read it */
#define SIGALRM 14 /* alarm clock */
#define SIGTERM 15 /* software termination signal from kill */
#define SIGURG 16 /* urgent condition on IO channel */
#define SIGSTOP 17 /* sendable stop signal not from tty */
#define SIGTSTP 18 /* stop signal from tty */
#define SIGCONT 19 /* continue a stopped process */
#define SIGCHLD 20 /* to parent on child stop or exit */
#define SIGTTIN 21 /* to readers pgrp upon background tty read */
#define SIGTTOU 22 /* like TTIN for output if (tp->t_local<OSTOP) */
#if !defined(_POSIX_C_SOURCE)
#define SIGIO 23 /* input/output possible signal */
#endif
#define SIGXCPU 24 /* exceeded CPU time limit */
#define SIGXFSZ 25 /* exceeded file size limit */
Yes, but many of these signals do not terminate the process. A better
list to look at is from 'man signal', which shows the default action:
No Name Default Action Description
1 SIGHUP terminate process terminal line hangup
2 SIGINT terminate process interrupt program
3 SIGQUIT create core image quit program
4 SIGILL create core image illegal instruction
5 SIGTRAP create core image trace trap
6 SIGABRT create core image abort program (formerly
SIGIOT)
7 SIGEMT create core image emulate instruction
executed
8 SIGFPE create core image floating-point exception
9 SIGKILL terminate process kill program
10 SIGBUS create core image bus error
11 SIGSEGV create core image segmentation violation
12 SIGSYS create core image non-existent system
call invoked
13 SIGPIPE terminate process write on a pipe with no
reader
14 SIGALRM terminate process real-time timer expired
15 SIGTERM terminate process software termination
signal
16 SIGURG discard signal urgent condition
present on
socket
17 SIGSTOP stop process stop (cannot be caught or
ignored)
18 SIGTSTP stop process stop signal generated from
keyboard
19 SIGCONT discard signal continue after stop
20 SIGCHLD discard signal child status has changed
21 SIGTTIN stop process background read
attempted from
control terminal
22 SIGTTOU stop process background write
attempted to
control terminal
23 SIGIO discard signal I/O is possible on a
descriptor
(see fcntl(2))
24 SIGXCPU terminate process cpu time limit exceeded
(see
setrlimit(2))
25 SIGXFSZ terminate process file size limit
exceeded (see
setrlimit(2))
26 SIGVTALRM terminate process virtual time alarm (see
setitimer(2))
27 SIGPROF terminate process profiling timer alarm (see
setitimer(2))
28 SIGWINCH discard signal Window size change
29 SIGINFO discard signal status request from
keyboard
30 SIGUSR1 terminate process User defined signal 1
31 SIGUSR2 terminate process User defined signal 2
32 SIGTHR terminate process thread interrupt
Note also that several of the signals that do terminate the process
are very unlikely to be the cause of typical "bug crashes":
SIGUSR1/2, SIGXCPU, SIGXFSZ, etc.
_______________________________________________
Do not post admin requests to the list. They will be ignored.
Macnetworkprog mailing list (email@hidden)
Help/Unsubscribe/Update your Subscription:
This email sent to email@hidden