activemq-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From stevejsaunders <ssaund...@docucorp.com>
Subject ActiveMQ-CPP on AIX using IBM compilers dynamic_cast in TCPTransport.cpp always returning NULL
Date Thu, 26 Jul 2007 23:02:14 GMT

We have been testing some things with building ActiveMQ-CPP on Windows, Linux
(RedHat Enterprise Linux v3.1), HP-UX (v11i (B.11.11)), Solaris 9 SPARC and
AIX v5.2 and v5.3 all using the native commercial compilers (e.g. GNU for
Linux, aCC for HP-UX, Studio 8 on Solaris 9, v6 and v8 Visual C/C++
Enterprise on AIX.   

With some minor coding changes to get it to build on Solaris and HP-UX
related to STL and getting the build work with our other DSOs and EXEs we
have been successfull so far.  

One thing we can't get to work is on AIX.   On this OS we are using just the
src/main/activemq/examples/example program and in
src/main/activemq/transport/TcpTransport.cpp line 61 the dynamic_cast line
(IOTransport* ioTransport = dynamic_cast<IOTransport*>( next );) always
returns a NULL.   
The next instance when dereferenced in the in the debugger shows a valid
Transport class.   

We are smart enough to know about having the RTTI turned on via the compiler
and we have created several stand alone programs to verify that dynamic_cast
works on these servers using several different compiler options.  We even
created a static library that uses it and an EXE that loads it directly and
indirectly through a DSO and it works fine.  

I am at a lost on what to do next.   I have tried to compile it 50 different
ways and such and nothing is working.   

Attached is the config.log from the configure run.  
Here is what shows up on the command-line from running the example program:
atl1ax03(rrc):/home/rrc/activemq-cpp-2.0.1-src/src/examples$ ./example
=====================================================
Starting the example:
-----------------------------------------------------
TcpTransport::TcpTransport - transport must be of type IOTransport
        FILE: activemq/transport/TcpTransport.cpp, LINE: 64
        FILE: activemq/transport/TcpTransport.cpp, LINE: 89
        FILE: activemq/transport/TcpTransportFactory.cpp, LINE: 70
        FILE: activemq/core/ActiveMQConnectionFactory.cpp, LINE: 190
TcpTransport::TcpTransport - transport must be of type IOTransport
        FILE: activemq/transport/TcpTransport.cpp, LINE: 64
        FILE: activemq/transport/TcpTransport.cpp, LINE: 89
        FILE: activemq/transport/TcpTransportFactory.cpp, LINE: 70
        FILE: activemq/core/ActiveMQConnectionFactory.cpp, LINE: 190
-----------------------------------------------------
Finished with the example, ignore errors from this
point on as the sockets breaks when we shutdown.
=====================================================




I even changed the dynamic_cast to a static_cast just to see what whould
happen and here is the dbx output:
atl1ax03(rrc):/home/rrc/activemq-cpp-2.0.1-src/src/examples$ dbx
`pwd`/example core
Type 'help' for help.
[using memory image in core]
reading symbolic information ...

Illegal instruction (illegal opcode) in . at 0x0 ($t3)
warning: Unable to access address 0x0 from core
(dbx) where
warning: Unable to access address 0xfffffffffffffffc from core
warning: Unable to access address 0xfffffffffffffffc from core
warning: Unable to access address 0xfffffffffffffffc from core
warning: Unable to access address 0xfffffffffffffffc from core
.() at 0x0
unnamed block $b21117, line 120 in "WireFormatInfoMarshaller.cpp"
unnamed block $b21116, line 120 in "WireFormatInfoMarshaller.cpp"
activemq::connector::openwire::marshal::v2::WireFormatInfoMarshaller::looseUnmarshal(activemq::connector::openwire::OpenWireFormat*,activemq::connector::openwire::commands::DataStructure*,activemq::io::DataInputStream*)(this
= 0x301899c8, wireFormat = 0x30189068, dataStructure = 0x301a855c, dataIn =
0x3018a008), line 120 in "WireFormatInfoMarshaller.cpp"
unnamed block $b5610, line 246 in "OpenWireFormat.cpp"
unnamed block $b5609, line 246 in "OpenWireFormat.cpp"
unnamed block $b5608, line 246 in "OpenWireFormat.cpp"
doUnmarshal(activemq::io::DataInputStream*)(this = 0x30189068, dis =
0x3018a008), line 246 in "OpenWireFormat.cpp"
unnamed block $b5600, line 185 in "OpenWireFormat.cpp"
unnamed block $b5599, line 185 in "OpenWireFormat.cpp"
unmarshal(activemq::io::DataInputStream*)(this = 0x30189068, dis =
0x3018a008), line 185 in "OpenWireFormat.cpp"
unnamed block $b5956, line 71 in "OpenWireCommandReader.cpp"
unnamed block $b5955, line 71 in "OpenWireCommandReader.cpp"
activemq::connector::openwire::OpenWireCommandReader::readCommand()(this =
0x30188b37), line 71 in "OpenWireCommandReader.cpp"
unnamed block $b8254, line 166 in "IOTransport.cpp"
activemq::transport::IOTransport::run()(this = 0x3012ee78), line 166 in
"IOTransport.cpp"
runCallback(void*)(param = 0x3018a118), line 152 in "Thread.cpp"


Here is the activemq server startup end:
INFO  TransportServerThreadSupport   - Listening for connections at:
tcp://atl1ax03:61616
INFO  TransportConnector             - Connector default Started
INFO  TransportServerThreadSupport   - Listening for connections at:
stomp://atl1ax03:61613
INFO  TransportConnector             - Connector stomp Started
INFO  BrokerService                  - ActiveMQ JMS Message Broker
(localhost, ID:atl1ax03-61252-1185490832763-1:0) started


http://www.nabble.com/file/p11820667/config.log config.log 
http://www.nabble.com/file/p11820667/config.status config.status 



-- 
View this message in context: http://www.nabble.com/ActiveMQ-CPP-on-AIX-using-IBM-compilers-dynamic_cast-in-TCPTransport.cpp-always-returning-NULL-tf4154632s2354.html#a11820667
Sent from the ActiveMQ - Dev mailing list archive at Nabble.com.


Mime
View raw message