1. 10 Dec, 2016 1 commit
  2. 09 Dec, 2016 1 commit
  3. 02 Dec, 2016 1 commit
    • Alexander Vershilov's avatar
      Install toplevel handler inside fork. · 895a131f
      Alexander Vershilov authored
      When rts is forked it doesn't update toplevel handler, so UserInterrupt
      exception is sent to Thread1 that doesn't exist in forked process.
      
      We install toplevel handler when fork so signal will be delivered to the
      new main thread.
      
      Fixes #12903
      
      Reviewers: simonmar, austin, erikd, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2770
      
      GHC Trac Issues: #12903
      895a131f
  4. 30 Nov, 2016 1 commit
    • Tamar Christina's avatar
      Update test output for Windows · dd9ba503
      Tamar Christina authored
      Following D2684 these two tests need to be updated:
      
       * T7037: timeout.exe now waits until all processes are finished.
                this makes T7037 reliable. So enabled.
      
       * T876: Unknown reason, allocations are much lower than before.
      
      Test Plan: ./validate
      
      Reviewers: austin, simonmar, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie, #ghc_windows_task_force
      
      Differential Revision: https://phabricator.haskell.org/D2759
      
      GHC Trac Issues: #12725, #12004
      dd9ba503
  5. 17 Oct, 2016 2 commits
  6. 02 Oct, 2016 1 commit
  7. 05 Sep, 2016 1 commit
    • takano-akio's avatar
      Make the test for #11108 less fragile · a7a960e4
      takano-akio authored
      This change should close #11108 by fixing the test case.
      
      This commit fixes two issues:
      
      * Make sure that each weak pointer we allocate has a constructor as the
        key, not a thunk. A failure to do so meant these weak pointers died
        prematurely on the 'ghci' WAY.
      
      * Don't print anything in the finalizer, because they are not guaranteed
        to run.
      
      Test Plan: validate
      
      Reviewers: austin, simonmar, erikd, bgamari
      
      Reviewed By: erikd, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2512
      
      GHC Trac Issues: #11108
      a7a960e4
  8. 01 Sep, 2016 1 commit
    • Tamar Christina's avatar
      Added support for deprecated POSIX functions on Windows. · e5ecb201
      Tamar Christina authored
      Summary:
      With the introduction of 8.0.1 We've stopped supporting in GHCi
      the use of POSIX functions under their deprecated names on Windows.
      
      This to be compatible with object and libraries from the most
      popular compilers on the platform (Microsoft and Intel compilers).
      
      However this brings a confusing disparity between the compiled and
      interpreted behavior since MingW-W64 does support the deprecated names.
      
      Also It seems clear that package writers won't update their packages to
      properly support Windows. As such I have added redirects in the RTS
      for the deprecated functions as listed on
      
      https://msdn.microsoft.com/en-us/library/ms235384.aspx.
      
      This won't export the functions (as in, they won't be in the symbol table
      of compiled code for the RTS.) but we inject them into the symbol table
      of the dynamic linker at startup.
      
      Test Plan:
      ./validate
      and
      
      make test TEST="ffi017 ffi021"
      
      Reviewers: thomie, simonmar, RyanGlScott, bgamari, austin, hvr, erikd
      
      Reviewed By: simonmar, bgamari
      
      Subscribers: RyanGlScott, #ghc_windows_task_force
      
      Differential Revision: https://phabricator.haskell.org/D2500
      
      GHC Trac Issues: #12209, #12497, #12496
      e5ecb201
  9. 29 Jun, 2016 1 commit
    • thomie's avatar
      Testsuite: use ignore_stderr/stdout instead of ignore_output · 1084d375
      thomie authored
      The problem with ignore_output is that it hides errors for WAY=ghci.
      GHCi always returns with exit code 0 (unless it is broken itself).
      
      For example: ghci015 must have been failing with compile errors for
      years, but we didn't notice because all output was ignored.
      
      Therefore, replace all uses of ignore_output with either ignore_stderr
      or ignore_stdout. In some cases I opted for adding the expected output.
      
      Update submodule hpc and stm.
      
      Reviewed by: simonmar
      
      Differential Revision: https://phabricator.haskell.org/D2367
      1084d375
  10. 28 Jun, 2016 3 commits
    • Facundo Domínguez's avatar
      Stop the simplifier from removing StaticPtr binds. · dd92c67b
      Facundo Domínguez authored
      Summary:
      We have the FloatOut pass create exported ids for floated StaticPtr
      bindings. The simplifier doesn't try to remove those.
      
      This patch also improves on 7fc20b by making a common definition
      collectStaticPtrSatArgs to test for StaticPtr binds.
      
      Fixes #12207.
      
      Test Plan: ./validate
      
      Reviewers: simonpj, austin, bgamari, simonmar, goldfire
      
      Reviewed By: simonpj
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2366
      
      GHC Trac Issues: #12207
      dd92c67b
    • thomie's avatar
      Testsuite: do not add -debug explicitly in .T file · 0eb03781
      thomie authored
      This prevents `cannot find -lHSrts_debug_p` when running `make
      TEST=T9078 WAY=profasm` (#9078).
      0eb03781
    • thomie's avatar
      Testsuite: open/close stdin/stdout/stderr explicitly · 58f0086b
      thomie authored
      This allows run_command's to contain `|`, and `no_stdin` isn't necessary
      anymore.
      
      Unfortunately it doesn't fix T7037 on Windows which I had hoped it would
      (testsuite driver tries to read a file that it just created itself, but
      the OS says it doesn't exist).
      
      The only drawback of this commit is that the command that the testsuite
      prints to the terminal (for debugging purposes) doesn't mention the
      files that stdout and stderr are redirected to anymore. This is probably
      ok.
      
      Update submodule unix.
      
      Differential Revision: https://phabricator.haskell.org/D1234
      58f0086b
  11. 20 Jun, 2016 1 commit
    • thomie's avatar
      Testsuite: mark tests expect broken · 1d938aa3
      thomie authored
      * CgStaticPointers, GcStaticPointers, ListStaticPointers,
        TcStaticPointers01, TcStaticPointers02:  #12207
      * T11535: #12210
      * ffi017/ffi021: #12209
      * T11108: #11108
      * T9646: #9646
      1d938aa3
  12. 18 Jun, 2016 1 commit
    • thomie's avatar
      Testsuite: run tests in <testdir>.run instead of /tmp · f72f23f9
      thomie authored
      As discussed in Phab:D1187, this approach makes it a bit easier to
      inspect the test directory while working on a new test.
      
      The only tests that needed changes are the ones that refer to files in
      ancestor directories. Those files are now copied directly into the test
      directory.
      
      validate still runs the tests in a temporary directory in /tmp, see
      `Note [Running tests in /tmp]` in testsuite/driver/runtests.py.
      
      Update submodule hpc.
      
      Reviewed by: simonmar
      
      Differential Revision: https://phabricator.haskell.org/D2333
      
      GHC Trac Issues: #11980
      f72f23f9
  13. 17 Jun, 2016 1 commit
    • Simon Marlow's avatar
      NUMA cleanups · 498ed266
      Simon Marlow authored
      - Move the numaMap and nNumaNodes out of RtsFlags to Capability.c
      - Add a test to tests/rts
      498ed266
  14. 13 Jun, 2016 1 commit
    • Tamar Christina's avatar
      Add thin library support to Windows too · 5cee88d7
      Tamar Christina authored
      Summary:
      Code already existed in the RTS to add thin library support for non-Windows
      operating systems. This adds it to Windows as well.
      
      ar thin libraries have the exact same format as normal archives except they
      have a different magic string and they don't copy the object files into the
      archive.
      
      Instead each header entry points to the location of the object file on disk.
      This is useful when a library is only created to satisfy a compile time dependency
      instead of to be distributed. This saves the time required for copying.
      
      Test Plan: ./validate and new test T11788
      
      Reviewers: austin, bgamari, simonmar, erikd
      
      Reviewed By: bgamari, simonmar
      
      Subscribers: thomie, #ghc_windows_task_force
      
      Differential Revision: https://phabricator.haskell.org/D2323
      
      GHC Trac Issues: #11788
      5cee88d7
  15. 04 Jun, 2016 1 commit
    • Peter Trommler's avatar
      RTS SMP: Use compiler built-ins on all platforms. · eda73a3a
      Peter Trommler authored
      Use C compiler builtins for atomic SMP primitives. This saves a lot
      of CPP ifdefs.
      
      Add test for atomic xchg:
      Test if __sync_lock_test_and_set() builtin stores the second argument.
      The gcc manual says the actual value stored is implementation defined.
      
      Test Plan: validate and eyeball generated assembler code
      
      Reviewers: kgardas, simonmar, hvr, bgamari, austin, erikd
      
      Reviewed By: simonmar
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2233
      eda73a3a
  16. 03 Jun, 2016 1 commit
    • Peter Trommler's avatar
      testsuite: Mark broken tests on powerpc64le · 1dadd9a9
      Peter Trommler authored
      Mark all failing tests that have a ticket for powerpc64 as broken. Most
      of these failures are due to the lack of linker support in the runtime
      system.
      
      Test Plan: validate on powerpc and AIX
      
      Reviewers: erikd, bgamari, simonmar, hvr, austin
      
      Reviewed By: austin
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D2289
      
      GHC Trac Issues: #11261, #11259, #11260, #11323
      1dadd9a9
  17. 18 May, 2016 1 commit
  18. 04 Apr, 2016 1 commit
  19. 24 Mar, 2016 1 commit
  20. 07 Mar, 2016 1 commit
  21. 25 Feb, 2016 3 commits
    • thomie's avatar
      Mark tests for #11643, #11644, #11645 and #9406 expect_broken · 90fa8cf2
      thomie authored
      For opt_ways or prof_ways only.
      
      indexed-types/should_compile/all.T called setTestOpts to not run
      the tests with opt_ways. Since I'm finding regressions for opt_ways, I
      removed it. This only makes a difference when running
      `./validate --slow` or `make slowtest`.
      
      Update submodule hpc.
      90fa8cf2
    • thomie's avatar
      Testsuite: for tests that use TH, omit *all* prof_ways · e02b8c8d
      thomie authored
      Instead of just profasm and profthreaded. And at least until
      -fexternal-interpreter is the default.
      
      Also:
        * WAY=profc doesn't exist anymore.
        * Omit all threaded_ways for conc039, not just a few.
      e02b8c8d
    • Peter Trommler's avatar
      testsuite: mark tests broken on powerpc64 · feb19eae
      Peter Trommler authored
      The following tests fail on powerpc64 and have a ticket.
      Mark those tests as expect_broken.
      
      Here are the details:
      The PowerPC native code generator does not support DWARF debug
      information. This is tracked in ticket #11261. Mark the respective
      tests broken on powerpc64.
      
      testsuite: mark print022 broken on powerpc64
      Ticket #11262 tracks difference in stdout for print022.
      
      testsuite: mark recomp015 broken on powerpc64
      testsuite: mark recomp011 broken on powerpc64
      This is tracked as ticket #11323 and #11260.
      
      testsuite: mark linker tests broken on powerpc64
      Ticket #11259 tracks tests failing because there is no RTS
      linker on powerpc64.
      
      Test Plan: validate
      
      Reviewers: erikd, austin, bgamari
      
      Reviewed By: bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1928
      
      GHC Trac Issues: #11259, #11260, #11261, #11262, #11323
      feb19eae
  22. 17 Feb, 2016 1 commit
  23. 29 Jan, 2016 1 commit
  24. 26 Jan, 2016 1 commit
    • thomie's avatar
      Fix segmentation fault when .prof file not writeable · 6d2bdfd8
      thomie authored
      There are two ways to do retainer profiling. Quoting from the user's guide:
        1. `+RTS -hr` "Breaks down the graph by retainer set"
        2. `+RTS -hr<cc> -h<x>`, where `-h<x>` is one of normal heap profiling
           break-down options (e.g. `-hc`), and `-hr<cc> means "Restrict the
           profile to closures with retainer sets containing cost-centre
           stacks with one of the specified cost centres at the top."
      
      Retainer profiling writes to a .hp file, like the other heap profiling
      options, but also to a .prof file. Therefore, when the .prof file is not
      writeable for whatever reason, retainer profiling should be turned off
      completely.
      
      This worked ok when running the program with `+RTS -hr` (option 1), but a
      segfault would occur when using `+RTS -hr<cc> -h<x>`, with `x!=r` (option 2).
      
      This commit fixes that.
      
      Reviewed by: bgamari
      
      Differential Revision: https://phabricator.haskell.org/D1849
      
      GHC Trac Issues: #11489
      6d2bdfd8
  25. 23 Dec, 2015 1 commit
    • MarcelineVQ's avatar
      Modify Nmax to maxN Trac #10728 · 7ed0da6c
      MarcelineVQ authored
      Added test and changed -Nmax to -maxN, -n was taken
      
      Noticed strange -m behavoir and fixed -m from quietly
      ignoring being passed invalid opts, e.g. "-msasd"
      
      Reviewers: simonmar, hvr, austin, thomie, bgamari
      
      Reviewed By: hvr, thomie, bgamari
      
      Subscribers: bgamari, hvr, thomie, simonmar
      
      Differential Revision: https://phabricator.haskell.org/D1677
      
      GHC Trac Issues: #10728
      7ed0da6c
  26. 24 Sep, 2015 1 commit
  27. 18 Aug, 2015 1 commit
    • Tamar Christina's avatar
      Fix rdynamic flag and test on Windows · b17ec567
      Tamar Christina authored
      The rdynamic tests and feature are marked broken on windows.
      This is because the flag used doesn't exist and the symbol lookup
      in the test did not account for platform differences in name mangling.
      
      This commit fixes the flag and tests for rdynamic on windows.
      
      Test Plan:
      make TEST="rdynamic"
      
      on both x86 and x86_64
      
      Reviewers: austin, thomie, bgamari
      
      Reviewed By: thomie, bgamari
      
      Subscribers: #ghc_windows_task_force
      
      Differential Revision: https://phabricator.haskell.org/D1149
      
      GHC Trac Issues: #9381
      b17ec567
  28. 31 Jul, 2015 1 commit
    • Simon Marlow's avatar
      Fix #7919 (again) · 7cf87dfb
      Simon Marlow authored
      Summary:
      The fix is a bit clunky, and is perhaps not the best fix, but I'm not
      sure how much work it would be to fix it the other way (see comments
      for more info).
      
      Test Plan: T7919 doesn't crash
      
      Reviewers: austin, rwbarton, ezyang, bgamari
      
      Subscribers: thomie
      
      Differential Revision: https://phabricator.haskell.org/D1113
      
      GHC Trac Issues: #7919
      7cf87dfb
  29. 22 Jul, 2015 1 commit
    • gcampax's avatar
      Two step allocator for 64-bit systems · 0d1a8d09
      gcampax authored
      Summary:
      The current OS memory allocator conflates the concepts of allocating
      address space and allocating memory, which makes the HEAP_ALLOCED()
      implementation excessively complicated (as the only thing it cares
      about is address space layout) and slow. Instead, what we want
      is to allocate a single insanely large contiguous block of address
      space (to make HEAP_ALLOCED() checks fast), and then commit subportions
      of that in 1MB blocks as we did before.
      This is currently behind a flag, USE_LARGE_ADDRESS_SPACE, that is only enabled for
      certain OSes.
      
      Test Plan: validate
      
      Reviewers: simonmar, ezyang, austin
      
      Subscribers: thomie, carter
      
      Differential Revision: https://phabricator.haskell.org/D524
      
      GHC Trac Issues: #9706
      0d1a8d09
  30. 18 Jul, 2015 1 commit
  31. 07 Jul, 2015 1 commit
    • Sergei Trofimovich's avatar
      fix EBADF unqueueing in select backend (Trac #10590) · 5857e0af
      Sergei Trofimovich authored
      Alexander found a interesting case:
      1. We have a queue of two waiters in a blocked_queue
      2. first file descriptor changes state to RUNNABLE,
         second changes to INVALID
      3. awaitEvent function dequeued RUNNABLE thread to a
         run queue and attempted to dequeue INVALID descriptor
         to a run queue.
      
      Unqueueing INVALID fails thusly:
              #3  0x000000000045cf1c in barf (s=0x4c1cb0 "removeThreadFromDeQueue: not found")
                                     at rts/RtsMessages.c:42
              #4  0x000000000046848b in removeThreadFromDeQueue (...) at rts/Threads.c:249
              #5  0x000000000049a120 in removeFromQueues (...) at rts/RaiseAsync.c:719
              #6  0x0000000000499502 in throwToSingleThreaded__ (...) at rts/RaiseAsync.c:67
              #7  0x0000000000499555 in throwToSingleThreaded (..) at rts/RaiseAsync.c:75
              #8  0x000000000047c27d in awaitEvent (wait=rtsFalse) at rts/posix/Select.c:415
      
      The problem here is a throwToSingleThreaded function that tries
      to unqueue a TSO from blocked_queue, but awaitEvent function
      leaves blocked_queue in a inconsistent state while traverses
      over blocked_queue:
      
            case RTS_FD_IS_READY:
                IF_DEBUG(scheduler,
                    debugBelch("Waking up blocked thread %lu\n",
                               (unsigned long)tso->id));
                tso->why_blocked = NotBlocked;
                tso->_link = END_TSO_QUEUE;              // Here we break the queue head
                pushOnRunQueue(&MainCapability,tso);
                break;
      Signed-off-by: default avatarSergei Trofimovich <siarheit@google.com>
      
      Test Plan: tested on a sample from T10590
      
      Reviewers: austin, bgamari, simonmar
      
      Reviewed By: bgamari, simonmar
      
      Subscribers: qnikst, thomie, bgamari
      
      Differential Revision: https://phabricator.haskell.org/D1024
      
      GHC Trac Issues: #10590, #4934
      5857e0af
  32. 05 Jul, 2015 1 commit
  33. 03 Jul, 2015 1 commit
    • Peter Trommler's avatar
      Implement PowerPC 64-bit native code backend for Linux · d3c1dda6
      Peter Trommler authored
      Extend the PowerPC 32-bit native code generator for "64-bit
      PowerPC ELF Application Binary Interface Supplement 1.9" by
      Ian Lance Taylor and "Power Architecture 64-Bit ELF V2 ABI Specification --
      OpenPOWER ABI for Linux Supplement" by IBM.
      The latter ABI is mainly used on POWER7/7+ and POWER8
      Linux systems running in little-endian mode. The code generator
      supports both static and dynamic linking. PowerPC 64-bit
      code for ELF ABI 1.9 and 2 is mostly position independent
      anyway, and thus so is all the code emitted by the code
      generator. In other words, -fPIC does not make a difference.
      
      rts/stg/SMP.h support is implemented.
      
      Following the spirit of the introductory comment in
      PPC/CodeGen.hs, the rest of the code is a straightforward
      extension of the 32-bit implementation.
      
      Limitations:
      * Code is generated only in the medium code model, which
        is also gcc's default
      * Local symbols are not accessed directly, which seems to
        also be the case for 32-bit
      * LLVM does not work, but this does not work on 32-bit either
      * Must use the system runtime linker in GHCi, because the
        GHC linker for "static" object files (rts/Linker.c) for
        PPC 64-bit is not implemented. The system runtime
        (dynamic) linker works.
      * The handling of the system stack (register 1) is not ELF-
        compliant so stack traces break. Instead of allocating a new
        stack frame, spill code should use the "official" spill area
        in the current stack frame and deallocation code should restore
        the back chain
      * DWARF support is missing
      
      Fixes #9863
      
      Test Plan: validate (on powerpc, too)
      
      Reviewers: simonmar, trofi, erikd, austin
      
      Reviewed By: trofi
      
      Subscribers: bgamari, arnons1, kgardas, thomie
      
      Differential Revision: https://phabricator.haskell.org/D629
      
      GHC Trac Issues: #9863
      d3c1dda6
  34. 11 Jun, 2015 1 commit
  35. 31 May, 2015 1 commit