Problem:
- Product Name: VisiBroker for C
- Product Version: 6.5, 7.0, 8.x
- Product Component: ORB, IBM XL C/C Compiler
- Platform/OS Version: AIX
# ./Server
Could not load program Server:
rtld: 0712-001 Symbol __vft29PortableServer_ServantManager17CORBA_LocalObject was referenced
from module ./libBankLocator.so(), but a runtime definition
of the symbol was not found.
rtld: 0712-002 fatal error: exiting.
Resolution:
RTTI (Run-Time Type Information) is a C construct which allows applications to check at runtime the dynamic type of an object. The mechanism allows programmers to determine the dynamic type of a pointer. This effectively allows safe 'down-casting' of object types.
The issue occurs when mixed objects compiled (-qrtti specified for some objects, -qnortti specified for others). Please refer to the IBM XL C/C Compiler Reference on rtti for more details.
In most of the cases, the application is compiled/built with -qrtti while VisiBroker libraries are not. The VisiBroker does not use "rtti" as it results in 30%-40% performance degradation. And there is no plan to build with "rtti" enabled to all libraries of VisiBroker due to serious performance problem.
Note: If the rational of "rtti" is to use dynamic_cast<>, there is a workaround of implementing "double dispatch" or "visitor" patterns to replace the use of dynamic_cast<> and the application is freed from "rtti" option.
The issue occurs when mixed objects compiled (-qrtti specified for some objects, -qnortti specified for others). Please refer to the IBM XL C/C Compiler Reference on rtti for more details.
In most of the cases, the application is compiled/built with -qrtti while VisiBroker libraries are not. The VisiBroker does not use "rtti" as it results in 30%-40% performance degradation. And there is no plan to build with "rtti" enabled to all libraries of VisiBroker due to serious performance problem.
Note: If the rational of "rtti" is to use dynamic_cast<>, there is a workaround of implementing "double dispatch" or "visitor" patterns to replace the use of dynamic_cast<> and the application is freed from "rtti" option.
Reference
Incident: #2474918
#Security
#VisiBroker