X-Authentication-Warning: delorie.com: mail set sender to djgpp-bounces using -f X-Trace-PostClient-IP: 68.147.131.211 From: Brian Inglis Newsgroups: comp.os.msdos.djgpp Subject: Re: Free() crash my program! Organization: Systematic Software Message-ID: <7apdm01g16tmsfmr8e2k03hpjrfopqijgm@4ax.com> References: X-Newsreader: Forte Agent 1.93/32.576 English (American) MIME-Version: 1.0 Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 45 Date: Fri, 08 Oct 2004 19:11:50 GMT NNTP-Posting-Host: 24.71.223.147 X-Complaints-To: abuse AT shaw DOT ca X-Trace: pd7tw3no 1097262710 24.71.223.147 (Fri, 08 Oct 2004 13:11:50 MDT) NNTP-Posting-Date: Fri, 08 Oct 2004 13:11:50 MDT To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Reply-To: djgpp AT delorie DOT com fn Thu, 7 Oct 2004 22:57:08 -0700 in comp.os.msdos.djgpp, "JC" wrote: >Hi, > >I used djgpp to develop a simple program, using dosmemget(), >to dump some DOS memory. The code is like following: > > p = (UINT8 *)malloc(len+1); > if (p == NULL) > { > ... > } > dosmemget(addr, len, p); > /* Code to printf the contents in *p */ > ... > free(p); > >The code compiled & ran fine. But when the code execute >the free(). The code crashed and got SIGSEG error: > > Exiting due to signal SIGSEGV > General Protection Fault at eip=00006ac4 > ... > >According to the FAQ, this might happen if the code put >data into the buffer that is longer than malloc. But my >code just read the data from buffer and free() them. How >come I had this crash? I also noticed: if the contents >of the buffer are all zeros (unused area?), it worked fine. >But if the buffer had data in it other than 0 (code? data?), >most likely it will crash. Anyone can help me on this? What are the values of addr and len when it crashes? How are you getting and/or composing addr? Values of addr are linear addresses (segment*16 + offset) < 1088KB, and unless you are following lists from the DOS list of lists, values outside 0x400-0x700 (BIOS data area) may not return much in the way of meaningful data. -- Thanks. Take care, Brian Inglis Calgary, Alberta, Canada Brian DOT Inglis AT CSi DOT com (Brian[dot]Inglis{at}SystematicSW[dot]ab[dot]ca) fake address use address above to reply