Skip to content
Snippets Groups Projects
  1. Jan 11, 2021
  2. Dec 18, 2020
  3. Dec 17, 2020
    • Florian Fischer's avatar
      handle UnboundedBlockingMpscQueue spurious wake-ups · 82cf159a
      Florian Fischer authored
      A spurious wake-up can be produced by the new UnblockOnMainActorTest which
      triggers the assert(!mpscQueue.empty()) in UnboundedBlockingMpscQueue::get.
      
      Those spurious wake-ups are possible because the push and wake-up pair in
      UnboundedBlockingMpscQueue::put are not atomic.
      The following sequence diagram demonstrates a spurious wake-up:
      
         T1          T2            Q
         .           .            { }
        put(e)       .            { }
       push 54-57    .            {e}
         .         get()          {e}
         .        consume e       { }
         .           .            { }
         .         get()          { }
         .         block          { }
       unblock       .            { }
         .           .            { }
         .         wakeup         { }
         .           .            { }
                     X
             assert(!queue.Empty())
      
      To deal with spurious wake-ups we recheck the wake-up condition (a non empty queue)
      and block again if we find it empty.
      We assume spurious wake-ups are rare because it was difficult to reproduce them
      even with a dedicated Test (the new UnblockOnMainActorTest) therefore we declare
      the empty queue branch as unlikely.
      
      Fixes #4.
      82cf159a
  4. Dec 10, 2020
  5. Dec 09, 2020
  6. Dec 07, 2020
  7. Dec 01, 2020
    • Florian Schmaus's avatar
      Revert "[tests] don't undef NDEBUG for test executables" · a3b2a501
      Florian Schmaus authored
      This reverts commit b33ac93c.
      
      Now that logging is done independently from NDEBUG, we can re-enable
      "undef NDEBUG for test executables". The rationale that we want to
      undefine NDEBUG for test executable is that we want, even in release
      builds, asserts in tests enabled. Note that this also applies to
      asserts in the emper core library, if those are in *headers*.
      a3b2a501
  8. Nov 30, 2020
    • Florian Fischer's avatar
      [userspace-rcu] make the userspace-rcu dependecy optional · 28ea72ef
      Florian Fischer authored
      Disable the userpace-rcu support by default.
      Our used userspace-rcu flavor memb is rather new and not available in
      liburcu version 0.10 available in debian buster.
      This change switches from using DCE and "if constexpr" to the C
      preprocessor so the library is only needed when the userspace-rcu support
      is actually enabled.
      28ea72ef
  9. Nov 27, 2020
  10. Nov 20, 2020
  11. Nov 19, 2020
    • Florian Fischer's avatar
      [test] add AlarmActorTest · cbe2a880
      Florian Fischer authored
      Introduce a new Actor test using BinaryPrivateSemaphores and an Actor.
      Multiple fibers are created which create a BPS on the stack, submit it to the actor
      and wait on the semaphore.
      The Actor simply signals each semaphore it receives.
      cbe2a880
  12. Nov 17, 2020
  13. Nov 16, 2020
  14. Nov 10, 2020
  15. Nov 05, 2020
  16. Oct 27, 2020
  17. Jul 31, 2020
  18. Jul 12, 2018
  19. Aug 03, 2017
  20. Jul 11, 2017
  21. Jun 19, 2017
  22. Jun 18, 2017
    • Florian Schmaus's avatar
      Fix SimpleActorTest · 4e3c18f0
      Florian Schmaus authored
      The CPS already gets incremented by the
      SynchronizedFiber. Initializing the CPS with FIBER_COUNT means that
      the CPS will never become ready.
      4e3c18f0
Loading