The problem may not occur in your listed code, you never know. Once for a
while I do have this similiar type of problem, and the actual buggy code is
seldom at the most obvious places.
Anyway, if you are not using FastMM, I strongly recommend you to switch
to that memory manager. It is easy to apply, and it is made to make
debugging memory problems easy!
.dlrow eht htiw thgir s'lla ,nevaeh sih ni si doG
From: "Ross Levis" <[EMAIL PROTECTED]>
Reply-To: Borland's Delphi Discussion List <[email protected]>
To: "'Borland's Delphi Discussion List'" <[email protected]>
Subject: RE: Threading issue
Date: Mon, 6 Aug 2007 13:41:05 +1200
It's written in Delphi 7. All the procedures are in the same unit but
with
different threads calling them.
I can't see the possibility of a double dispose. The problem only occurs
after a seek, otherwise it works forever. It's being running for days
without a seek. The crash is quite rare. It can handle over 3000 seeks
sometimes without a crash, but other times it can happen after a few
hundred.
I may have to give up and use a common critical section around both
functions.
Thanks,
Ross.
-----Original Message-----
From: [EMAIL PROTECTED] [mailto:[EMAIL PROTECTED] On
Behalf
Of Wu Adam
Sent: Monday, 6 August 2007 6:13
To: [email protected]
Subject: RE: Threading issue
Hmmm, you are right...
I noticed the Interlocked routine you are using is in "old interface"
(newer Delphi uses var parameters with which you do not need the @), any
chance that the seek procedure is located in another DLL and you are not
using FastMM?
Also, crashing inside memory allocation routine is likely to be caused by
a
previous "double free".
.dlrow eht htiw thgir s'lla ,nevaeh sih ni si doG
>From: "Ross Levis" <[EMAIL PROTECTED]>
>Reply-To: Borland's Delphi Discussion List <[email protected]>
>To: "'Borland's Delphi Discussion List'" <[email protected]>
>Subject: RE: Threading issue
>Date: Sun, 5 Aug 2007 18:12:39 +1200
>
>The problem with that theory is that ReadBuf will not activate when
>FBufferSize is 0, which it is after DeleteBuffers during a Seek. So a
>WriteBuf must be executed first before a ReadBuf will do anything.
>Therefore they should always be accessing different buffers.
>
>Thanks,
>Ross.
>
_________________________________________________________________
与世界各地的朋友进行交流,免费下载 Live Messenger;
http://get.live.com/messenger/overview
_______________________________________________
Delphi mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi
_________________________________________________________________
与联机的朋友进行交流,请使用 Live Messenger;
http://get.live.com/messenger/overview
_______________________________________________
Delphi mailing list -> [email protected]
http://www.elists.org/mailman/listinfo/delphi