Skip to content
Snippets Groups Projects
  1. 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
  2. Dec 16, 2015
  3. Nov 20, 2015
  4. Nov 10, 2015
  5. Jul 10, 2015
  6. Jul 07, 2015
  7. Jul 02, 2015
    • Nat Goodspeed's avatar
      MAINT-5357: Introduce and populate llcoro:: namespace. · f90023fc
      Nat Goodspeed authored
      To date, the coroutine helper functions in lleventcoro.h have been in the
      global namespace. Migrate them into llcoro namespace, and fix references.
      Specifically, LLVoidListener => llcoro::VoidListener, and voidlistener(),
      postAndWait(), both waitForEventOn(), postAndWait2(), errorException() and
      errorLog() have been moved into llcoro.
      Also migrate new LLCoros::get_self() and Suspending to llcoro:: namespace.
      While at it, I realized that -- having converted several lleventcoro.h
      functions from templates (for arbitrary 'self' parameter type) to ordinary
      functions, having moved them from lleventcoro.h to lleventcoro.cpp, we can now
      migrate their helpers from lleventcoro.h to lleventcoro.cpp as well. This
      eliminates the need for the LLEventDetail namespace; the relevant helpers are
      now in an anonymous namespace in the .cpp file: listenerNameForCoro(),
      storeToLLSDPath(), WaitForEventOnHelper and wfeoh().
      f90023fc
  8. Jul 01, 2015
  9. Jun 05, 2013
  10. Jun 04, 2013
  11. Jun 01, 2013
  12. May 23, 2013
    • Nat Goodspeed's avatar
      MAINT-2724: Make viewer explicitly set coroutine stack size. · 3be79d53
      Nat Goodspeed authored
      Introduce LLCoros::setStackSize(), with a compile-time default value we hope
      we never have to use. Make LLAppViewer call it with the value of the new
      settings variable CoroutineStackSize as soon as we've read settings files.
      (While we're at it, notify interested parties that we've read settings files.)
      Give CoroutineStackSize a default value four times the previous default stack
      size. Make LLCoros::launch() pass the saved stack size to each new coroutine
      instance.
      Re-enable lleventcoro integration test. Use LLSDMap() construct rather than
      LLSD::insert(), which used to return the modified object but is now void.
      3be79d53
  13. Mar 29, 2013
  14. Feb 21, 2013
    • Nat Goodspeed's avatar
      MAINT-2389: Change viewer to Boost package without ucontext.h. · 54e2d2b0
      Nat Goodspeed authored
      In autobuild.xml, specify today's build of the Boost package that includes the
      Boost.Context library, and whose boost::dcoroutines library uses Boost.Context
      exclusively instead of its previous context-switching underpinnings (source of
      the ucontext.h dependency).
      Add BOOST_CONTEXT_LIBRARY to Boost.cmake and Copy3rdPartyLibs.cmake. Link it
      with the viewer and with the lllogin.cpp test executable.
      Track new Boost package convention that our (early, unofficial) Boost.Coroutine
      library is now accessed as boost/dcoroutine/etc.h and boost::dcoroutines::etc.
      Remove #include <boost/coroutine/coroutine.hpp> from
      llviewerprecompiledheaders.h and lllogin.cpp: old rule that Boost.Coroutine
      header must be #included before anything else that might use ucontext.h is
      gone now that we no longer depend on ucontext.h. In fact remove
      -D_XOPEN_SOURCE in 00-Common.cmake because that was inserted specifically to
      work around a known problem with the ucontext.h facilities.
      54e2d2b0
  15. Oct 13, 2010
  16. Sep 21, 2010
  17. Aug 13, 2010
  18. Sep 25, 2009
  19. Jun 04, 2009
    • Nat Goodspeed's avatar
      DEV-32777: Use a canonical boost::coroutines::coroutine signature, relying on · 820d4a20
      Nat Goodspeed authored
      boost::bind() to pass any other coroutine arguments. This allows us to remove
      the LLCoroBase and LLCoro constructs, directly storing a coroutine object in
      our ptr_map. It also allows us to remove the multiple launch() overloads for
      multiple arguments. Finally, it lets us move most launch() functionality into
      a non-template method.
      820d4a20
  20. Jun 03, 2009
    • Nat Goodspeed's avatar
      DEV-32777: Introduce LLCoros, an LLSingleton registry of named coroutine · 285613b8
      Nat Goodspeed authored
      instances. LLCoros::launch() intends to address three issues:
      - ownership of coroutine instance
      - cleanup of coroutine instance when it terminates
      - central place to twiddle MSVC optimizations to bypass DEV-32777 crash.
      Initially coded on Mac; will address the third bullet on Windows.
      Adapt listenerNameForCoro() to consult LLCoros::getName() if applicable.
      Change LLLogin::Impl::connect() to use LLCoros::launch().
      LLCoros::getName() relies on patch to boost::coroutines::coroutine::self to
      introduce get_id().
      285613b8
Loading