Skip to content
Snippets Groups Projects
  1. Mar 25, 2020
  2. Sep 02, 2016
  3. Sep 01, 2016
  4. Aug 31, 2016
  5. Aug 18, 2016
    • Nat Goodspeed's avatar
      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
  6. Aug 17, 2016
    • Nat Goodspeed's avatar
      MAINT-5011: Try to enrich catch (...) logging throughout viewer. · 993f54f6
      Nat Goodspeed authored
      Turns out we have a surprising number of catch (...) clauses in the viewer
      code base. If all we currently do is
      
          LL_ERRS() << "unknown exception" << LL_ENDL;
      
      then call CRASH_ON_UNHANDLED_EXCEPTION() instead. If what we do is
      
          LL_WARNS() << "unknown exception" << LL_ENDL;
      
      then call LOG_UNHANDLED_EXCEPTION() instead.
      
      Since many places need LOG_UNHANDLED_EXCEPTION() and nobody catches
      LLContinueError yet, eliminate LLContinueError& parameter from
      LOG_UNHANDLED_EXCEPTION(). This permits us to use the same log message as
      CRASH_ON_UNHANDLED_EXCEPTION(), just with a different severity level.
      
      Where a catch (...) clause actually provides contextual information, or makes
      an error string, add boost::current_exception_diagnostic_information() to try
      to figure out actual exception class and message.
      993f54f6
    • Nat Goodspeed's avatar
      MAINT-5011: Add llexception_test.cpp with tests (and conclusions). · 1ed76c38
      Nat Goodspeed authored
      llexception_test.cpp is an unusual test source in that it need not be verified
      on every build, so its invocation in indra/llcommon/CMakeLists.txt is
      commented out with that remark. Its purpose is to help a developer decide what
      base class(es) to use for LLException, how to throw and how to catch.
      
      Our current conclusions are written up as comments in llexception_test.cpp.
      
      Added CRASH_ON_UNHANDLED_EXCEPTION() and LOG_UNHANDLED_EXCEPTION() macros to
      llexception.h -- macros to log __FILE__, __LINE__ and __PRETTY_FUNCTION__ of
      the catch site. These invoke functions in llexception.cpp so we don't need to
      #include llerror.h for every possible catch site.
      1ed76c38
Loading