Bus Error Unix
Contents |
here for a quick overview of the site Help Center Detailed answers to any questions you might have Meta Discuss the workings and policies of this site About Us Learn more about Stack Overflow the company Business Learn more about hiring unix signal 10 developers or posting ads with us Stack Overflow Questions Jobs Documentation Tags Users Badges Ask Question
Bus Error In C
x Dismiss Join the Stack Overflow Community Stack Overflow is a community of 4.7 million programmers, just like you, helping each other. Join them; linux bus error it only takes a minute: Sign up What is a bus error? up vote 155 down vote favorite 49 What does the "bus error" message mean, and how does it differ from a segfault? c unix segmentation-fault bus-error share|improve
Solaris Bus Error
this question edited Oct 18 '15 at 10:44 Cool Guy 15.8k51952 asked Oct 17 '08 at 14:48 raldi 7,239216178 add a comment| 15 Answers 15 active oldest votes up vote 150 down vote accepted Bus errors are rare nowadays on x86 and occur when your processor cannot even attempt the memory access requested, typically: using a processor instruction with an address that does not satisfy its alignment requirements. Segmentation faults occur when accessing memory which does not belong to your oracle bus error process, they are very common and are typically the result of: using a pointer to something that was deallocated. using an uninitialized hence bogus pointer. using a null pointer. overflowing a buffer. PS: To be more precise this is not manipulating the pointer itself that will cause issues, it's accessing the memory it points to (dereferencing). share|improve this answer edited Oct 17 '08 at 15:18 answered Oct 17 '08 at 15:12 bltxd 5,70322336 52 They aren't rare; I'm just at Exercise 9 from How to Learn C the Hard Way and already encountered one... –11684 Mar 26 '13 at 20:12 5 Another cause of bus errors (on Linux anyway) is when the operating system can't back a virtual page with physical memory (e.g. low-memory conditions or out of huge pages when using huge page memory.) Typically mmap (and malloc) just reserve the virtual address space, and the kernel assigns the physical memory on demand (so called soft page faults.) Make a large enough malloc, and then write to enough of it and you'll get a bus error. –Eloff Jul 14 '15 at 0:09 add a comment| up vote 55 down vote A segfault is accessing memory that you're not allowed to access. It's read-only, you don't have permission, etc... A bus error is trying to access memory that can't possibly be there. You've used an address that's meaningless to the system, or the wro
& Answers This forum is closed for new posts. Please post beginner questions to learn unix and learn linux in this forum UNIX for Beginners Questions & Answers Search Forums Show Threads Show
Linux Bus Error (core Dumped)
Posts Tag Search Advanced Search Unanswered Threads Find All Thanked Posts Go to Page...
How To Debug Bus Error
unix and linux commands - unix shell scripting Bus Error UNIX for Dummies Questions & Answers Thread Tools Search how to solve bus error in linux this Thread Display Modes #1 11-09-2001 LivinFree Goober Extraordinaire Join Date: Jul 2001 Last Activity: 16 June 2011, 4:50 PM EDT Location: Portland, OR, USA Posts: 1,626 Thanks: 2 Thanked 15 Times in http://stackoverflow.com/questions/212466/what-is-a-bus-error 13 Posts Bus Error This may belong in the C Programming forum, but here goes anyway... What would cause a bus error? I searched google for a cause, but came up with some conflicting reports... Could it be caused by [lack of] disk space? A lot of the pages I found mentioned linking with the incorrect versions of the library. But in that case, would it compile correctly? Basically, I am curious as to why http://www.unix.com/unix-for-dummies-questions-and-answers/3109-bus-error.html we had a job dump core on a bus error. It ran nearly to normal completion time, then simply poo-pood. In the case that it may make a difference, it's a job that interfaces with an Oracle database on HP-UX 11. The things that had changed were that the process was recompiled, AND we were at 96% (df -k) on that disk... Not too important for me to know right now, but I am curious, and who wants to wait for developers to tell me what happened? Remove advertisements Sponsored Links LivinFree View Public Profile Find all posts by LivinFree #2 11-09-2001 Perderabo Unix Daemon (Administrator Emeritus) Join Date: Aug 2001 Last Activity: 26 February 2016, 12:31 PM EST Location: Ashburn, Virginia Posts: 9,931 Thanks: 64 Thanked 462 Times in 267 Posts The bus in question is the address buss and it contains an illegal value. This is almost always the result of dereferencing a pointer that contains an illegal value. Here is a program that, I think, will compile with every C or C++ compiler, but should cause a bus error when the second printf is attempted... Code: #ifdef __STDC__ #define PROTOTYPICAL #endif #ifdef __cplusplus #define PROTOTYPICAL #endif #include
program yourself, you can skip the rest of this section. For College-supported software, you can report the bug by contacting a consultant through olc or "mail staff". ------------------------------------------------------------------------------- If the program displays this message: Bus error or Segmentation fault or Core dump ... http://www.glue.umd.edu/afs/glue.umd.edu/system/info/olh/Utilities/Unix_answers/unix_bus_or_seg.html then the program was trying to access a memory location outside its address space. The computer detected https://lists.freebsd.org/pipermail/freebsd-hardware/2004-January/001060.html this problem and sent a signal to your program, which caused it to abort. Things that cause bus errors and segmentation violations are typically out-of-bounds array references and/or references through uninitialized or mangled pointers. Look very closely in your program for bizarre things like that. A common example in C is: int c; scanf("%d", c); instead of the correct version: int c; scanf("%d", &c); An example bus error from C++ is: int* p=new int[100]; cout<< p[100]; instead of the correct version: int* p=new int[100]; cout << p[99] (remember array referances in C and C++ start with 0 ) There are a number of methods for finding out where the program went out of bounds. One method is to use printf() statements to determine how far the program is getting before it crashes, and to print out the contents of interesting variables. A more sophisticated method is using 'dbx', a source level bus error in symbolic debugger. C and C++ programmers can also use 'gdb'. To learn about 'dbx', you can read the manual pages by using the 'man' command, as in: man dbx To learn about 'gdb', you can read the manual node in the 'xinfo' program, or using 'M-x info' in Emacs. If you need to debug your program, you may want to enable a core dump. Usually, those two messages above would also have "(core dumped)" by them, indicating that the program wrote an image of its current memory into a file called "core" in that directory. You might want to type 'fs lq' and find out how many blocks (kilobytes) you have available in your quota. Then you can type, say: limit coredumpsize 100 .. to limit your core dump size to 100K for your current login. BE CAREFUL not to let yourself go over quota, as you would then not be able to create or edit files. You should delete the "core" file when you don't need it any more. To allow core dumps and still not have quota worries, you can make a symbolic link from the name core into the /tmp directory. Core dumps created this way will not take up quota, and they will automatically vanish when the machine is rebooted. The disk backup will also occur more quickly since it doesn't have to go over the network to your directory. To set up a core link in a directory: ln -s /tmp/core.project ./core unlim
Quick question. > > I am getting occasional processes dying from Sig 10 and 11. > It has been a long time since I saw these and to narrow down > where I start my debugging, wanted to ask what the usual source > of these signals (problems) are from? > > IIRC sig11 is bad memory, but sig 10? Signal 11 is Segmentation Fault. This happens when programs try to write to or read from memory they're not allowed to read. (This is quite common if the program attempts to dereference unitialized pointers, or in case of buffer overflow. The most common source of this problem is quite simply a bug in the software in question. But if this is happening on many programs in general, it could be a sign of hardware error, quite probably memory error. Signal 10 is Bus Error. This is much more rare, but still plausibly could be caused by incorrectly written software. (I think I've seen Netscape 4 crash with this message once or twice -- but it's rare.) Below is the definition from FOLDOC: bus error