[Ace-users] Re: Access violation if handling a structure containing
an octet sequence length > 2604 bytes
arne.berger at gmx.de
arne.berger at gmx.de
Wed Aug 22 04:56:11 CDT 2007
Hallo Johnny
I could not reproduce this affect with a small sample. However with
using the codeguard tool I found out that the allocation and
deallocation is done from different RTL's. Here are the messages from
codeguard:
------------------------------------------
Error 00059. 0x340010 (r) (Thread 0x0D8C):
Resource from different RTL:
delete[](0x019FC090)
Call Tree:
0x00625D07(=TAO_BD.DLL:0x01:004D07) ..\tao/
Unbounded_Value_Allocation_Traits_T.h#45
0x00625CF7(=TAO_BD.DLL:0x01:004CF7) ..\tao/
Unbounded_Octet_Sequence_T.h#250
0x00625CDA(=TAO_BD.DLL:0x01:004CDA) ..\tao/
Unbounded_Octet_Sequence_T.h#76
0x00683BFA(=TAO_BD.DLL:0x01:062BFA) ..\tao/
Unbounded_Octet_Sequence_T.h#264
0x00489961(=PhysicsDataMng.exe:0x01:088961) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Sequence_CDR_T.h#119
0x00489872(=PhysicsDataMng.exe:0x01:088872) sourcescpp
\sim_common_c.cpp#3397
The object array (0x019FC090) [size: 2604 bytes] was created with
new[]
Call Tree:
0x004492CC(=PhysicsDataMng.exe:0x01:0482CC) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Value_Allocation_Traits_T.h#40
0x00441318(=PhysicsDataMng.exe:0x01:040318) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Octet_Sequence_T.h#247
0x004350EC(=PhysicsDataMng.exe:0x01:0340EC) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Octet_Sequence_T.h#57
0x004898E2(=PhysicsDataMng.exe:0x01:0888E2) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Sequence_CDR_T.h#111
0x00489872(=PhysicsDataMng.exe:0x01:088872) sourcescpp
\sim_common_c.cpp#3397
0x00489AAF(=PhysicsDataMng.exe:0x01:088AAF) sourcescpp
\sim_common_c.cpp#3425
------------------------------------------
Error 00058. 0x340010 (r) (Thread 0x0D8C):
Resource from different RTL:
delete[](0x01A0CAD0)
Call Tree:
0x00625D07(=TAO_BD.DLL:0x01:004D07) ..\tao/
Unbounded_Value_Allocation_Traits_T.h#45
0x00625CF7(=TAO_BD.DLL:0x01:004CF7) ..\tao/
Unbounded_Octet_Sequence_T.h#250
0x00625CDA(=TAO_BD.DLL:0x01:004CDA) ..\tao/
Unbounded_Octet_Sequence_T.h#76
0x00683BFA(=TAO_BD.DLL:0x01:062BFA) ..\tao/
Unbounded_Octet_Sequence_T.h#264
0x00489961(=PhysicsDataMng.exe:0x01:088961) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Sequence_CDR_T.h#119
0x00489872(=PhysicsDataMng.exe:0x01:088872) sourcescpp
\sim_common_c.cpp#3397
The object array (0x01A0CAD0) [size: 2606 bytes] was created with
new[]
Call Tree:
0x004492CC(=PhysicsDataMng.exe:0x01:0482CC) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Value_Allocation_Traits_T.h#40
0x00441318(=PhysicsDataMng.exe:0x01:040318) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Octet_Sequence_T.h#247
0x004350EC(=PhysicsDataMng.exe:0x01:0340EC) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Octet_Sequence_T.h#57
0x004898E2(=PhysicsDataMng.exe:0x01:0888E2) D:\Programme\Borland\BDS
\4.0\ACETAO\\include\tao/Unbounded_Sequence_CDR_T.h#111
0x00489872(=PhysicsDataMng.exe:0x01:088872) sourcescpp
\sim_common_c.cpp#3397
0x00489AAF(=PhysicsDataMng.exe:0x01:088AAF) sourcescpp
\sim_common_c.cpp#3425
Codeguard avoids the access violation. Without linking the codeguard
library the server program crashes if more than 2604 bytes was
received.
In my large project I firstly build a static library from all IDL
generated cpp files. This library is linked to the server process
without using the option "Use dynamic RTL". If I build all (the
library and the server.exe) with this option no errors occur. If I
directly add the IDL generated CPP files to the server project file
without using the library it works fine too. Also the error from
codeguard tool is lost.
It seems to me a version without using of dynamic RTL is not possible
with usage of BDS2006 ?? Now I had to change all projects and to set
the option "Use dynamic RTL" to be sure the TAO unbounded sequences
are working correctly. Or do you have a different idea?
Thanks for help
Best regards
Arne Berger
More information about the Ace-users
mailing list