1. 18 Jul, 2015 1 commit
  2. 13 Jul, 2015 1 commit
  3. 26 Jun, 2015 1 commit
    • Simon Marlow's avatar
      Fix deadlock (#10545) · 111ba4be
      Simon Marlow authored
      yieldCapability() was not prepared to be called by a Task that is not
      either a worker or a bound Task.  This could happen if we ended up in
      yieldCapability via this call stack:
      
      performGC()
      scheduleDoGC()
      requestSync()
      yieldCapability()
      
      and there were a few other ways this could happen via requestSync.
      The fix is to handle this case in yieldCapability(): when the Task is
      not a worker or a bound Task, we put it on the returning_workers
      queue, where it will be woken up again.
      
      Summary of changes:
      
      * `yieldCapability`: factored out subroutine waitForWorkerCapability`
      * `waitForReturnCapability` renamed to `waitForCapability`, and
        factored out subroutine `waitForReturnCapability`
      * `releaseCapabilityAndQueue` worker renamed to `enqueueWorker`, does
        not take a lock and no longer tests if `!isBoundTask()`
      * `yieldCapability` adjusted for refactorings, only change in behavior
        is when it is not a worker or bound task.
      
      Test Plan:
      * new test concurrent/should_run/performGC
      * validate
      
      Reviewers: niteria, austin, ezyang, bgamari
      
      Subscribers: thomie, bgamari
      
      Differential Revision: https://phabricator.haskell.org/D997
      
      GHC Trac Issues: #10545
      111ba4be
  4. 19 Jun, 2015 1 commit
  5. 12 Jun, 2015 1 commit
  6. 09 Jun, 2015 1 commit
  7. 12 Nov, 2014 2 commits
  8. 28 Aug, 2014 1 commit
  9. 01 Aug, 2014 1 commit
    • Simon Marlow's avatar
      interruptible() was not returning true for BlockedOnSTM (#9379) · 9d9a5546
      Simon Marlow authored
      Summary:
      There's an knock-on fix in HeapStackCheck.c which is potentially
      scary, but I'm pretty confident is OK.  See comment for details.
      
      Test Plan:
      I've run all the STM
      tests I can find, including libraries/stm/tests/stm049 with +RTS -N8
      and some of the constants bumped to make it more of a stress test.
      
      Reviewers: hvr, rwbarton, austin
      
      Subscribers: simonmar, relrod, ezyang, carter
      
      Differential Revision: https://phabricator.haskell.org/D104
      
      GHC Trac Issues: #9379
      9d9a5546
  10. 28 Jul, 2014 1 commit
    • Jost Berthold's avatar
      use GHC-7.8.3's values for thread block reason (fixes #9333) · 4ee8c273
      Jost Berthold authored
      Summary:
      For now, BlockedOnMVar and BlockedOnMVarRead are not distinguished.
      Making the distinction would mean to change an exported datatype
      (API change). Code for this change is included but commented out.
      
      The patch adds a test for the threadstatus, which retrieves status
      BlockedOnMVar for two threads blocked on writing and reading an MVar.
      
      Test Plan: ran validate, including the new test
      
      Reviewers: simonmar, austin, ezyang
      
      Reviewed By: austin, ezyang
      
      Subscribers: phaskell, simonmar, relrod, carter
      
      Differential Revision: https://phabricator.haskell.org/D83
      4ee8c273
  11. 30 Jun, 2014 1 commit
    • tibbe's avatar
      Re-add more primops for atomic ops on byte arrays · 4ee4ab01
      tibbe authored
      This is the second attempt to add this functionality. The first
      attempt was reverted in 950fcae4, due
      to register allocator failure on x86. Given how the register
      allocator currently works, we don't have enough registers on x86 to
      support cmpxchg using complicated addressing modes. Instead we fall
      back to a simpler addressing mode on x86.
      
      Adds the following primops:
      
       * atomicReadIntArray#
       * atomicWriteIntArray#
       * fetchSubIntArray#
       * fetchOrIntArray#
       * fetchXorIntArray#
       * fetchAndIntArray#
      
      Makes these pre-existing out-of-line primops inline:
      
       * fetchAddIntArray#
       * casIntArray#
      4ee4ab01
  12. 26 Jun, 2014 1 commit
  13. 24 Jun, 2014 1 commit
    • tibbe's avatar
      Add more primops for atomic ops on byte arrays · d8abf85f
      tibbe authored
      Summary:
      Add more primops for atomic ops on byte arrays
      
      Adds the following primops:
      
       * atomicReadIntArray#
       * atomicWriteIntArray#
       * fetchSubIntArray#
       * fetchOrIntArray#
       * fetchXorIntArray#
       * fetchAndIntArray#
      
      Makes these pre-existing out-of-line primops inline:
      
       * fetchAddIntArray#
       * casIntArray#
      d8abf85f
  14. 30 May, 2014 1 commit
  15. 04 May, 2014 1 commit
  16. 02 May, 2014 1 commit
    • Simon Marlow's avatar
      Per-thread allocation counters and limits · b0534f78
      Simon Marlow authored
      This tracks the amount of memory allocation by each thread in a
      counter stored in the TSO.  Optionally, when the counter drops below
      zero (it counts down), the thread can be sent an asynchronous
      exception: AllocationLimitExceeded.  When this happens, given a small
      additional limit so that it can handle the exception.  See
      documentation in GHC.Conc for more details.
      
      Allocation limits are similar to timeouts, but
      
        - timeouts use real time, not CPU time.  Allocation limits do not
          count anything while the thread is blocked or in foreign code.
      
        - timeouts don't re-trigger if the thread catches the exception,
          allocation limits do.
      
        - timeouts can catch non-allocating loops, if you use
          -fno-omit-yields.  This doesn't work for allocation limits.
      
      I couldn't measure any impact on benchmarks with these changes, even
      for nofib/smp.
      b0534f78
  17. 09 Oct, 2013 1 commit
  18. 02 Oct, 2013 1 commit
  19. 30 Sep, 2013 1 commit
    • rwbarton's avatar
      Deal with failures for T367, T367_letnoescape under ghci · 18f2895d
      rwbarton authored
      These tests had a very short timeout (0.3 s). With WAY=ghci,
      the time ghci takes to start up and compile the test modules
      is counted in this timeout, and that causes the tests to fail.
      
      T367 really needs the very short timeout, so this commit disables
      the ghci way for T367. T367_letnoescape can handle any timeout,
      so I bumped up the timeout to 6 s to give ghci time to start up.
      18f2895d
  20. 21 Aug, 2013 2 commits
  21. 24 Jul, 2013 1 commit
  22. 14 Jul, 2013 1 commit
  23. 10 Jul, 2013 1 commit
  24. 09 Jul, 2013 1 commit
  25. 02 Jul, 2013 2 commits
  26. 14 Feb, 2013 1 commit
  27. 11 Feb, 2013 3 commits
  28. 07 Feb, 2013 1 commit
    • ian@well-typed.com's avatar
      Pass the test name to the test options · effc8af9
      ian@well-typed.com authored
      This allows them to give framework failures.
      
      I also had to change how setTestOpts works. Now, rather than applying
      the options to the directory's "default options", it just stores the
      options to be applied for each test (i.e. once we know the test name).
      effc8af9
  29. 03 Feb, 2013 1 commit
    • ian@well-typed.com's avatar
      Tidy up some tests · 4200e0aa
      ian@well-typed.com authored
      We now use pre_cmd rather than cmd_prefix wherever possible.
      Also, pass "-s --no-print-directory" whenever we use pre_cmd.
      4200e0aa
  30. 25 Jan, 2013 1 commit
  31. 26 Sep, 2012 1 commit
  32. 25 Sep, 2012 1 commit
  33. 24 Sep, 2012 1 commit
  34. 18 Jul, 2012 1 commit
  35. 12 Apr, 2012 1 commit