>Did you try running your code with heaptrc >(-gh option in the linking tab).
No, I did not. >I suspect that you allocate one byte less >than needed (1 extra for the terminating >#0 of pchars). Interesting, I will check it, thank you. Panagiotis -----Original Message----- From: Vincent Snijders [mailto:[EMAIL PROTECTED] Sent: Tuesday, April 04, 2006 5:43 PM To: [email protected] Subject: Re: [lazarus] SIGSEGV error Panagiotis Sidiropoulos schreef: > I think I found the cause of the problem, hope not to change it’s mind > :-). > > I had a pchar var used as this: > > var pName: pchar; > begin > <some process> > getmem( pName, nSizeNeeded ); > <some process> > freemem( pName ); > <some process> > end; > > The exact processing code was: > > GetMem( lpLocalBuffer, length( strBuffer ) ); > StrPCopy( lpLocalBuffer, strBuffer ); TopicMemoryStream.Clear; > TopicMemoryStream.WriteBuffer( lpLocalBuffer^, length( lpLocalBuffer ) ); > TopicMemoryStream.Position := 0; FreeMem( lpLocalBuffer ); > > - lpLocalBuffer is pchar var declared in var section of the function. > - strbuffer is a String. > - TopicMemoryStream is a TMemoryStream. > > In simple words, I used pchar var only when needed and freed when > done. This function is called very often. Noticing that debugger > displayed this specific unit in most of SIGSEGV cases and this was > only the case of memory allocation by my self, I decided to declare it > as a global var, allocate memory on form creation and free it on form > destroy. Now it is more stable. There are rare ocassions of error > messages but I will try to investigate it. Thanks a lot for your > support. > > If my code is OK then Lazarus and FPC gurus may find this interesting > for investigation. > Did you try running your code with heaptrc (-gh option in the linking tab). I suspect that you allocate one byte less than needed (1 extra for the terminating #0 of pchars). Vincent _________________________________________________________________ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives _________________________________________________________________ To unsubscribe: mail [EMAIL PROTECTED] with "unsubscribe" as the Subject archives at http://www.lazarus.freepascal.org/mailarchives
