Skip to content
Snippets Groups Projects
  • Nat Goodspeed's avatar
    4d10172d
    MAINT-5011: Catch unhandled exceptions in LLCoros coroutines. · 4d10172d
    Nat Goodspeed authored
    Wrap coroutine call in try/catch in top-level coroutine wrapper function
    LLCoros::toplevel(). Distinguish exception classes derived from
    LLContinueError (log and continue) from all others (crash with LL_ERRS).
    
    Enhance CRASH_ON_UNHANDLED_EXCEPTIONS() and LOG_UNHANDLED_EXCEPTIONS() macros
    to accept a context string to supplement the log message. This lets us replace
    many places that called boost::current_exception_diagnostic_information() with
    LOG_UNHANDLED_EXCEPTIONS() instead, since the explicit calls were mostly to
    log supplemental information.
    
    Provide supplemental information (coroutine name, function parameters) for
    some of the previous LOG_UNHANDLED_EXCEPTIONS() calls. This information
    duplicates LL_DEBUGS() information at the top of these functions, but in a
    typical log file we wouldn't see the LL_DEBUGS() message.
    
    Eliminate a few catch (std::exception e) clauses: the information we get from
    boost::current_exception_diagnostic_information() in a catch (...) clause
    makes it unnecessary to distinguish.
    
    In a few cases, add a final 'throw;' to a catch (...) clause: having logged
    the local context info, propagate the exception to be caught by higher-level
    try/catch.
    
    In a couple places, couldn't resist reconciling indentation within a
    particular function: tabs where the rest of the function uses tabs, spaces
    where the rest of the function uses spaces.
    
    In LLLogin::Impl::loginCoro(), eliminate some confusing comments about an
    array of rewritten URIs that date back to a long-deleted implementation.
    4d10172d
    History
    MAINT-5011: Catch unhandled exceptions in LLCoros coroutines.
    Nat Goodspeed authored
    Wrap coroutine call in try/catch in top-level coroutine wrapper function
    LLCoros::toplevel(). Distinguish exception classes derived from
    LLContinueError (log and continue) from all others (crash with LL_ERRS).
    
    Enhance CRASH_ON_UNHANDLED_EXCEPTIONS() and LOG_UNHANDLED_EXCEPTIONS() macros
    to accept a context string to supplement the log message. This lets us replace
    many places that called boost::current_exception_diagnostic_information() with
    LOG_UNHANDLED_EXCEPTIONS() instead, since the explicit calls were mostly to
    log supplemental information.
    
    Provide supplemental information (coroutine name, function parameters) for
    some of the previous LOG_UNHANDLED_EXCEPTIONS() calls. This information
    duplicates LL_DEBUGS() information at the top of these functions, but in a
    typical log file we wouldn't see the LL_DEBUGS() message.
    
    Eliminate a few catch (std::exception e) clauses: the information we get from
    boost::current_exception_diagnostic_information() in a catch (...) clause
    makes it unnecessary to distinguish.
    
    In a few cases, add a final 'throw;' to a catch (...) clause: having logged
    the local context info, propagate the exception to be caught by higher-level
    try/catch.
    
    In a couple places, couldn't resist reconciling indentation within a
    particular function: tabs where the rest of the function uses tabs, spaces
    where the rest of the function uses spaces.
    
    In LLLogin::Impl::loginCoro(), eliminate some confusing comments about an
    array of rewritten URIs that date back to a long-deleted implementation.
Code owners
Assign users and groups as approvers for specific file changes. Learn more.