1. 29 Mar, 2010 1 commit
    • Simon Marlow's avatar
      New implementation of BLACKHOLEs · 5d52d9b6
      Simon Marlow authored
      This replaces the global blackhole_queue with a clever scheme that
      enables us to queue up blocked threads on the closure that they are
      blocked on, while still avoiding atomic instructions in the common
      case.
      
      Advantages:
      
       - gets rid of a locked global data structure and some tricky GC code
         (replacing it with some per-thread data structures and different
         tricky GC code :)
      
       - wakeups are more prompt: parallel/concurrent performance should
         benefit.  I haven't seen anything dramatic in the parallel
         benchmarks so far, but a couple of threading benchmarks do improve
         a bit.
      
       - waking up a thread blocked on a blackhole is now O(1) (e.g. if
         it is the target of throwTo).
      
       - less sharing and better separation of Capabilities: communication
         is done with messages, the data structures are strictly owned by a
         Capability and cannot be modified except by sending messages.
      
       - this change will utlimately enable us to do more intelligent
         scheduling when threads block on each other.  This is what started
         off the whole thing, but it isn't done yet (#3838).
      
      I'll be documenting all this on the wiki in due course.
      5d52d9b6
  2. 01 Apr, 2010 2 commits
  3. 26 Mar, 2010 1 commit
  4. 25 Mar, 2010 2 commits
  5. 31 Mar, 2010 1 commit
  6. 29 Mar, 2010 1 commit
  7. 30 Mar, 2010 1 commit
  8. 03 Apr, 2010 3 commits
  9. 01 Apr, 2010 1 commit
  10. 31 Mar, 2010 2 commits
    • Ian Lynagh's avatar
      Pass "-i org.haskell.GHC" to packagemaker when building the OS X installer · db9f94f7
      Ian Lynagh authored
      This seems to fix this failure:
      [...]
      ** BUILD SUCCEEDED **
      rm -f -f GHC-system.pmdoc/*-contents.xml
      /Developer/usr/bin/packagemaker -v --doc GHC-system.pmdoc\
                   -o /Users/ian/to_release/ghc-6.12.1.20100330/GHC-6.12.1.20100330-i386.pkg
      2010-03-31 15:08:15.695 packagemaker[13909:807] Setting to : 0 (null)
      2010-03-31 15:08:15.709 packagemaker[13909:807] Setting to : 0 org.haskell.glasgowHaskellCompiler.ghc.pkg
      2010-03-31 15:08:15.739 packagemaker[13909:807] relocate: (null) 0
      2010-03-31 15:08:15.740 packagemaker[13909:807] *** Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '*** -[NSXMLDocument initWithXMLString:options:error:]: nil argument'
      2010-03-31 15:08:15.741 packagemaker[13909:807] Stack: (
          2511962091,
          2447007291,
          2511961547,
          2511961610,
          2432803204,
          453371,
          447720,
          436209,
          435510,
          9986,
          9918
      )
      make[1]: *** [framework-pkg] Trace/BPT trap
      make: *** [framework-pkg] Error 2
      db9f94f7
    • Ian Lynagh's avatar
      Use machdepCCOpts when compiling the file to toggle -(no-)rtsopts · 07846c5a
      Ian Lynagh authored
      Should fix toggling on OS X "Snow Leopard". Diagnosed by Roman Leshchinskiy.
      07846c5a
  11. 30 Mar, 2010 6 commits
  12. 29 Mar, 2010 6 commits
  13. 27 Mar, 2010 1 commit
  14. 26 Mar, 2010 5 commits
  15. 25 Mar, 2010 2 commits
  16. 24 Mar, 2010 1 commit
  17. 25 Mar, 2010 3 commits
    • Simon Marlow's avatar
      A sanity check · 18f1d72e
      Simon Marlow authored
      18f1d72e
    • Simon Marlow's avatar
      do_checks: do not set HpAlloc if the stack check fails · 5c3ea9fb
      Simon Marlow authored
      This fixes a very rare heap corruption bug, whereby
      
       - a context switch is requested, which sets HpLim to zero
         (contextSwitchCapability(), called by the timer signal or
         another Capability).
      
       - simultaneously a stack check fails, in a code fragment that has
         both a stack and a heap check.
      
      The RTS then assumes that a heap-check failure has occurred and
      subtracts HpAlloc from Hp, although in fact it was a stack-check
      failure and retreating Hp will overwrite valid heap objects.  The bug
      is that HpAlloc should only be set when Hp has been incremented by the
      heap check.  See comments in rts/HeapStackCheck.cmm for more details.
      
      This bug is probably incredibly rare in practice, but I happened to be
      working on a test that triggers it reliably:
      concurrent/should_run/throwto001, compiled with -O -threaded, args 30
      300 +RTS -N2, run repeatedly in a loop.
      5c3ea9fb
    • Simon Marlow's avatar
      comments and formatting only · 813f208a
      Simon Marlow authored
      813f208a
  18. 24 Mar, 2010 1 commit