[Quickfix-developers] unhandled exception
Brought to you by:
orenmnero
From: Sean K. <Sea...@Pi...> - 2005-02-10 18:54:14
|
Hello everyone, We experienced a crash within quickfix this morning due to an unhandled = std::exception. We're currently running 1.7.0 in our production system and will be = upgrading to 1.9.4 soon, but after going through the exception handling, it seems like the = potential for a crash is still there. The code that appears to be problematic is in CallStack.h: #define QF_STACK_CATCH \ } catch( ... ) { FIX::CallStack::output(); throw; } The problem we had in 1.7.0 occurred when a reject was attempted in = response to a logon message after finding a tag out of order. The std::exception that was = thrown bubbled all the way up to Acceptor::startThread, where exceptions are handled by = QF_STACK_POP and QF_STACK_CATCH. I would have thought that because this is the entry = point for the acceptor thread, the buck should stop there. As you can see from the = definition of QF_STACK_CATCH, the exception was caught and re-thrown, resulting in the = crash. The code for QF_STACK_CATCH the same in 1.9.4, but if a reject is attempted = when a session is not logged in, a std::logic_error is thrown instead of a = std::exception. Should the throw be removed from the definition of QF_STACK_CATCH? Regards, Sean Kirkpatrick |