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 */
|