DispouseBuf error

Discussion of open issues, suggestions and bugs regarding ODAC (Oracle Data Access Components) for Delphi, C++Builder, Lazarus (and FPC)
Post Reply
Belitski
Posts: 14
Joined: Wed 02 Aug 2006 12:52

DispouseBuf error

Post by Belitski » Tue 18 Aug 2009 08:00

Hello,

we use ODAC 5.80.0.43 under Delphi5.
Database is Oracle9.2.0.1.
ODAC is used with NET Option False.
By all query components the cashed update is used.
The problem:
"DisposeBuf failed (D:\Projects\Delphi\Dac\Source\MemData.pas, line 6820)"
We know, that some problem with DisposeBuf was fixed in the later version of ODAC (6.05.0.7).
What kind of problem was it? Was it a new problem from the version 6 or it was the problem of earlier versions?

Thank you very much,
Vladimir

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Wed 19 Aug 2009 07:18

This is the same problem that was fixed in ODAC 6.05.

Belitski
Posts: 14
Joined: Wed 02 Aug 2006 12:52

Post by Belitski » Wed 19 Aug 2009 07:49

Was this error already in the version 5.80.0.43?
If Yes, could you give us a code snippet or just a hint
what was wrong and what should be corrected?
We need solution for the problem.

Belitski
Posts: 14
Joined: Wed 02 Aug 2006 12:52

Post by Belitski » Mon 31 Aug 2009 12:23

Sorry, but we are still waiting for reply from ODAC Team.
Is there any hope to get a fix for the problem in the 5.80.0.43?
Thank you,
Vladimir

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Wed 02 Sep 2009 08:06

If you have ODAC with Sources, please contact us by e-mail support*devart*com. We will send you the code of the corrected procedure from the MemData unit.

Belitski
Posts: 14
Joined: Wed 02 Aug 2006 12:52

the problem not solved

Post by Belitski » Thu 24 Sep 2009 10:06

Unfortunately, the problem was not solved after compiling dac50.bpl with changes in the MemData unit.
We log all exceptions in the file using JCL debug. But in this case we are not able to define where the error comes from.
We cannot reproduce the problem in our test environment. However, the customer get this error regularily.
What can we do in such case? We try to analyse your code, but we cannot get so deep inside - it is not so transparent. What should we check, from your point of view, in our application? Wenn this error can happen, what can lead to it? The error comes from the following code in procedure TStringHeap.DisposeBuf(Buf: IntPtr):
if (Buf nil) then begin
PRefCount := IntPtr(Integer(Buf) - SizeOf(Word));
RefCount := Marshal.ReadInt16(PRefCount);
Assert(RefCount >= RefNull, 'DisposeBuf failed');
We work with Oracle 9.2.0.1.0. We use cached updates. Net option is set to false.
Any hint is welcome.
Thank you very much in advance,
Vladimir

Belitski
Posts: 14
Joined: Wed 02 Aug 2006 12:52

Post by Belitski » Tue 06 Oct 2009 06:42

Hello,

we still do not have any answer from ODAC team. We have sent this info over contact form also.
Please, give us any hint what we can do in this situation.

Vladimir

Plash
Devart Team
Posts: 2844
Joined: Wed 10 May 2006 07:09

Post by Plash » Wed 07 Oct 2009 08:06

Try to log all operations that your application performs. This can help to find the sequence of operations that reproduces the problem.

Post Reply