Message-ID: <35D9EFC5.B567651D@sympatico.ca> From: Mike Stoddart MIME-Version: 1.0 Newsgroups: comp.os.msdos.djgpp Subject: Re: tracking down runtime error References: Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 80 Date: Tue, 18 Aug 1998 21:19:50 GMT NNTP-Posting-Host: 206.47.27.130 NNTP-Posting-Date: Tue, 18 Aug 1998 17:19:50 EDT Organization: Bell Solutions To: djgpp AT delorie DOT com DJ-Gateway: from newsgroup comp.os.msdos.djgpp Precedence: bulk are you sure that the last node in the linked list has its "next" variable set to null? Salvador Eduardo Tropea (SET) wrote: > "John Spence" wrote: > > > Using the following code to display the contents of a linked list with > > DJGPP (gcc2721b) > > > > void traverse(NODEPTR start) > > { > > while(start) > > { > > printf("%d\n", start->number); > > start = start->next; > > } > > } > > > > I get the error which follows during runtime. I can run this program > > without a problem under Linux with gcc and DOS with Turbo C so I am > > 99% confident that this is not a problem with my code. > > > > Cany anyone help me pinpoint the cause of this error with DJGPP/gcc > > (dos) or refer me to a doc that will. > > > > > > The values that should have been displayed are 5, 4, 3, 700, 900, 100 > > As you don't provide the program we can only make a wild guess. > > > ====== start of program output ================== > > 5 > > 4 > > 3 > > 700 > > 134744064 > > Here the program is out-of-control, I guess you are just corrupting the heap > and overwriting the node that contains 900, as the whole node is corrupted > the pointer is crap and when you try to use it: > > > Exiting due to signal SIGSEGV > > General Protection Fault at eip=000016ab > > eax=08080808 ebx=0004f120 ecx=00000000 edx=08080808 esi=00000054 > > edi=0000dac0 > > ebp=0004da7c esp=0004da7c program=D:\UNITEMP\C\PRAC3A.EXE > > cs: sel=00af base=82cc9000 limit=0006ffff > > ds: sel=00b7 base=82cc9000 limit=0006ffff > > es: sel=00b7 base=82cc9000 limit=0006ffff > > fs: sel=0087 base=0000af90 limit=0000ffff > > gs: sel=00c7 base=00000000 limit=ffffffff > > ss: sel=00b7 base=82cc9000 limit=0006ffff > > > > Call frame traceback EIPs: > > 0x000016ab > > 0x00001619 > > 0x00001c5e > > Run symify to make it better ;-) > > So: try to isolate what part of your code makes it. Just cut all the code > that could make it and try again. The process is tedious but works. Do it > like a binary search, I mean, cut all the code if works enable half if fails > restrict the search to this half, etc > > SET > ------------------------------------ 0 -------------------------------- > Visit my home page: http://set-soft.home.ml.org/ > or > http://www.geocities.com/SiliconValley/Vista/6552/ > Salvador Eduardo Tropea (SET). (Electronics Engineer) > Alternative e-mail: set-soft AT usa DOT net set AT computer DOT org > ICQ: 2951574 > Address: Curapaligue 2124, Caseros, 3 de Febrero > Buenos Aires, (1678), ARGENTINA > TE: +(541) 759 0013 )25$2D1)4B4O:6YC;'5D93LE1$I$25(E+VQA;F#(P+VQI8 AT T*#0I;:6YF;UT-"DE.1D]0051(/24O M/CM)3D9/4$%42"4E1$I$25(E+VEN9F\[)41*1$E2)2]G;G4O96UA8W,O:6YF M;PT*24Y&3U]#3TQ/4E,],'@Q9BXP>#,Q#0H-"EME;6%C#TS,CHJ+F-M9#TS,CHJ+G1ACTP,3LS,3HJ+F%R M:CTP,3LS,3HJ+G1A>CTP,3LS,3HJ+FQZ:#TP,3LS,3HJ+GII<#TP,3LS,3HJ M+GH],#$[,S$Z*BY:/3 Q.S,Q.BHN9WH],#$[,S$Z*BYD96(],#$[,S$Z*BYJ M<&<],#$[,S0Z*BYG:68],#$[,S0Z*BYB;7 ],#$[,S0Z*BYP<&T],#$[,S0Z M*BYT9V$],#$[,S0Z*BYX8FT],#$[,S0Z*BYX<&T],#$[,S0Z*BYT:68],#$[ M,S0Z*BYM<&<],#$[,SF@],#$[,S$Z*BYZ:7 ],#$[,S$Z*BYZ/3 Q.S,Q.BHN6CTP M,3LS,3HJ+F=Z/3 Q.S,Q.BHN9&5B/3 Q.S,Q.BHN:G!G/3 Q.S,T.BHN9VEF M/3 Q.S,T.BHN8FUP/3 Q.S,T.BHN<'!M/3 Q.S,T.BHN=&=A/3 Q.S,T.BHN M>&)M/3 Q.S,T.BHN>'!M/3 Q.S,T.BHN=&EF/3 Q.S,T.BHN;7!G/3 Q.S,W M.BHN879I/3 Q.S,W.BHN9VP],#$[,S#TS,CHJ+F-M9#TS,CHJ+G1ACTP,3LS,3HJ+F%R:CTP,3LS,3HJ+G1A>CTP,3LS,3HJ+FQZ:#TP M,3LS,3HJ+GII<#TP,3LS,3HJ+GH],#$[,S$Z*BY:/3 Q.S,Q.BHN9WH],#$[ M,S$Z*BYD96(],#$[,S$Z*BYJ<&<],#$[,S0Z*BYG:68],#$[,S0Z*BYB;7 ] M,#$[,S0Z*BYP<&T],#$[,S0Z*BYT9V$],#$[,S0Z*BYX8FT],#$[,S0Z*BYX M<&T],#$[,S0Z*BYT:68],#$[,S0Z*BYM<&<],#$[,S