fread: segementation fault(coredump) w/o stdlib.h


 
Thread Tools Search this Thread
Top Forums Programming fread: segementation fault(coredump) w/o stdlib.h
# 8  
Old 02-12-2009
ftell returns a long int. You've interpreted the value of the ftell return incorrectly.

Can I ask: why are you not including stdlib.h?

You gain NOTHING by not including the correct header files.
# 9  
Old 02-12-2009
Quote:
Originally Posted by quintet
I have added the printf statement and yes, the program is failing because the buffer is not allocated. It fails in the strcpy function.
Well I guess the problem is that buffer is allocated albeit incorrectly and that explains why if (buffer == NULL) isn't executed.
Also I tried your program on my AIX system v5.3 and it runs flawlessly with or without the #include <stdlib.h> line. Smilie
This maybe because your system patch level is old specifically libc or a problem with the compiler you are using.

Last edited by shamrock; 02-12-2009 at 12:43 PM..
# 10  
Old 02-12-2009
Hi Guys,

thanks for explaining the issue. It really helped. Of Course I am gonna use stdlib.h. I was just curious about the error and wanted to know the reason why it failed when i eliminated stdlib.
# 11  
Old 02-12-2009
There is a mistake in my explanation...sizeof(buffer) will be 4 or 8 bytes depending on whether the system is 32/64 bits so printf output is correct...
Code:
printf ("\n size of buffer %ld, length of file %d\n ", sizeof(buffer), lSize);

Since sizeof pointer on a 64 bit system is 8 bytes. But that doesn't mean that memory is malloced for it.
What is still confusing is that control never passes to this statement below...
Code:
if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}

So do as jim suggested and run it through a symbolic debugger compiled with the -g switch.
# 12  
Old 02-13-2009
Hi,

This is the output from the debugger. I dont have GDB so used dbx

Code:
dbx a.out
Type 'help' for help.
reading symbolic information ...
(dbx) stop in main
[1] stop in main
(dbx) run
[1] stopped in main at line 8
    8     pFile = fopen ( "test.xml" , "rb" );
(dbx) n
stopped in main at line 9
    9     if (pFile==NULL) {fputs ("File error",stderr); exit (1);}
(dbx) n
stopped in main at line 11
   11     fseek (pFile , 0 , SEEK_END);
(dbx) n
stopped in main at line 12
   12     lSize = ftell (pFile);
(dbx) n
stopped in main at line 13
   13     rewind (pFile);
(dbx) n
stopped in main at line 15
   15     buffer = (char*) malloc (sizeof(char)*lSize);
(dbx) n
stopped in main at line 16
   16     if (buffer == NULL) {fputs ("Memory error",stderr); exit (2);}
(dbx) n
stopped in main at line 18
   18     printf ("\n size of buffer %ld, length of file %d\n ", sizeof(buffer), lSize);
(dbx) print buffer
(invalid char ptr (0x0000000010000ab0))
(dbx) print buffer
(invalid char ptr (0x0000000010000ab0))
(dbx) print &(*buffer)
0x0000000010000ab0
(dbx) print &buffer
0x0ffffffffffff320
(dbx) n

 size of buffer 8, length of file 216
 stopped in main at line 20
   20     strcpy (buffer, "test message");
(dbx) n

Segmentation fault in strcpy.strcpy [a.out] at 0x10000077c
0x10000077c (strcpy+0x5c) f8e50009       stdu   r7,0x8(r5)
(dbx)

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Advanced & Expert Users

Memory fault(Coredump)

Hi, In my application we have one job which is used to process the files. But that job is failing with memory fault while processing a file or while shutting down the job. Sometime it generates the coredump and sometimes not. When I analysed the core dump I got below code snippet where it... (3 Replies)
Discussion started by: shilpa_20
3 Replies

2. Homework & Coursework Questions

Memory fault(coredump)

I am writing a program that copies a program and prints the program with a line count. this is the program I wrote: #include <stdio.h> main() { int c; int nl_cnt = 0; while((c = getchar()) != EOF){ if(c = '\n'){ nl_cnt++;... (3 Replies)
Discussion started by: heywoodfloyd
3 Replies

3. Shell Programming and Scripting

Segmentation Fault(coredump)

I'm getting this error when trying to run a Acucobol program thru UNIX.. Segmentation Fault(coredump) Precompiler error prevents compilation of xxxxxx.co. Please help me in this case.. (1 Reply)
Discussion started by: Manish4
1 Replies

4. Solaris

memory fault (coredump)

Getting memory fault (coredump) and segmentation fault(coredump) when i tried javac or java -version. what could be the problem? Regards Eswar (2 Replies)
Discussion started by: BhuvanEswar
2 Replies

5. Ubuntu

Memory fault(coredump)

Hey guys, I am new to the Linux world and have a question to post. When I ssh from a HP-UX machine to a ubuntu machine I get the following error message Memory fault(coredump) i.e. ssh 192.168.1.3 I get this message as shown below Memory fault(coredump) Can someone please explain... (2 Replies)
Discussion started by: fkaba81
2 Replies

6. AIX

Segmentation fault(coredump)

Hi All Can anybody help me? When ever am trying to run topas system gives me an error Segmentation fault(coredump) does anybody ahve solution for this? (4 Replies)
Discussion started by: vjm
4 Replies

7. Programming

Passed the compiler,but segementation fault

To find a number if it is a prime number, I cannot find any wrong. #include <stdio.h> #include <stdlib.h> int isPrime(int valToCheck) { int i; int retVal = 1; for(i=1;i<valToCheck;i++) { if(valToCheck%i == 0 && i != 1) { retVal = 0; ... (1 Reply)
Discussion started by: zhshqzyc
1 Replies

8. Shell Programming and Scripting

Awk:Segementation Fault

I am using awk command to sort a large file (7MB) and compare two files of 7 MB. The code is working fine for smaller files. But it gives following error for larger files Segmentation fault (core dumped) I am doing this on cygwin Please help in this regard Thanks Sandeep (1 Reply)
Discussion started by: sandeep_hi
1 Replies

9. Programming

Memory fault(coredump)

Dear All, I made a program which do some simple jobs like reading data from other process's shared memory and writing messages to the queues of other process. what happens is my program works fine and do all the task as expected but then then program ends it give Memory fault(coredump). I... (0 Replies)
Discussion started by: ralo
0 Replies

10. UNIX for Dummies Questions & Answers

Coredump (memory fault)

We are running a SQR program on Unix Platform with Oracle RDBMS. It's an interfacing program to integrate data from foreign sites to PeopleSoft database, using a flat file input. After many hours of processing, the program stops with a coredump error (memory fault). With top command we noticed... (1 Reply)
Discussion started by: araziki
1 Replies
Login or Register to Ask a Question