Created On:  13 July 2012

Problem:

  • Product Name: VisiBroker for C++
  • Product Version: 8.5
  • Product Component: ORB runtime
  • Platform/OS Version: RHEL, SUSE


Any 32-bit C++ application source build using the VisiBroker 64-bit product installation may encounter either the abnormal memory usage growth or the crash dump during the test run. The same application would run perfectly fine if built with the 64-bit mode.

The issues apply only to the VisiBroker 8.5 for C++ product for the Red Hat Enterprise Linux and SUSE Linux Enterprise Server platforms.

The 64-bit Linux installation includes the 32-bit library binaries to assist the migration of the existing 32-bit VisiBroker application. The goal is to ease the deployment of both 32-bit and 64-bit applications.

The VisiBroker Linux developers would like to make use of one 64-bit product install and achieve the benefit to continue to develop the 32-bit or the 64-bit application. However, the compilation of 32-bit C++ application source cannot achieve using the 64-bit product install. The reason is that the shipped C++ include headers are targeted specifically toward the 64-bit Linux platforms.

One of the data type "_VIS_LONG_DOUBLE" is only supported depending on the platforms supported by VisiBroker. There are additional virtual member functions API generated to support operations for this data type. For the Linux platforms, the 64-bit product is including this feature but not in the 32-bit product.

The implication is that the 32-bit application compiled directly using the C++ include headers from the 64-bit Linux installation would generate a different object map size. Specifically, the object vtable size at the application layer would be larger than the one shipped in the VisiBroker 32-bit libraries. This inconsistency causes the generated application binary level to become incompatible with the VisiBroker compiled binary.

Resolution:

The workaround is to continue to build the 32-bit Linux applications using the VisiBroker 32-bit product install. The compiled application can still be tested and deployed using the 32-bit libraries from the 64-bit installation.

Defect RPI 1080110 has been raised to the VisiBroker Development team.
 

Incidents #2566776, #2524104