Strange behavior after upgrade to 6.2.8
Posted: Tue 18 Sep 2018 07:56
Hi,
I'm using RadStudio XE (C++ personality).
I've just upgrade IBDAC professional with source code from version 4.1.4 to 6.2.8 (09-Jul-18).
After upgrade and rebuild all I found strange behaviour of may applications. TJvThread (from JVCL library) doesn't terminate any more.
I've recheck that none old dcu, bpi, lib etc. was left from previous version.
I've test binary version 6.2.8 in some other vm environment and the problem persists.
Because I use IBDAC in threads i try to test it with just simply empty thread and I've got the same effect, thread doesn't terminate.
So it looks like something spoils memory and i see only the side effect.
I try to narrow this problem to IBDAC version. I've test with 6.1.7 (10-Apr-18) and it works ok.
So i try to test changes made between version 6.1.7 and 6.2.8 and I've narrow this problem to record
TLocalMDLink = record
IsNull: boolean;
Buffer: IntPtr;
BufferType: Word;
NativeBuffer: boolean;
FieldNo: integer;
MasterFieldValue: Variant;
end;
When I add extra element to this record (eg. test: Variant) just to change TLocalMDLink size everything works fine, it means that I don't see the side affect of not terminating threads.
In my opinion it could be some bug in SetLocalMDLinks function that spoils memory, but I can't prepare small demo application because I can't reproduce this side effect.
Can You do some code review and recheck this piece of code?
Best Regards,
Macma
I'm using RadStudio XE (C++ personality).
I've just upgrade IBDAC professional with source code from version 4.1.4 to 6.2.8 (09-Jul-18).
After upgrade and rebuild all I found strange behaviour of may applications. TJvThread (from JVCL library) doesn't terminate any more.
I've recheck that none old dcu, bpi, lib etc. was left from previous version.
I've test binary version 6.2.8 in some other vm environment and the problem persists.
Because I use IBDAC in threads i try to test it with just simply empty thread and I've got the same effect, thread doesn't terminate.
So it looks like something spoils memory and i see only the side effect.
I try to narrow this problem to IBDAC version. I've test with 6.1.7 (10-Apr-18) and it works ok.
So i try to test changes made between version 6.1.7 and 6.2.8 and I've narrow this problem to record
TLocalMDLink = record
IsNull: boolean;
Buffer: IntPtr;
BufferType: Word;
NativeBuffer: boolean;
FieldNo: integer;
MasterFieldValue: Variant;
end;
When I add extra element to this record (eg. test: Variant) just to change TLocalMDLink size everything works fine, it means that I don't see the side affect of not terminating threads.
In my opinion it could be some bug in SetLocalMDLinks function that spoils memory, but I can't prepare small demo application because I can't reproduce this side effect.
Can You do some code review and recheck this piece of code?
Best Regards,
Macma