Visit Our UNIX and Linux User Community


Reason for Segmentation fault


 
Thread Tools Search this Thread
Top Forums Programming Reason for Segmentation fault
# 1  
Old 10-22-2007
Reason for Segmentation fault

The following program fails with "Segmentation fault" error message, while I try to run in Ubuntu (Debian) Linux m/c. It is not creating any core file, so I could not cross examine it with the debugger. See the comments for much better understanding. Could any one tell me the exact reason why the program is failing?

Code:
int main( ) {
    char *ch; (or) ch = 'A';   // but if it assigned to any string then no segmentation fault
    int *p = (int*) &ch[0];   // or &ch[1], &ch[2], .... ch;      but &ch runs fine
    printf("%c", *p);           // Segmentation Fault: only if you use this print statement
}

# 2  
Old 10-22-2007
Quote:
Originally Posted by royalibrahim
Code:
   char *ch; (or) ch = 'A';   // but if it assigned to any string then no segmentation fault

It's not clear what your actual code is. If you do not assign a value to the character pointer "ch", then it is pointing to an undefined location in memory and so it is not surprising that this would error. If you assign 'A' to ch, you are assigning the hex value of 'A' to the POINTER, which probably is not pointing to a valid memory location.
# 3  
Old 10-25-2007
Quote:
Originally Posted by royalibrahim
The following program fails with "Segmentation fault" error message, while I try to run in Ubuntu (Debian) Linux m/c. It is not creating any core file, so I could not cross examine it with the debugger. See the comments for much better understanding. Could any one tell me the exact reason why the program is failing?

Code:
int main( ) {
    char *ch; (or) ch = 'A';   // but if it assigned to any string then no segmentation fault
    int *p = (int*) &ch[0];   // or &ch[1], &ch[2], .... ch;      but &ch runs fine
    printf("%c", *p);           // Segmentation Fault: only if you use this print statement 
}

Well, i would say you're attempting to print a char from some odd pointer value (ptr on ptr on stack, huh ?) you got from an uninitialized var which is char *ch and ... thus accessing outside your 'legal' space therefore the core.
You attending some security course on coding and braging about it or just goofing around Smilie lol me just joking
# 4  
Old 10-25-2007
Code:
int main( ) {
    ch = 'A';  
 int *p = (int*) &ch[0];

First it wouldn't have compiled.

It would have thrown a compile time error, ' ch ' should be a pointer or an array.
# 5  
Old 10-25-2007
Smilie Smilie

Its not crashing in my system
Code:
#include <stdio.h>

int main() {
  char *ch;
  int *p = (int*) &ch[0];
  printf("%c\n", *p);
  return 0;
}

I get
Code:
 U

as the output
# 6  
Old 10-25-2007
Quote:
Originally Posted by matrixmadhan
Smilie Smilie

Its not crashing in my system
Then the bit of memory that 'p' ends up pointing to has the contents 0x55.

If you have an uninitialised pointer it is just that, uninitialised, and will have the contents of whatever memory was at that point in the stack. As luck would have it, the &ch[0] did not trap and neither did accessing p.
# 7  
Old 10-25-2007
Quote:
Originally Posted by porter
Then the bit of memory that 'p' ends up pointing to has the contents 0x55.

If you have an uninitialised pointer it is just that, uninitialised, and will have the contents of whatever memory was at that point in the stack. As luck would have it, the &ch[0] did not trap and neither did accessing p.
Yes exactly as you had said.

And with this argument it is not guaranteed that the code would never crash.

To simulate that I could spawn this code between several process so that there could be an instance in the stack frame where there would be no value pointed to by ' p ' and ultimately crashing

Previous Thread | Next Thread
Test Your Knowledge in Computers #163
Difficulty: Easy
MINIX was first released in 1987, with the complete source code available to universities for study in courses and research.
True or False?

10 More Discussions You Might Find Interesting

1. Programming

C. To segmentation fault or not to segmentation fault, that is the question.

Oddities with gcc, 2.95.3 for the AMIGA and 4.2.1 for MY current OSX 10.14.1... I am creating a basic calculator for the AMIGA ADE *NIX emulator in C as it does not have one. Below are two very condensed snippets of which I have added the results inside the each code section. IMPORTANT!... (11 Replies)
Discussion started by: wisecracker
11 Replies

2. Programming

Segmentation fault

I keep getting this fault on a lot of the codes I write, I'm not exactly sure why so I'd really appreciate it if someone could explain the idea to me. For example this code #include <stdio.h> main() { unsigned long a=0; unsigned long b=0; int z; { printf("Enter two... (2 Replies)
Discussion started by: sizzler786
2 Replies

3. Homework & Coursework Questions

Segmentation Fault

this is a network programming code to run a rock paper scissors in a client and server. I completed it and it was working without any error. After I added the findWinner function to the server code it starts giving me segmentation fault. -the segmentation fault is fixed Current problem -Also... (3 Replies)
Discussion started by: femchi
3 Replies

4. Programming

Using gdb, ignore beginning segmentation fault until reproduce environment segmentation fault

I use a binary name (ie polo) it gets some parameter , so for debugging normally i do this : i wrote script for watchdog my app (polo) and check every second if it's not running then start it , the problem is , if my app , remain in state of segmentation fault for a while (ie 15 ... (6 Replies)
Discussion started by: pooyair
6 Replies

5. Programming

segmentation fault

What is segmentation fault(core dumped) (1 Reply)
Discussion started by: gokult
1 Replies

6. Programming

segmentation fault

If I do this. Assume struct life { char *nolife; } struct life **life; // malloc initialization & everything if(life->nolife == 0) Would I get error at life->nolife if it is equal to 0. wrong accession? (3 Replies)
Discussion started by: joey
3 Replies

7. UNIX for Dummies Questions & Answers

Segmentation Fault

Hi, While comparing primary key data of two tables thr bteq script I am getting this Error. This script is a shell script. *** Error: The following error was encountered on the output file. Script.sh: 3043492 Segmentation fault(coredump) Please let me know how to get through it. ... (5 Replies)
Discussion started by: monika
5 Replies

8. Linux

Segmentation fault

Hi, on a linux Red HAT(with Oracle DB 9.2.0.7) I have following error : RMAN> delete obsolete; RMAN retention policy will be applied to the command RMAN retention policy is set to redundancy 2 using channel ORA_DISK_1 Segmentation fault What does it mean ? And the solution ? Many thanks. (0 Replies)
Discussion started by: big123456
0 Replies

9. AIX

Segmentation fault

Hi , During execution a backup binary i get following error "Program error 11 (Segmentation fault), saving core file in '/usr/datatools" Riyaz (2 Replies)
Discussion started by: rshaikh
2 Replies

10. Programming

segmentation fault

hi all i'm trying to execute a c program under linux RH and it gives me segmentation fault, this program was running under unix at&t anybody kow what the problem could be? thanx in advance regards (2 Replies)
Discussion started by: omran
2 Replies

Featured Tech Videos