Archived

This forum has been archived. Please start a new discussion on GitHub.

TCP connection timeouts throw exceptions and reconnecting fails

Comments

  • matthew
    matthew NL, Canada
    Thanks for reporting the bug. Examining the stack trace I find:
    Catchpoint 2 (exception thrown) 
    0xb7770765 in __cxa_throw () from /usr/lib/libstdc++.so.6 
    (gdb) backtrace 
    #0 0xb7770765 in __cxa_throw () from /usr/lib/libstdc++.so.6 
    #1 0xb7e2d9db in Ice::ConnectionI::sendRequest (this=0x82c8fe0, out=0xbfacd0d4, compress=false, response=true) at ConnectionI.cpp:467 
    

    That corresponds to:
        if(_exception.get())
        {       
            //  
            // If the connection is closed before we even have a chance
            // to send our request, we always try to send the request
            // again.
            //
            throw LocalExceptionWrapper(*_exception.get(), true);
        }       
    

    Then:
    #2 0xb7e329e9 in IceInternal::ConnectionRequestHandler::sendRequest (this=0x82c2468, out=0xbfacd0d4) at ConnectionRequestHandler.cpp:74 
    #3 0xb7ebcb71 in IceInternal::Outgoing::invoke (this=0xbfacd0d4) at Outgoing.cpp:177 
    #4 0x0810194b in IceDelegateM::Murmur::ServerAuthenticator::authenticate (this=0x824e120, name=@0xbfacd37c, pw=@0xbfacd378, newname=@0xbfacd380, groups=@0xbfacd33c, 
    __context=0x0) at Murmur.cpp:7249 
    #5 0x0810f79c in IceProxy::Murmur::ServerAuthenticator::authenticate (this=0x82c3f18, name=@0xbfacd37c, pw=@0xbfacd378, newname=@0xbfacd380, groups=@0xbfacd33c, __ctx=0x0) 
    at Murmur.cpp:5228 
    

    Frame 5 is executing in a code block similar to:
            try
            {
                ....
            }
            catch(const ::IceInternal::LocalExceptionWrapper& __ex)
            {
                __handleExceptionWrapperRelaxed(__delBase, __ex, 0, __cnt);
            }
            catch(const ::Ice::LocalException& __ex)
            {
                __handleException(__delBase, __ex, 0, __cnt);
            }
    

    Obviously, the exception should be caught. If it is not, its a compiler bug.

    What would be most useful would be a test case without all of the murmur infrastructure.
  • benoit
    benoit Rennes, France
    Hi,

    After some investigation, it turns out that this problem is caused by code built with the GCC -fvisibility=hidden. This is causing exception handling issues as described on the GNU GCC page here: Visibility - GCC Wiki

    Building the Mumble code without this option solves the problem.

    Cheers,
    Benoit.