AW: [omniORB] Segmentation Fault on AIX
Andreas Eglseer - Entwicklung
andreas.eglseer@lisec.com
Mon, 26 Feb 2001 15:09:43 +0100
!!!OOPS!!! the attachment has disapeared from my former posting.
Here is it.:
// eg2_impl.cc - This is the source code of example 2 used in Chapter 2
// "The Basics" of the omniORB user guide.
//
// This is the object implementation.
//
// Usage: eg2_impl
//
// On startup, the object reference is printed to cerr as a
// stringified IOR. This string should be used as the argument to
// eg2_clt.
//
#include <iostream.h>
#include <echo.hh>
class Echo_i : public POA_Echo,
public PortableServer::RefCountServantBase
{
public:
inline Echo_i() {}
virtual ~Echo_i() {}
virtual char* echoString(const char* mesg);
virtual void test_func1(int i);
};
void Echo_i::test_func1(int i)
{
if(i >= 10000) return;
cerr << i << " ";
i++;
test_func1(i);
}
char* Echo_i::echoString(const char* mesg)
{
test_func1(0);
return CORBA::string_dup(mesg);
}
//////////////////////////////////////////////////////////////////////
int main(int argc, char** argv)
{
try {
CORBA::ORB_var orb = CORBA::ORB_init(argc, argv, "omniORB3");
CORBA::Object_var obj = orb->resolve_initial_references("RootPOA");
PortableServer::POA_var poa = PortableServer::POA::_narrow(obj);
Echo_i* myecho = new Echo_i();
PortableServer::ObjectId_var myechoid = poa->activate_object(myecho);
// Obtain a reference to the object, and print it out as a
// stringified IOR.
obj = myecho->_this();
CORBA::String_var sior(orb->object_to_string(obj));
cerr << "'" << (char*)sior << "'" << endl;
myecho->_remove_ref();
PortableServer::POAManager_var pman = poa->the_POAManager();
pman->activate();
orb->run();
orb->destroy();
}
catch(CORBA::SystemException&) {
cerr << "Caught CORBA::SystemException." << endl;
}
catch(CORBA::Exception&) {
cerr << "Caught CORBA::Exception." << endl;
}
catch(omniORB::fatalException& fe) {
cerr << "Caught omniORB::fatalException:" << endl;
cerr << " file: " << fe.file() << endl;
cerr << " line: " << fe.line() << endl;
cerr << " mesg: " << fe.errmsg() << endl;
}
catch(...) {
cerr << "Caught unknown exception." << endl;
}
return 0;
}