delorie.com/archives/browse.cgi   search  
Mail Archives: djgpp/2000/08/22/19:30:11

From: Bernd Becker <munin AT munin DOT inka DOT de>
Newsgroups: comp.os.msdos.djgpp
Subject: freeing/allocating memory causes a SIGSEGV
Date: Wed, 23 Aug 2000 01:23:15 +0100
Organization: (Posted via) INKA e.V. http://www.inka.de/
Lines: 40
Message-ID: <r1j5qsg8vjruoq5s3q515lq33fcrmi1vur@4ax.com>
NNTP-Posting-Host: ccclxviii.yapay.inka.de
Mime-Version: 1.0
X-Trace: sapa.inka.de 966986664 5457 212.227.15.242 (22 Aug 2000 23:24:24 GMT)
X-Complaints-To: newsmaster AT inka DOT de
NNTP-Posting-Date: 22 Aug 2000 23:24:24 GMT
X-Newsreader: Forte Agent 1.8/32.548
To: djgpp AT delorie DOT com
DJ-Gateway: from newsgroup comp.os.msdos.djgpp
Reply-To: djgpp AT delorie DOT com

When memory is allocated/freed in a loop the program will crash after
going through it for a while with a SIGSEGV.
Examples of this:
a. the imploding() function in the gstring class (originally for linux
but can be used for DOS after editing the makefiles).
builtin_vec_delete calls free()as causes a SIGSEGV at free+172.

b. the read_line() function in the CFG 1.2 library (.ini-style file
reading/writing). When in a line starting with the comment sign '#' a
';' (an other comment sign) is encountered directly behind a letter
__dj_movedata()+37 will cause a SIGSEGV. The maintainer says it only
causes the letter before the ';' to be garbled under Linux which he
uses.
c. in a loop with lots of set_cfg_????() functions, a SIGSEGV will be
caused at free+17 in the approximate middle of the second loop. Again
in the CFG 1.2 library. No problems for the maintainer of the library.

Another thing I found out after using Fortify with a program of mine
is that memory for classes, list entries, etc. is allocated just fine,
but when trying to free it with delete, according to Fortify nothing
happens. And even though I didn't change the code in a way that should
affect it, it crashed afterwards with SIGSEGVs today when exiting the
program and the deconstructor tries to delete the entries of the gui
and event lists as well as the gui objects themselves. After
commenting out the delete line in the remove_entry routines it crashed
with a SIGSEGV in the routine containing the loops where the
deconstructors are called. This didn't happen before it just went back
to DOS cleanly !!  

I'm using DJGPP 2.03, GCC/GPP 2.95.2, and Binutils 2.10 under DOS 6.22
with 128MB RAM.

I don't expect anyone telling me what may cause these SIGSEGVs - I'm
completely clueless for one - but if somebody could try the gstring
class's implode() function and tell me if it worked for him, it would
help some; I can send the archive, if necessary.


TIA,
     Bernd

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019