bug-gplusplus
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Threads and exception handling BUG ???


From: Chabane Rezzik
Subject: Threads and exception handling BUG ???
Date: 28 May 2002 14:33:17 -0700

Hi there,

We have an ORB vendor that claims that gcc 2.95.3, on certain
platforms, generates exception handling code that is buggy.
They claim that high-traffic multithreaded applications may 
crash because stack access violations can occur when throwing 
C++ exceptions in this environment. 
If that's true, where can I find reference to this issue? And is it
fixed in subsequent releases? 

Here is the stack:

#0  0xdfbb71da in add_fdes ()
    at
/VOBS/ngn_tools/Cygnus/cross_x86/alcatel-000815/H-sparc-sun-solaris2.5/bin/../lib/gcc-lib/i386-pc-s
olaris2.7/2.9-alcatel-000815/../../../../../include/g++-3/stl_map.h:76
#1  0xdfbb72ee in frame_init ()
    at
/VOBS/ngn_tools/Cygnus/cross_x86/alcatel-000815/H-sparc-sun-solaris2.5/bin/../lib/gcc-lib/i386-pc-s
olaris2.7/2.9-alcatel-000815/../../../../../include/g++-3/stl_map.h:76
#2  0xdfbb7372 in find_fde ()
    at
/VOBS/ngn_tools/Cygnus/cross_x86/alcatel-000815/H-sparc-sun-solaris2.5/bin/../lib/gcc-lib/i386-pc-s
olaris2.7/2.9-alcatel-000815/../../../../../include/g++-3/stl_map.h:76
#3  0xdfbb7a17 in __frame_state_for ()
    at
/VOBS/ngn_tools/Cygnus/cross_x86/alcatel-000815/H-sparc-sun-solaris2.5/bin/../lib/gcc-lib/i386-pc-s
olaris2.7/2.9-alcatel-000815/../../../../../include/g++-3/stl_map.h:76
#4  0xdfbb63c7 in __throw ()
    at
/VOBS/ngn_tools/Cygnus/cross_x86/alcatel-000815/H-sparc-sun-solaris2.5/bin/../lib/gcc-lib/i386-pc-s
olaris2.7/2.9-alcatel-000815/../../../../../include/g++-3/stl_map.h:76
#5  0xdf41026e in CORBA_TIMEOUT::_raise ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#6  0xdf406ed5 in XpsGIOPImpl::Client::Request_impl::raise ()
---Type <return> to continue, or q <return> to quit---
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#7  0xdf4060a3 in XpsGIOPImpl::Client::Request_impl::read_message ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#8  0xdf4066d7 in XpsGIOPImpl::Client::Request_impl::invoke ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#9  0xdf4059ac in XpsGIOPImpl::Client::Binding::invoke_request ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#10 0xdf3ea6ba in XpsPPF_Client_NullBinding::invoke_request ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#11 0xdf3e9860 in XpsPPF::Client::Stub::invoke_request ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#12 0xdf98cffc in CONFIG::Overrider_stub::promptUser (this=0x80e5360, 
    question=0x80fb8a8 "has a FIRMWARE MISMATCH.\nWould you like to
perform
a firmware upgrade?", address@hidden
xde407237) at oam.cc:482
#13 0x8058e1e in SmBtsMsgIF::interfaceWithGUI (this=0xde407244, 
    address@hidden, address@hidden, address@hidden)
    at SmBtsMsgIF.cc:267
#14 0x80687ce in SmBtsBootLoaderProxy::process (this=0xde4077e4)
    at SmBtsBootLoaderProxy.cc:419

#15 0x8073378 in SmBtsBootService_i::boot (this=0x80e5780,
address@hidden, 
    removeType_=RM_LOAD, maintType_=MT_MANUAL, address@hidden, 
    ov_=0x80e53e0) at SmBtsBootService_i.cc:104
#16 0xdf94e935 in POA_SmBts_BootService::_dispatch_boot
(__servant=0x80e5814, 
---Type <return> to continue, or q <return> to quit---
    address@hidden) at SmBtsInterfaces_s.cc:98
#17 0xdf94ef4c in POA_SmBts_BootService::_invoke (this=0x80e5814, 
    address@hidden) at SmBtsInterfaces_s.cc:192
#18 0xdf4016b3 in PortableServer::POA::_find_and_invoke ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#19 0xdf407f16 in XpsGIOPImpl::Server::Request_impl::invoke ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#20 0xdf4079d7 in XpsGIOPImpl::Server::Binding::deliver ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#21 0xdf40783e in XpsGIOPImpl::Server::Binding::wait_for_requests ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#22 0xdf4002e7 in XpsThreadedBinding::main ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so
#23 0xdf459177 in XpsMT::Thread::entry ()
   from /opt/VRTLorb/Eorb/lib/solaris2.7-gnu2.95.2-x86/libe_orb.so



Here is the code:


    string userPrompt;
    try {
     // Set timeout
      int guiRspnTime = 0;
      guiRspnTime = cfgData->getGUITimeout();

      SysMgr::SmReturnCode ret =
        Singleton<SmVrtCorba>::instance()->setSyncTimeout( guiRspnTime
);
      if( ret != SysMgr::SM_SUCCESS ) {
        // Do without timeout.
      }
      // call the confirm method

      ov_.promptUser ((const char *) userPrompt.c_str(), overrideID_);

      string traceString;
      switch (overrideID_) {
      case false:
        traceString = "GUI replied with NO_FW_UPGRADE.";
        break;
      case true:
        traceString = "GUI replied with FW_UPGRADE.";
        break;
      default:
        traceString = "GUI replied with UNKNOWN override code.";
        overrideID_ = false;
        break;
      }
      rc = SM_BTS_SUCCESS;
    }
    catch( const CORBA::Exception& ex )  {
      // set the overrider boolean to false
      overrideID_ = false;
    }

Thanks,
Chabane



reply via email to

[Prev in Thread] Current Thread [Next in Thread]