GHC issueshttps://gitlab.haskell.org/ghc/ghc/-/issues2019-07-07T18:04:31Zhttps://gitlab.haskell.org/ghc/ghc/-/issues/15486primops.txt.pp still has support for WORD_SIZE_IN_BITS < 322019-07-07T18:04:31ZChaiTRexprimops.txt.pp still has support for WORD_SIZE_IN_BITS < 32Was support for `WORD_SIZE_IN_BITS < 32` dropped? According to [this GHC commit](https://github.com/ghc/ghc/commit/b38f08350d5c0efaa613f2f6c67dad5366aac271), it appears that that support was dropped about seven years ago. Also, `find -ty...Was support for `WORD_SIZE_IN_BITS < 32` dropped? According to [this GHC commit](https://github.com/ghc/ghc/commit/b38f08350d5c0efaa613f2f6c67dad5366aac271), it appears that that support was dropped about seven years ago. Also, `find -type f | xargs -n 5 egrep 'WORD_SIZE_IN_BITS\s*<\s*32'` only finds mention of it in `primops.txt.pp`.
If support for that was dropped, [the current version of compiler/prelude/primops.txt.pp](https://github.com/ghc/ghc/blob/9897f6783a58265d5eaef5fb06f04320c7737e87/compiler/prelude/primops.txt.pp) has dead code and misleading documentation (that's apparently propagated to [GHC.Prim documentation](https://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/GHC-Prim.html)) that might cause programmers to expend unnecessary effort supporting `WORD_SIZE_IN_BITS < 32` in their own code.
The following documentation describes a situation that can no longer happen and continues on incorrectly past these two paragraphs:
> Haskell98 specifies that signed integers (type `Int` must contain at least 30 bits. GHC always implements `Int` using the primitive type `Int#`, whose size equals the `MachDeps.h` constant `WORD_SIZE_IN_BITS`.
>
> This is normally set based on the `config.h` parameter `SIZEOF_HSWORD`, i.e., 32 bits on 32-bit machines, 64 bits on 64-bit machines. However, it can also be explicitly set to a smaller number, e.g., 31 bits, to allow the possibility of using tag bits. Currently GHC itself has only 32-bit and 64-bit variants, **but 30 or 31-bit code can be exported as an external core file for use in other back ends**.
The following is dead code. Further, `INT32` and `WORD32` throughout the document should be replaced with `Int#` and `Word#`:
```c
#if WORD_SIZE_IN_BITS < 32
#define INT32 Int32#
#define WORD32 Word32#
#else
#define INT32 Int#
#define WORD32 Word#
#endif
```
Also, all code inclusively between `#if WORD_SIZE_IN_BITS < 32` lines and their matching `#endif`s can be eliminated.
----
On the other hand, if `WORD_SIZE_IN_BITS < 32` **is** still supported, there are a lot of cases wherein a 64-bit version of an instruction uses `INT64` or `WORD64` in its type signature, but the 32-bit version uses `Int#` or `Word#`, which robs programmers of the ability to use speedy hardware instructions on full untagged `Int32#`s or `Word32#`s. Also, the `Double#` decoder to two `Word#`s for the mantissa assumes that the `Word#`s can hold a full 32 bits according to its documentation. There are some other problems that I've forgotten as well.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | tibbe |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"primops.txt.pp still has support for WORD_SIZE_IN_BITS < 32","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["tibbe"],"type":"Bug","description":"Was support for `WORD_SIZE_IN_BITS < 32` dropped? According to [https://github.com/ghc/ghc/commit/b38f08350d5c0efaa613f2f6c67dad5366aac271 this GHC commit], it appears that that support was dropped about seven years ago. Also, `find -type f | xargs -n 5 egrep 'WORD_SIZE_IN_BITS\\s*<\\s*32'` only finds mention of it in `primops.txt.pp`.\r\n\r\nIf support for that was dropped, [https://github.com/ghc/ghc/blob/9897f6783a58265d5eaef5fb06f04320c7737e87/compiler/prelude/primops.txt.pp the current version of compiler/prelude/primops.txt.pp] has dead code and misleading documentation (that's apparently propagated to [https://hackage.haskell.org/package/ghc-prim-0.5.2.0/docs/GHC-Prim.html GHC.Prim documentation]) that might cause programmers to expend unnecessary effort supporting `WORD_SIZE_IN_BITS < 32` in their own code.\r\n\r\nThe following documentation describes a situation that can no longer happen and continues on incorrectly past these two paragraphs:\r\n\r\n>Haskell98 specifies that signed integers (type `Int` must contain at least 30 bits. GHC always implements `Int` using the primitive type `Int#`, whose size equals the `MachDeps.h` constant `WORD_SIZE_IN_BITS`.\r\n>\r\n>This is normally set based on the `config.h` parameter `SIZEOF_HSWORD`, i.e., 32 bits on 32-bit machines, 64 bits on 64-bit machines. However, it can also be explicitly set to a smaller number, e.g., 31 bits, to allow the possibility of using tag bits. Currently GHC itself has only 32-bit and 64-bit variants, '''but 30 or 31-bit code can be exported as an external core file for use in other back ends'''.\r\n\r\nThe following is dead code. Further, `INT32` and `WORD32` throughout the document should be replaced with `Int#` and `Word#`:\r\n\r\n{{{#!c\r\n#if WORD_SIZE_IN_BITS < 32\r\n#define INT32 Int32#\r\n#define WORD32 Word32#\r\n#else\r\n#define INT32 Int#\r\n#define WORD32 Word#\r\n#endif\r\n}}}\r\n\r\nAlso, all code inclusively between `#if WORD_SIZE_IN_BITS < 32` lines and their matching `#endif`s can be eliminated.\r\n\r\n----\r\n\r\nOn the other hand, if `WORD_SIZE_IN_BITS < 32` '''is''' still supported, there are a lot of cases wherein a 64-bit version of an instruction uses `INT64` or `WORD64` in its type signature, but the 32-bit version uses `Int#` or `Word#`, which robs programmers of the ability to use speedy hardware instructions on full untagged `Int32#`s or `Word32#`s. Also, the `Double#` decoder to two `Word#`s for the mantissa assumes that the `Word#`s can hold a full 32 bits according to its documentation. There are some other problems that I've forgotten as well.","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1https://gitlab.haskell.org/ghc/ghc/-/issues/15485GHC uses 300% CPU when calling into blocking C call2023-12-01T13:50:01ZoconnoreGHC uses 300% CPU when calling into blocking C callHello,
I'm trying to write a program that modifies /etc/passwd safely, and so I wrote a function that looks like this:
```hs
lockPwd f = bracket main recover (\_ -> f)
where
mode = unionFileModes ownerReadMode ownerWriteMode
...Hello,
I'm trying to write a program that modifies /etc/passwd safely, and so I wrote a function that looks like this:
```hs
lockPwd f = bracket main recover (\_ -> f)
where
mode = unionFileModes ownerReadMode ownerWriteMode
main = do
fd <- openFd "/etc/.pwd.lock" WriteOnly (Just mode) defaultFileFlags
putStrLn "waiting to set lock"
waitToSetLock fd (WriteLock, AbsoluteSeek, 0, 0)
putStrLn "got lock"
return fd
recover = flip setLock (Unlock, AbsoluteSeek, 0, 0)
```
When I run it, my fans go wild, and CPU usage hits 300%.
/u/gelisam did some more in depth investigation here: https://www.reddit.com/r/haskell/comments/94wbfc/systemunixiowaittosetlock_call_results_in_300_cpu/e3p7sks/
> Googling confirms that the parallel gc is using spin locks. So I think what is happening is that the waitToSetLock call makes the current thread unavailable for garbage collection (I don't know if that means the thread is "descheduled" as in the linked issue), which then causes the other threads to spin-lock while waiting for that thread at the next parallel GC. The problem still occurs with the latest release, GHC 8.4.3, and I could not find an existing issue describing the problem, so please file a ticket.
Maybe an argument could be made that this waitToSetLock call should be converted to be [interruptible](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ffi-chap.html#interruptible-foreign-calls), but it also seems like I should be able to make my haskell program block patiently if I want it to.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Runtime System |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"GHC uses 300% CPU when calling into blocking C call","status":"New","operating_system":"","component":"Runtime System","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"Hello,\r\n\r\nI'm trying to write a program that modifies /etc/passwd safely, and so I wrote a function that looks like this:\r\n\r\n{{{#!hs\r\nlockPwd f = bracket main recover (\\_ -> f)\r\n where\r\n mode = unionFileModes ownerReadMode ownerWriteMode\r\n main = do\r\n fd <- openFd \"/etc/.pwd.lock\" WriteOnly (Just mode) defaultFileFlags\r\n putStrLn \"waiting to set lock\"\r\n waitToSetLock fd (WriteLock, AbsoluteSeek, 0, 0)\r\n putStrLn \"got lock\"\r\n return fd\r\n recover = flip setLock (Unlock, AbsoluteSeek, 0, 0)\r\n}}}\r\n\r\nWhen I run it, my fans go wild, and CPU usage hits 300%.\r\n\r\n/u/gelisam did some more in depth investigation here: https://www.reddit.com/r/haskell/comments/94wbfc/systemunixiowaittosetlock_call_results_in_300_cpu/e3p7sks/\r\n\r\n> Googling confirms that the parallel gc is using spin locks. So I think what is happening is that the waitToSetLock call makes the current thread unavailable for garbage collection (I don't know if that means the thread is \"descheduled\" as in the linked issue), which then causes the other threads to spin-lock while waiting for that thread at the next parallel GC. The problem still occurs with the latest release, GHC 8.4.3, and I could not find an existing issue describing the problem, so please file a ticket.\r\n\r\nMaybe an argument could be made that this waitToSetLock call should be converted to be [[https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/ffi-chap.html#interruptible-foreign-calls|interruptible]], but it also seems like I should be able to make my haskell program block patiently if I want it to. ","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1https://gitlab.haskell.org/ghc/ghc/-/issues/15484MultiLayerModules and T13701 timeout on i386 Linux2019-07-07T18:04:32ZBen GamariMultiLayerModules and T13701 timeout on i386 LinuxCircleCI's Linux/i386 configuration fails with timeouts on `MultiLayerModules`, `T13701`,
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version ...CircleCI's Linux/i386 configuration fails with timeouts on `MultiLayerModules`, `T13701`,
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"MultiLayerModules and T13701 timeout on i386 Linux","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"CircleCI's Linux/i386 configuration fails with timeouts on `MultiLayerModules`, `T13701`, ","type_of_failure":"OtherFailure","blocking":[]} -->8.10.1Alp MestanogullariAlp Mestanogullarihttps://gitlab.haskell.org/ghc/ghc/-/issues/15483ghc -M requires -dep-suffix for no good reason2021-09-17T14:17:53ZArtem Pelenitsynghc -M requires -dep-suffix for no good reasonDoing
```
ghc -M Foo.hs
```
gives
```
You must specify at least one -dep-suffix
```
I went to the documentation and noticed ([7.8.12](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/separate_compilation.html#makefile-...Doing
```
ghc -M Foo.hs
```
gives
```
You must specify at least one -dep-suffix
```
I went to the documentation and noticed ([7.8.12](https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/separate_compilation.html#makefile-dependencies)) an example:
```
depend :
ghc -dep-suffix '' -M $(HC_OPTS) $(SRCS)
```
So, empty suffix is fine. Why not default to empty string then?
I found a commit which introduced the requirement ([af072fc](https://github.com/ghc/ghc/commit/af072fc35d8dbe7962e62700da052593e999c0ef)): it says, it fixed #7381, and this doesn't seem to do anything with `dep-suffix` in particular. So, maybe there is no good reason to require that.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 8.4.3 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Driver |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"ghc -M requires -dep-suffix for no good reason","status":"New","operating_system":"","component":"Driver","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"FeatureRequest","description":"Doing\r\n{{{\r\nghc -M Foo.hs\r\n}}}\r\ngives\r\n{{{\r\nYou must specify at least one -dep-suffix\r\n}}}\r\nI went to the documentation and noticed ([https://downloads.haskell.org/~ghc/latest/docs/html/users_guide/separate_compilation.html#makefile-dependencies 7.8.12]) an example:\r\n{{{\r\ndepend :\r\n ghc -dep-suffix '' -M $(HC_OPTS) $(SRCS)\r\n}}}\r\nSo, empty suffix is fine. Why not default to empty string then?\r\n\r\nI found a commit which introduced the requirement ([https://github.com/ghc/ghc/commit/af072fc35d8dbe7962e62700da052593e999c0ef af072fc]): it says, it fixed #7381, and this doesn't seem to do anything with `dep-suffix` in particular. So, maybe there is no good reason to require that.","type_of_failure":"OtherFailure","blocking":[]} -->⊥https://gitlab.haskell.org/ghc/ghc/-/issues/15482the_gc_thread variable from GC.c is not aligned to 642019-07-07T18:04:32ZGleb Popovthe_gc_thread variable from GC.c is not aligned to 64When compiling GHC with clang and -march=native flag, the compiler emits vmovaps instruction with unaligned operand for this code:
```
* thread #1, name = 'ghc-pkg', stop reason = signal SIGBUS: hardware error
frame #0: 0x0000000804...When compiling GHC with clang and -march=native flag, the compiler emits vmovaps instruction with unaligned operand for this code:
```
* thread #1, name = 'ghc-pkg', stop reason = signal SIGBUS: hardware error
frame #0: 0x0000000804e476c6 libHSrts-ghc8.0.2.so`initGcThreads [inlined] new_gc_thread(n=0) at GC.c:818
815 ws->todo_q = newWSDeque(128);
816 ws->todo_overflow = NULL;
817 ws->n_todo_overflow = 0;
-> 818 ws->todo_large_objects = NULL;
819
820 ws->part_list = NULL;
821 ws->n_part_blocks = 0;
```
Research done by another FreeBSD developer suggested that this is due
```
StgWord8 the_gc_thread[sizeof(gc_thread) + 64 * sizeof(gen_workspace)];
```
not being aligned to 64 bytes, because struct gc_thread have no alignment specifier.
Detailed information can be found in FreeBSD bugzilla: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226059
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"the_gc_thread variable from GC.c is not aligned to 64","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"When compiling GHC with clang and -march=native flag, the compiler emits vmovaps instruction with unaligned operand for this code:\r\n\r\n\r\n{{{\r\n* thread #1, name = 'ghc-pkg', stop reason = signal SIGBUS: hardware error\r\n frame #0: 0x0000000804e476c6 libHSrts-ghc8.0.2.so`initGcThreads [inlined] new_gc_thread(n=0) at GC.c:818\r\n 815 ws->todo_q = newWSDeque(128);\r\n 816 ws->todo_overflow = NULL;\r\n 817 ws->n_todo_overflow = 0;\r\n-> 818 ws->todo_large_objects = NULL;\r\n 819 \r\n 820 ws->part_list = NULL;\r\n 821 ws->n_part_blocks = 0;\r\n}}}\r\n\r\n\r\nResearch done by another FreeBSD developer suggested that this is due\r\n\r\n{{{\r\n\r\nStgWord8 the_gc_thread[sizeof(gc_thread) + 64 * sizeof(gen_workspace)];\r\n}}}\r\n\r\n\r\nnot being aligned to 64 bytes, because struct gc_thread have no alignment specifier.\r\n\r\nDetailed information can be found in FreeBSD bugzilla: https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=226059","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1https://gitlab.haskell.org/ghc/ghc/-/issues/15481TH fails to recover from reifyFixity with -fexternal-interpreter2019-07-07T18:04:32ZRyan ScottTH fails to recover from reifyFixity with -fexternal-interpreter(Originally reported at https://github.com/glguy/th-abstraction/issues/53.)
If you compile the following program:
```hs
{-# LANGUAGE TemplateHaskell #-}
module Bug where
import Language.Haskell.TH
main :: IO ()
main = putStrLn $(reco...(Originally reported at https://github.com/glguy/th-abstraction/issues/53.)
If you compile the following program:
```hs
{-# LANGUAGE TemplateHaskell #-}
module Bug where
import Language.Haskell.TH
main :: IO ()
main = putStrLn $(recover (stringE "reifyFixity failed")
(do foo <- newName "foo"
_ <- reifyFixity foo
stringE "reifyFixity successful"))
```
It will work fine without the use of `-fexternal-interpreter`. However, using `-fexternal-interpreter` will result in an error:
```
$ /opt/ghc/8.4.3/bin/ghc Bug.hs -fforce-recomp
[1 of 1] Compiling Bug ( Bug.hs, Bug.o )
$ /opt/ghc/8.4.3/bin/ghc Bug.hs -fforce-recomp -fexternal-interpreter
[1 of 1] Compiling Bug ( Bug.hs, Bug.o )
Bug.hs:7:19: error:
• The exact Name ‘foo_a3MT’ is not in scope
Probable cause: you used a unique Template Haskell name (NameU),
perhaps via newName, but did not bind it
If that's it, then -ddump-splices might be useful
• In the untyped splice:
$(recover
(stringE "reifyFixity failed")
(do foo <- newName "foo"
_ <- reifyFixity foo
stringE "reifyFixity successful"))
|
7 | main = putStrLn $(recover (stringE "reifyFixity failed")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
Bug.hs:7:19: error:
• The exact Name ‘foo_a3MT’ is not in scope
Probable cause: you used a unique Template Haskell name (NameU),
perhaps via newName, but did not bind it
If that's it, then -ddump-splices might be useful
• In the untyped splice:
$(recover
(stringE "reifyFixity failed")
(do foo <- newName "foo"
_ <- reifyFixity foo
stringE "reifyFixity successful"))
|
7 | main = putStrLn $(recover (stringE "reifyFixity failed")
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ---------------- |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Template Haskell |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"TH fails to recover from reifyFixity with -fexternal-interpreter","status":"New","operating_system":"","component":"Template Haskell","related":[],"milestone":"8.8.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":["RemoteGHCi"],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"(Originally reported at https://github.com/glguy/th-abstraction/issues/53.)\r\n\r\nIf you compile the following program:\r\n\r\n{{{#!hs\r\n{-# LANGUAGE TemplateHaskell #-}\r\nmodule Bug where\r\n\r\nimport Language.Haskell.TH\r\n\r\nmain :: IO ()\r\nmain = putStrLn $(recover (stringE \"reifyFixity failed\")\r\n (do foo <- newName \"foo\"\r\n _ <- reifyFixity foo\r\n stringE \"reifyFixity successful\"))\r\n}}}\r\n\r\nIt will work fine without the use of `-fexternal-interpreter`. However, using `-fexternal-interpreter` will result in an error:\r\n\r\n{{{\r\n$ /opt/ghc/8.4.3/bin/ghc Bug.hs -fforce-recomp\r\n[1 of 1] Compiling Bug ( Bug.hs, Bug.o )\r\n$ /opt/ghc/8.4.3/bin/ghc Bug.hs -fforce-recomp -fexternal-interpreter\r\n[1 of 1] Compiling Bug ( Bug.hs, Bug.o )\r\n\r\nBug.hs:7:19: error:\r\n • The exact Name ‘foo_a3MT’ is not in scope\r\n Probable cause: you used a unique Template Haskell name (NameU), \r\n perhaps via newName, but did not bind it\r\n If that's it, then -ddump-splices might be useful\r\n • In the untyped splice:\r\n $(recover\r\n (stringE \"reifyFixity failed\")\r\n (do foo <- newName \"foo\"\r\n _ <- reifyFixity foo\r\n stringE \"reifyFixity successful\"))\r\n |\r\n7 | main = putStrLn $(recover (stringE \"reifyFixity failed\")\r\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...\r\n\r\nBug.hs:7:19: error:\r\n • The exact Name ‘foo_a3MT’ is not in scope\r\n Probable cause: you used a unique Template Haskell name (NameU), \r\n perhaps via newName, but did not bind it\r\n If that's it, then -ddump-splices might be useful\r\n • In the untyped splice:\r\n $(recover\r\n (stringE \"reifyFixity failed\")\r\n (do foo <- newName \"foo\"\r\n _ <- reifyFixity foo\r\n stringE \"reifyFixity successful\"))\r\n |\r\n7 | main = putStrLn $(recover (stringE \"reifyFixity failed\")\r\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.6.2Simon MarlowSimon Marlowhttps://gitlab.haskell.org/ghc/ghc/-/issues/15480Rename SigTv2019-07-07T18:04:33ZJoachim Breitnermail@joachim-breitner.deRename SigTvAfter #15050 and \[changeset:"4d91cabcd5e3c603997d9876f6d30204a9b029c6/ghc" 4d91cabc/ghc\] it seems odd to call `SigTv` for the kind of type variables that used to be used in type signatures in patterns, but are now used in other places ...After #15050 and \[changeset:"4d91cabcd5e3c603997d9876f6d30204a9b029c6/ghc" 4d91cabc/ghc\] it seems odd to call `SigTv` for the kind of type variables that used to be used in type signatures in patterns, but are now used in other places (kind signatures, partial type signatures).
Also, `SigTv` may be associated with sigma. At some point I assumed that `SigTv` are type variables that may unify with polytypes, while `TauTv` are those that unify with monotypes.
As a service to our future self, I’d like to rename `SigTv`. Suggestions?
Best one I have is `TvTv` or `TyVarTv` (for a type variable that stands for a type variable).
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.5 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | goldfire |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Rename SigTv","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.5","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["goldfire"],"type":"Task","description":"After #15050 and [changeset:\"4d91cabcd5e3c603997d9876f6d30204a9b029c6/ghc\" 4d91cabc/ghc] it seems odd to call `SigTv` for the kind of type variables that used to be used in type signatures in patterns, but are now used in other places (kind signatures, partial type signatures).\r\n\r\nAlso, `SigTv` may be associated with sigma. At some point I assumed that `SigTv` are type variables that may unify with polytypes, while `TauTv` are those that unify with monotypes.\r\n\r\nAs a service to our future self, I’d like to rename `SigTv`. Suggestions?\r\n\r\nBest one I have is `TvTv` or `TyVarTv` (for a type variable that stands for a type variable).","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/15478ghc-pkg package config validation too strict2019-07-07T18:04:34ZMathieu Boespflugghc-pkg package config validation too strictRegistration of a package using the following config works:
```
name: frob
version: 0.1.0.0
id: frob-0.1.0.0-inplace
key: frob-0.1.0.0-inplace
exposed: True
exposed-modules:
Baz from base-4.11.1.0:Data.Bool,
Foo from base-4.11.1...Registration of a package using the following config works:
```
name: frob
version: 0.1.0.0
id: frob-0.1.0.0-inplace
key: frob-0.1.0.0-inplace
exposed: True
exposed-modules:
Baz from base-4.11.1.0:Data.Bool,
Foo from base-4.11.1.0:Data.List,
Frob
depends:
base-4.11.1.0
```
But while GHC is happy to work with the following variant of the above configuration added by hand to the package database, it's not possible to add it via `ghc-pkg register`, because it's rejected at validation phase:
```
name: frob
version: 0.1.0.0
id: frob-0.1.0.0-inplace
key: frob-0.1.0.0-inplace
exposed: True
exposed-modules:
Baz from base:Data.Bool,
Foo from base:Data.List,
Frob
depends:
base
```
We get the following error:
```
$ ghc-pkg register frob.conf
frob-0.1.0.0: module reexport refers to a non-existent defining package: base (use --force to override)
```
This is unfortunate, because in general unit-id's don't just have version numbers but also hashes, and in some settings these can be hard to guess.
The general point is that ghc-pkg should be exactly as permissive as GHC itself, not less or more. One way to achieve that is to make the `checkModule` function in `utils/ghc-pkg/Main.hs` (called by `validatePackageConfig`) use `lookupPackageName` as a fallback to `lookupUnitId`, and say that if `lookupPackageName` returns exactly one result (i.e. the name is unambiguous) then that should be considered okay. Perhaps not A-okay, because the name could become ambiguous in the future when more entries are added to the database, but that should at most be a warning, not an error, I think.
Note: in principle we should be able to use the `--force` flag here to bypass the results of configuration validation. But oddly enough, `--force` *filters out* entries that it objects about, rather than just letting them pass through. So `--force` is not a workable workaround.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | ezyang |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"ghc-pkg package config validation too strict","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["ezyang"],"type":"Bug","description":"Registration of a package using the following config works:\r\n\r\n{{{\r\nname: frob\r\nversion: 0.1.0.0\r\nid: frob-0.1.0.0-inplace\r\nkey: frob-0.1.0.0-inplace\r\nexposed: True\r\nexposed-modules:\r\n Baz from base-4.11.1.0:Data.Bool,\r\n Foo from base-4.11.1.0:Data.List,\r\n Frob\r\ndepends:\r\n base-4.11.1.0\r\n}}}\r\n\r\nBut while GHC is happy to work with the following variant of the above configuration added by hand to the package database, it's not possible to add it via `ghc-pkg register`, because it's rejected at validation phase:\r\n\r\n{{{\r\nname: frob\r\nversion: 0.1.0.0\r\nid: frob-0.1.0.0-inplace\r\nkey: frob-0.1.0.0-inplace\r\nexposed: True\r\nexposed-modules:\r\n Baz from base:Data.Bool,\r\n Foo from base:Data.List,\r\n Frob\r\ndepends:\r\n base\r\n}}}\r\n\r\nWe get the following error:\r\n\r\n{{{\r\n$ ghc-pkg register frob.conf\r\nfrob-0.1.0.0: module reexport refers to a non-existent defining package: base (use --force to override)\r\n}}}\r\n\r\nThis is unfortunate, because in general unit-id's don't just have version numbers but also hashes, and in some settings these can be hard to guess.\r\n\r\nThe general point is that ghc-pkg should be exactly as permissive as GHC itself, not less or more. One way to achieve that is to make the `checkModule` function in `utils/ghc-pkg/Main.hs` (called by `validatePackageConfig`) use `lookupPackageName` as a fallback to `lookupUnitId`, and say that if `lookupPackageName` returns exactly one result (i.e. the name is unambiguous) then that should be considered okay. Perhaps not A-okay, because the name could become ambiguous in the future when more entries are added to the database, but that should at most be a warning, not an error, I think.\r\n\r\nNote: in principle we should be able to use the `--force` flag here to bypass the results of configuration validation. But oddly enough, `--force` ''filters out'' entries that it objects about, rather than just letting them pass through. So `--force` is not a workable workaround.","type_of_failure":"OtherFailure","blocking":[]} -->8.8.1https://gitlab.haskell.org/ghc/ghc/-/issues/15476Add -fwarn-star-is-type to -Wcompat2019-07-07T18:04:34ZVladislav ZavialovAdd -fwarn-star-is-type to -WcompatAccording to the accepted proposal https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0030-remove-star-kind.rst
This change must be included in 8.8, but I think it won't do any harm to include it in GHC 8.6 as well.
<...According to the accepted proposal https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0030-remove-star-kind.rst
This change must be included in 8.8, but I think it won't do any harm to include it in GHC 8.6 as well.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Add -fwarn-star-is-type to -Wcompat","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.8.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"According to the accepted proposal https://github.com/ghc-proposals/ghc-proposals/blob/master/proposals/0030-remove-star-kind.rst\r\n\r\nThis change must be included in 8.8, but I think it won't do any harm to include it in GHC 8.6 as well.","type_of_failure":"OtherFailure","blocking":[]} -->8.8.1https://gitlab.haskell.org/ghc/ghc/-/issues/15474Error message mentions Any2021-01-11T13:19:08ZKrzysztof GogolewskiError message mentions AnyI'm not sure if this is a bug. File:
```hs
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeInType #-}
module T15474 where
import Data.Kind (Type)
data Proxy a
type Forall = forall t. Proxy t
f1 :: forall (t :: Type). Proxy t
f1 = f1
f...I'm not sure if this is a bug. File:
```hs
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE TypeInType #-}
module T15474 where
import Data.Kind (Type)
data Proxy a
type Forall = forall t. Proxy t
f1 :: forall (t :: Type). Proxy t
f1 = f1
f2 :: Forall
f2 = f1
```
gives an error message mentioning Any:
```
• Couldn't match type ‘GHC.Types.Any’ with ‘*’
Expected type: Proxy t
Actual type: Proxy t0
```
The appearance of Any is suspicious to me - I thought it's an implementation detail?9.0.1https://gitlab.haskell.org/ghc/ghc/-/issues/15471Polymorphism, typed splices and type inference don't mix2019-07-07T18:04:36ZMatthew PickeringPolymorphism, typed splices and type inference don't mixTrying to quote and splice a polymorphic function doesn't work unless you have a type signature.
```
{-# LANGUAGE TemplateHaskell #-}
module A where
foo1 x = x
test_foo = [|| foo1 ||]
```
```
{-# LANGUAGE TemplateHaskell #-}
module B...Trying to quote and splice a polymorphic function doesn't work unless you have a type signature.
```
{-# LANGUAGE TemplateHaskell #-}
module A where
foo1 x = x
test_foo = [|| foo1 ||]
```
```
{-# LANGUAGE TemplateHaskell #-}
module B where
import A
qux = $$(test_foo)
```
The type of `qux` is `Any -> Any`! Which is clearly wrong.
Adding a type signature to `qux` fixes the problem.
```
qux :: a -> a
qux = $$(test_foo)
```
Either there should be a better error or this should just work.
It seems that this has always been broken. Ryan tested on GHC 7.8.4 for me.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Polymorphism, typed splices and type inference don't mix","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"Trying to quote and splice a polymorphic function doesn't work unless you have a type signature.\r\n\r\n{{{\r\n{-# LANGUAGE TemplateHaskell #-}\r\nmodule A where\r\n\r\nfoo1 x = x\r\n\r\ntest_foo = [|| foo1 ||]\r\n}}}\r\n\r\n{{{\r\n{-# LANGUAGE TemplateHaskell #-}\r\nmodule B where\r\n\r\nimport A\r\n\r\nqux = $$(test_foo)\r\n}}}\r\n\r\nThe type of `qux` is `Any -> Any`! Which is clearly wrong.\r\n\r\nAdding a type signature to `qux` fixes the problem.\r\n\r\n{{{\r\nqux :: a -> a\r\nqux = $$(test_foo)\r\n}}}\r\n\r\nEither there should be a better error or this should just work.\r\n\r\nIt seems that this has always been broken. Ryan tested on GHC 7.8.4 for me.","type_of_failure":"OtherFailure","blocking":[]} -->8.8.1https://gitlab.haskell.org/ghc/ghc/-/issues/15469Validation doesn't play nicely on a shared computer2019-07-07T18:04:36ZRichard Eisenbergrae@richarde.devValidation doesn't play nicely on a shared computerIn my shared Linux server, validation creates a directory structure under `/tmp` to do its work. It then creates a directory named something like `ghctest-52ezqtk2` under which the tests live. However, some of the tests in the testsuite ...In my shared Linux server, validation creates a directory structure under `/tmp` to do its work. It then creates a directory named something like `ghctest-52ezqtk2` under which the tests live. However, some of the tests in the testsuite are library tests. These end up in a `libraries` directory, accessed with prefixes like `../../libraries/xyz`. That is, the `libraries` directory ends up to be `/tmp/libraries`. The problem is that I share this Linux server with my students, who are also attempting to run validation. After the occasional cleanout of `/tmp`, whoever validates first creates the `/tmp/libraries` directory and then owns that directory -- anyone else who tries to validate gets permission errors until the next cleanout of `tmp`.
Even with the presumably quick fix of changing the permissions on `libraries`, the very use of that folder means that two people cannot validate simultaneously on the same machine.
Can we fix this?
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Test Suite |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Validation doesn't play nicely on a shared computer","status":"New","operating_system":"","component":"Test Suite","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"In my shared Linux server, validation creates a directory structure under `/tmp` to do its work. It then creates a directory named something like `ghctest-52ezqtk2` under which the tests live. However, some of the tests in the testsuite are library tests. These end up in a `libraries` directory, accessed with prefixes like `../../libraries/xyz`. That is, the `libraries` directory ends up to be `/tmp/libraries`. The problem is that I share this Linux server with my students, who are also attempting to run validation. After the occasional cleanout of `/tmp`, whoever validates first creates the `/tmp/libraries` directory and then owns that directory -- anyone else who tries to validate gets permission errors until the next cleanout of `tmp`.\r\n\r\nEven with the presumably quick fix of changing the permissions on `libraries`, the very use of that folder means that two people cannot validate simultaneously on the same machine.\r\n\r\nCan we fix this?","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1Thomas MiedemaThomas Miedemahttps://gitlab.haskell.org/ghc/ghc/-/issues/15466debug validation failures2019-07-07T18:04:39ZAlp Mestanogullaridebug validation failuresThe most recent completed run of `validate-x86_64-linux-debug` on Circle CI (https://circleci.com/gh/ghc/ghc/7730) shows 13 unexpected failures and 1 unexpected pass.
- \*Summary\*\*
```
Unexpected passes:
concurrent/T13615/T13615.r...The most recent completed run of `validate-x86_64-linux-debug` on Circle CI (https://circleci.com/gh/ghc/ghc/7730) shows 13 unexpected failures and 1 unexpected pass.
- \*Summary\*\*
```
Unexpected passes:
concurrent/T13615/T13615.run T13615 [unexpected] (ghci)
Unexpected failures:
codeGen/should_compile/T9329.run T9329 [exit code non-0] (normal)
codeGen/should_run/cgrun018.run cgrun018 [exit code non-0] (normal)
codeGen/should_run/cgrun018.run cgrun018 [exit code non-0] (g1)
codeGen/should_run/cgrun069.run cgrun069 [exit code non-0] (normal)
codeGen/should_run/cgrun069.run cgrun069 [exit code non-0] (g1)
codeGen/should_run/T9577.run T9577 [bad stdout] (normal)
concurrent/should_run/T3429.run T3429 [bad exit code] (debug_numa)
driver/T14075/T14075.run T14075 [bad stderr] (normal)
driver/recomp007/recomp007.run recomp007 [bad stderr] (normal)
rts/T14702.run T14702 [bad exit code] (threaded1)
rts/nursery-chunks1.run nursery-chunks1 [bad stderr] (threaded1)
rts/numa001.run numa001 [bad exit code] (debug_numa)
../../libraries/base/tests/T11760.run T11760 [bad exit code] (normal)
```
---
- \*T9329\*\*
```
Compile failed (exit code 1) errors were:
/tmp/ghc78722_0/ghc_4.hc: In function ‘bar’:
/tmp/ghc78722_0/ghc_4.hc:18:12: error:
error: ‘c6_info’ undeclared (first use in this function)
*Sp = (W_)&c6_info;
^
/tmp/ghc78722_0/ghc_4.hc:18:12: error:
note: each undeclared identifier is reported only once for each function it appears in
`gcc' failed in phase `C Compiler'. (Exit code: 1)
*** unexpected failure for T9329(normal)
```
- \*cgrun018\*\*
```
Compile failed (exit code 1) errors were:
[1 of 1] Compiling Main ( cgrun018.hs, cgrun018.o )
ghc-stage2: panic! (the 'impossible' happened)
(GHC version 8.7.20180731 for x86_64-unknown-linux):
pprStatics: float
F32
F32
F32
F32
F32
F32
F32
F32
F32
F32
F32
Call stack:
CallStack (from HasCallStack):
callStackDoc, called at compiler/utils/Outputable.hs:1164:37 in ghc:Outputable
pprPanic, called at compiler/cmm/PprC.hs:521:5 in ghc:PprC
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
*** unexpected failure for cgrun018(normal)
---
Compile failed (exit code 1) errors were:
[1 of 1] Compiling Main ( cgrun018.hs, cgrun018.o )
ghc-stage2: panic! (the 'impossible' happened)
(GHC version 8.7.20180731 for x86_64-unknown-linux):
pprStatics: float
F32
F32
F32
F32
F32
F32
F32
F32
F32
F32
F32
Call stack:
CallStack (from HasCallStack):
callStackDoc, called at compiler/utils/Outputable.hs:1164:37 in ghc:Outputable
pprPanic, called at compiler/cmm/PprC.hs:521:5 in ghc:PprC
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
*** unexpected failure for cgrun018(g1)
```
- \*cgrun069\*\*
```
Compile failed (exit code 1) errors were:
/tmp/ghc83995_0/ghc_4.hc:5:12: error:
error: conflicting types for ‘memsetErr’
const char memsetErr[] = "Memset Error - align: %d size: %d\012";
^
In file included from /tmp/ghc83995_0/ghc_4.hc:3:0: error:
/tmp/ghc83995_0/ghc_4.hc:4:6: error:
note: previous declaration of ‘memsetErr’ was here
ERW_(memsetErr);
^
/home/ghc/project/includes/Stg.h:242:46: error:
note: in definition of macro ‘ERW_’
#define ERW_(X) extern StgWordArray (X)
^
/tmp/ghc83995_0/ghc_4.hc:8:12: error:
error: conflicting types for ‘memcpyErr’
const char memcpyErr[] = "Memcpy Error - align: %d size: %d\012";
^
In file included from /tmp/ghc83995_0/ghc_4.hc:3:0: error:
/tmp/ghc83995_0/ghc_4.hc:7:6: error:
note: previous declaration of ‘memcpyErr’ was here
ERW_(memcpyErr);
^
/home/ghc/project/includes/Stg.h:242:46: error:
note: in definition of macro ‘ERW_’
#define ERW_(X) extern StgWordArray (X)
^
/tmp/ghc83995_0/ghc_4.hc:11:12: error:
error: conflicting types for ‘memmoveErr’
const char memmoveErr[] = "Memmove Error Occured\012";
^
In file included from /tmp/ghc83995_0/ghc_4.hc:3:0: error:
/tmp/ghc83995_0/ghc_4.hc:10:6: error:
note: previous declaration of ‘memmoveErr’ was here
ERW_(memmoveErr);
^
/home/ghc/project/includes/Stg.h:242:46: error:
note: in definition of macro ‘ERW_’
#define ERW_(X) extern StgWordArray (X)
^
`gcc' failed in phase `C Compiler'. (Exit code: 1)
*** unexpected failure for cgrun069(normal)
---
Compile failed (exit code 1) errors were:
/tmp/ghc84416_0/ghc_4.hc:5:12: error:
error: conflicting types for ‘memsetErr’
const char memsetErr[] = "Memset Error - align: %d size: %d\012";
^
In file included from /tmp/ghc84416_0/ghc_4.hc:3:0: error:
/tmp/ghc84416_0/ghc_4.hc:4:6: error:
note: previous declaration of ‘memsetErr’ was here
ERW_(memsetErr);
^
/home/ghc/project/includes/Stg.h:242:46: error:
note: in definition of macro ‘ERW_’
#define ERW_(X) extern StgWordArray (X)
^
/tmp/ghc84416_0/ghc_4.hc:8:12: error:
error: conflicting types for ‘memcpyErr’
const char memcpyErr[] = "Memcpy Error - align: %d size: %d\012";
^
In file included from /tmp/ghc84416_0/ghc_4.hc:3:0: error:
/tmp/ghc84416_0/ghc_4.hc:7:6: error:
note: previous declaration of ‘memcpyErr’ was here
ERW_(memcpyErr);
^
/home/ghc/project/includes/Stg.h:242:46: error:
note: in definition of macro ‘ERW_’
#define ERW_(X) extern StgWordArray (X)
^
/tmp/ghc84416_0/ghc_4.hc:11:12: error:
error: conflicting types for ‘memmoveErr’
const char memmoveErr[] = "Memmove Error Occured\012";
^
In file included from /tmp/ghc84416_0/ghc_4.hc:3:0: error:
/tmp/ghc84416_0/ghc_4.hc:10:6: error:
note: previous declaration of ‘memmoveErr’ was here
ERW_(memmoveErr);
^
/home/ghc/project/includes/Stg.h:242:46: error:
note: in definition of macro ‘ERW_’
#define ERW_(X) extern StgWordArray (X)
^
`gcc' failed in phase `C Compiler'. (Exit code: 1)
*** unexpected failure for cgrun069(g1)
```
- \*T9577\*\*
```
--- ./codeGen/should_run/T9577.run/T9577.stdout.normalised 2018-08-02 03:38:39.932680724 +0000
+++ ./codeGen/should_run/T9577.run/T9577.run.stdout.normalised 2018-08-02 03:38:39.932680724 +0000
@@ -1 +1 @@
-True
+False
*** unexpected failure for T9577(normal)
```
- \*T3429\*\*
```
Wrong exit code for T3429(debug_numa)(expected 0 , actual 1 )
Stderr ( T3429 ):
T3429: unknown RTS option: -N2
T3429:
T3429: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>
T3429:
T3429: +RTS Indicates run time system options follow
T3429: -RTS Indicates program arguments follow
T3429: --RTS Indicates that ALL subsequent arguments will be given to the
T3429: program (including any of these RTS flags)
T3429:
T3429: The following run time system options are available:
T3429:
T3429: -? Prints this message and exits; the program is not executed
T3429: --info Print information about the RTS used by this program
T3429:
T3429: -K<size> Sets the maximum stack size (default: 80% of the heap)
T3429: Egs: -K32k -K512k -K8M
T3429: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m
T3429: -kc<size> Sets the stack chunk size (default 32k)
T3429: -kb<size> Sets the stack chunk buffer size (default 1k)
T3429:
T3429: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k
T3429: -AL<size> Sets the amount of large-object memory that can be allocated
T3429: before a GC is triggered (default: the value of -A)
T3429: -n<size> Allocation area chunk size (0 = disabled, default: 0)
T3429: -O<size> Sets the minimum size of the old generation (default 1M)
T3429: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G
T3429: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G
T3429: -xb<addr> Sets the address from which a suitable start for the heap memory
T3429: will be searched from. This is useful if the default address
T3429: clashes with some third-party library.
T3429: -m<n> Minimum % of heap which must be available (default 3%)
T3429: -G<n> Number of generations (default: 2)
T3429: -c<n> Use in-place compaction instead of copying in the oldest generation
T3429: when live data is at least <n>% of the maximum heap size set with
T3429: -M (default: 30%)
T3429: -c Use in-place compaction for all oldest generation collections
T3429: (the default is to use copying)
T3429: -w Use mark-region for the oldest generation (experimental)
T3429: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)
T3429:
T3429: -T Collect GC statistics (useful for in-program statistics access)
T3429: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)
T3429: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)
T3429: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)
T3429:
T3429:
T3429: -Z Don't squeeze out update frames on stack overflow
T3429: -B Sound the bell at the start of each garbage collection
T3429:
T3429: -hT Produce a heap profile grouped by closure type
T3429: -l[flags] Log events in binary format to the file <program>.eventlog
T3429: -v[flags] Log events to stderr
T3429: where [flags] can contain:
T3429: s scheduler events
T3429: g GC and heap events
T3429: p par spark events (sampled)
T3429: f par spark events (full detail)
T3429: u user events (emitted from Haskell code)
T3429: a all event classes above
T3429: t add time stamps (only useful with -v)
T3429: -x disable an event class, for any flag above
T3429: the initial enabled event classes are 'sgpu'
T3429:
T3429: -h Heap residency profile (output file <program>.hp)
T3429: -i<sec> Time between heap profile samples (seconds, default: 0.1)
T3429:
T3429: -r<file> Produce ticky-ticky statistics (with -rstderr for stderr)
T3429:
T3429: -C<secs> Context-switch interval in seconds.
T3429: 0 or no argument means switch as often as possible.
T3429: Default: 0.02 sec.
T3429: -V<secs> Master tick interval in seconds (0 == disable timer).
T3429: This sets the resolution for -C and the heap profile timer -i,
T3429: and is the frequency of time profile samples.
T3429: Default: 0.01 sec.
T3429:
T3429: -Ds DEBUG: scheduler
T3429: -Di DEBUG: interpreter
T3429: -Dw DEBUG: weak
T3429: -DG DEBUG: gccafs
T3429: -Dg DEBUG: gc
T3429: -Db DEBUG: block
T3429: -DS DEBUG: sanity
T3429: -Dt DEBUG: stable
T3429: -Dp DEBUG: prof
T3429: -Da DEBUG: apply
T3429: -Dl DEBUG: linker
T3429: -Dm DEBUG: stm
T3429: -Dz DEBUG: stack squeezing
T3429: -Dc DEBUG: program coverage
T3429: -Dr DEBUG: sparks
T3429: -DC DEBUG: compact
T3429:
T3429: NOTE: DEBUG events are sent to stderr by default; add -l to create a
T3429: binary event log file instead.
T3429:
T3429: --install-signal-handlers=<yes|no>
T3429: Install signal handlers (default: yes)
T3429: -e<n> Maximum number of outstanding local sparks (default: 4096)
T3429: -xm Base address to mmap memory in the GHCi linker
T3429: (hex; must be <80000000)
T3429: -xq The allocation limit given to a thread after it receives
T3429: an AllocationLimitExceeded exception. (default: 100k)
T3429:
T3429: -Mgrace=<n>
T3429: The amount of allocation after the program receives a
T3429: HeapOverflow exception before the exception is thrown again, if
T3429: the program is still exceeding the heap limit.
T3429:
T3429: RTS options may also be specified using the GHCRTS environment variable.
T3429:
T3429: Other RTS options may be available for programs compiled a different way.
T3429: The GHC User's Guide has full details.
T3429:
*** unexpected failure for T3429(debug_numa)
```
- \*T13615\*\*
```
*** unexpected pass for T13615(ghci)
```
- \*T14075\*\*
```
Actual stderr output differs from expected:
--- ./driver/T14075/T14075.run/T14075.stderr.normalised 2018-08-02 03:40:01.063504007 +0000
+++ ./driver/T14075/T14075.run/T14075.run.stderr.normalised 2018-08-02 03:40:01.063504007 +0000
@@ -1,3 +1,4 @@
+ghc: setNumCapabilities: not supported on this platform
F.hs:1:1:
instance O.O F.F -- Defined at F.hs-boot:6:10
*** unexpected failure for T14075(normal)
```
- \*recomp007\*\*
```
Actual stderr output differs from expected:
--- /dev/null 2018-08-01 14:11:13.420752000 +0000
+++ ./driver/recomp007/recomp007.run/recomp007.run.stderr.normalised 2018-08-02 03:40:46.313078664 +0000
@@ -0,0 +1,122 @@
+WARNING: file compiler/utils/ListSetOps.hs, line 58
+ []
+ [Distribution.Backpack, Distribution.Backpack.FullUnitId,
+ Distribution.Backpack.ModuleShape,
+ Distribution.Backpack.PreModuleShape,
+ Distribution.Backpack.ReadyComponent,
+ Distribution.CabalSpecVersion, Distribution.Compat.Graph,
+ Distribution.Compat.Semigroup, Distribution.Compiler,
+ Distribution.License, Distribution.ModuleName,
+ Distribution.Parsec.Common, Distribution.SPDX.License,
+ Distribution.SPDX.LicenseExceptionId,
+ Distribution.SPDX.LicenseExpression, Distribution.SPDX.LicenseId,
+ Distribution.SPDX.LicenseReference,
+ Distribution.Simple.BuildTarget, Distribution.Simple.Compiler,
+ Distribution.Simple.Doctest, Distribution.Simple.Flag,
+ Distribution.Simple.Haddock, Distribution.Simple.InstallDirs,
+ Distribution.Simple.PackageIndex, Distribution.Simple.Program.Find,
+ Distribution.Simple.Program.GHC, Distribution.Simple.Program.Types,
+ Distribution.Simple.Setup, Distribution.System,
+ Distribution.Types.AbiDependency, Distribution.Types.AbiHash,
+ Distribution.Types.Benchmark,
+ Distribution.Types.BenchmarkInterface,
+ Distribution.Types.BenchmarkType, Distribution.Types.BuildInfo,
+ Distribution.Types.BuildType, Distribution.Types.ComponentId,
+ Distribution.Types.ComponentLocalBuildInfo,
+ Distribution.Types.ComponentName,
+ Distribution.Types.ComponentRequestedSpec,
+ Distribution.Types.CondTree, Distribution.Types.Condition,
+ Distribution.Types.Dependency, Distribution.Types.ExeDependency,
+ Distribution.Types.Executable, Distribution.Types.ExecutableScope,
+ Distribution.Types.ExposedModule, Distribution.Types.ForeignLib,
+ Distribution.Types.ForeignLibOption,
+ Distribution.Types.ForeignLibType,
+ Distribution.Types.GenericPackageDescription,
+ Distribution.Types.IncludeRenaming,
+ Distribution.Types.InstalledPackageInfo,
+ Distribution.Types.LegacyExeDependency, Distribution.Types.Library,
+ Distribution.Types.LocalBuildInfo, Distribution.Types.Mixin,
+ Distribution.Types.Module, Distribution.Types.ModuleReexport,
+ Distribution.Types.ModuleRenaming,
+ Distribution.Types.MungedPackageId,
+ Distribution.Types.MungedPackageName,
+ Distribution.Types.PackageDescription,
+ Distribution.Types.PackageId, Distribution.Types.PackageName,
+ Distribution.Types.PkgconfigDependency,
+ Distribution.Types.PkgconfigName,
+ Distribution.Types.SetupBuildInfo, Distribution.Types.SourceRepo,
+ Distribution.Types.TargetInfo, Distribution.Types.TestSuite,
+ Distribution.Types.TestSuiteInterface, Distribution.Types.TestType,
+ Distribution.Types.UnitId, Distribution.Types.UnqualComponentName,
+ Distribution.Types.Version, Distribution.Types.VersionRange,
+ Distribution.Utils.ShortText, Distribution.Verbosity,
+ Language.Haskell.Extension, Control.Applicative, Data.Complex,
+ Data.Functor.Compose, Data.Functor.Const, Data.Functor.Identity,
+ Data.Functor.Product, Data.Functor.Sum, Data.Monoid,
+ Data.Semigroup, Data.Semigroup.Internal, Data.Version, Data.Void,
+ GHC.Exts, GHC.Generics, GHC.IO.Exception, Data.Graph,
+ Data.IntMap.Internal, Data.IntSet.Internal, Data.Map.Internal,
+ Data.Sequence.Internal, Data.Set.Internal, Data.Tree,
+ Text.PrettyPrint.Annotated.HughesPJ, Text.PrettyPrint.HughesPJ,
+ Data.Text, Data.Text.Lazy]
+WARNING: file compiler/utils/ListSetOps.hs, line 58
+ [Distribution.Backpack, Distribution.Backpack.FullUnitId,
+ Distribution.Backpack.ModuleShape,
+ Distribution.Backpack.PreModuleShape,
+ Distribution.Backpack.ReadyComponent,
+ Distribution.CabalSpecVersion, Distribution.Compat.Graph,
+ Distribution.Compat.Semigroup, Distribution.Compiler,
+ Distribution.License, Distribution.ModuleName,
+ Distribution.Parsec.Common, Distribution.SPDX.License,
+ Distribution.SPDX.LicenseExceptionId,
+ Distribution.SPDX.LicenseExpression, Distribution.SPDX.LicenseId,
+ Distribution.SPDX.LicenseReference,
+ Distribution.Simple.BuildTarget, Distribution.Simple.Compiler,
+ Distribution.Simple.Doctest, Distribution.Simple.Flag,
+ Distribution.Simple.Haddock, Distribution.Simple.InstallDirs,
+ Distribution.Simple.PackageIndex, Distribution.Simple.Program.Find,
+ Distribution.Simple.Program.GHC, Distribution.Simple.Program.Types,
+ Distribution.Simple.Setup, Distribution.System,
+ Distribution.Types.AbiDependency, Distribution.Types.AbiHash,
+ Distribution.Types.Benchmark,
+ Distribution.Types.BenchmarkInterface,
+ Distribution.Types.BenchmarkType, Distribution.Types.BuildInfo,
+ Distribution.Types.BuildType, Distribution.Types.ComponentId,
+ Distribution.Types.ComponentLocalBuildInfo,
+ Distribution.Types.ComponentName,
+ Distribution.Types.ComponentRequestedSpec,
+ Distribution.Types.CondTree, Distribution.Types.Condition,
+ Distribution.Types.Dependency, Distribution.Types.ExeDependency,
+ Distribution.Types.Executable, Distribution.Types.ExecutableScope,
+ Distribution.Types.ExposedModule, Distribution.Types.ForeignLib,
+ Distribution.Types.ForeignLibOption,
+ Distribution.Types.ForeignLibType,
+ Distribution.Types.GenericPackageDescription,
+ Distribution.Types.IncludeRenaming,
+ Distribution.Types.InstalledPackageInfo,
+ Distribution.Types.LegacyExeDependency, Distribution.Types.Library,
+ Distribution.Types.LocalBuildInfo, Distribution.Types.Mixin,
+ Distribution.Types.Module, Distribution.Types.ModuleReexport,
+ Distribution.Types.ModuleRenaming,
+ Distribution.Types.MungedPackageId,
+ Distribution.Types.MungedPackageName,
+ Distribution.Types.PackageDescription,
+ Distribution.Types.PackageId, Distribution.Types.PackageName,
+ Distribution.Types.PkgconfigDependency,
+ Distribution.Types.PkgconfigName,
+ Distribution.Types.SetupBuildInfo, Distribution.Types.SourceRepo,
+ Distribution.Types.TargetInfo, Distribution.Types.TestSuite,
+ Distribution.Types.TestSuiteInterface, Distribution.Types.TestType,
+ Distribution.Types.UnitId, Distribution.Types.UnqualComponentName,
+ Distribution.Types.Version, Distribution.Types.VersionRange,
+ Distribution.Utils.ShortText, Distribution.Verbosity,
+ Language.Haskell.Extension, Control.Applicative, Data.Complex,
+ Data.Functor.Compose, Data.Functor.Const, Data.Functor.Identity,
+ Data.Functor.Product, Data.Functor.Sum, Data.Monoid,
+ Data.Semigroup, Data.Semigroup.Internal, Data.Version, Data.Void,
+ GHC.Exts, GHC.Generics, GHC.IO.Exception, Data.Graph,
+ Data.IntMap.Internal, Data.IntSet.Internal, Data.Map.Internal,
+ Data.Sequence.Internal, Data.Set.Internal, Data.Tree,
+ Text.PrettyPrint.Annotated.HughesPJ, Text.PrettyPrint.HughesPJ,
+ Data.Text, Data.Text.Lazy]
+ []
*** unexpected failure for recomp007(normal)
```
- \*T14702\*\*
```
Wrong exit code for T14702(threaded1)(expected 0 , actual 1 )
Stderr ( T14702 ):
T14702: unknown RTS option: -N8
T14702:
T14702: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>
T14702:
T14702: +RTS Indicates run time system options follow
T14702: -RTS Indicates program arguments follow
T14702: --RTS Indicates that ALL subsequent arguments will be given to the
T14702: program (including any of these RTS flags)
T14702:
T14702: The following run time system options are available:
T14702:
T14702: -? Prints this message and exits; the program is not executed
T14702: --info Print information about the RTS used by this program
T14702:
T14702: -K<size> Sets the maximum stack size (default: 80% of the heap)
T14702: Egs: -K32k -K512k -K8M
T14702: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m
T14702: -kc<size> Sets the stack chunk size (default 32k)
T14702: -kb<size> Sets the stack chunk buffer size (default 1k)
T14702:
T14702: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k
T14702: -AL<size> Sets the amount of large-object memory that can be allocated
T14702: before a GC is triggered (default: the value of -A)
T14702: -n<size> Allocation area chunk size (0 = disabled, default: 0)
T14702: -O<size> Sets the minimum size of the old generation (default 1M)
T14702: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G
T14702: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G
T14702: -xb<addr> Sets the address from which a suitable start for the heap memory
T14702: will be searched from. This is useful if the default address
T14702: clashes with some third-party library.
T14702: -m<n> Minimum % of heap which must be available (default 3%)
T14702: -G<n> Number of generations (default: 2)
T14702: -c<n> Use in-place compaction instead of copying in the oldest generation
T14702: when live data is at least <n>% of the maximum heap size set with
T14702: -M (default: 30%)
T14702: -c Use in-place compaction for all oldest generation collections
T14702: (the default is to use copying)
T14702: -w Use mark-region for the oldest generation (experimental)
T14702: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)
T14702:
T14702: -T Collect GC statistics (useful for in-program statistics access)
T14702: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)
T14702: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)
T14702: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)
T14702:
T14702:
T14702: -Z Don't squeeze out update frames on stack overflow
T14702: -B Sound the bell at the start of each garbage collection
T14702:
T14702: -hT Produce a heap profile grouped by closure type
T14702: -l[flags] Log events in binary format to the file <program>.eventlog
T14702: -v[flags] Log events to stderr
T14702: where [flags] can contain:
T14702: s scheduler events
T14702: g GC and heap events
T14702: p par spark events (sampled)
T14702: f par spark events (full detail)
T14702: u user events (emitted from Haskell code)
T14702: a all event classes above
T14702: t add time stamps (only useful with -v)
T14702: -x disable an event class, for any flag above
T14702: the initial enabled event classes are 'sgpu'
T14702:
T14702: -h Heap residency profile (output file <program>.hp)
T14702: -i<sec> Time between heap profile samples (seconds, default: 0.1)
T14702:
T14702: -r<file> Produce ticky-ticky statistics (with -rstderr for stderr)
T14702:
T14702: -C<secs> Context-switch interval in seconds.
T14702: 0 or no argument means switch as often as possible.
T14702: Default: 0.02 sec.
T14702: -V<secs> Master tick interval in seconds (0 == disable timer).
T14702: This sets the resolution for -C and the heap profile timer -i,
T14702: and is the frequency of time profile samples.
T14702: Default: 0.01 sec.
T14702:
T14702: -Ds DEBUG: scheduler
T14702: -Di DEBUG: interpreter
T14702: -Dw DEBUG: weak
T14702: -DG DEBUG: gccafs
T14702: -Dg DEBUG: gc
T14702: -Db DEBUG: block
T14702: -DS DEBUG: sanity
T14702: -Dt DEBUG: stable
T14702: -Dp DEBUG: prof
T14702: -Da DEBUG: apply
T14702: -Dl DEBUG: linker
T14702: -Dm DEBUG: stm
T14702: -Dz DEBUG: stack squeezing
T14702: -Dc DEBUG: program coverage
T14702: -Dr DEBUG: sparks
T14702: -DC DEBUG: compact
T14702:
T14702: NOTE: DEBUG events are sent to stderr by default; add -l to create a
T14702: binary event log file instead.
T14702:
T14702: --install-signal-handlers=<yes|no>
T14702: Install signal handlers (default: yes)
T14702: -e<n> Maximum number of outstanding local sparks (default: 4096)
T14702: -xm Base address to mmap memory in the GHCi linker
T14702: (hex; must be <80000000)
T14702: -xq The allocation limit given to a thread after it receives
T14702: an AllocationLimitExceeded exception. (default: 100k)
T14702:
T14702: -Mgrace=<n>
T14702: The amount of allocation after the program receives a
T14702: HeapOverflow exception before the exception is thrown again, if
T14702: the program is still exceeding the heap limit.
T14702:
T14702: RTS options may also be specified using the GHCRTS environment variable.
T14702:
T14702: Other RTS options may be available for programs compiled a different way.
T14702: The GHC User's Guide has full details.
T14702:
*** unexpected failure for T14702(threaded1)
```
- \*nursery-chunks1\*\*
```
Actual stderr output differs from expected:
--- /dev/null 2018-08-01 14:11:13.420752000 +0000
+++ ./rts/nursery-chunks1.run/nursery-chunks1.run.stderr.normalised 2018-08-02 03:45:18.786560729 +0000
@@ -0,0 +1,3 @@
+nursery-chunks1: setNumCapabilities: not supported on this platform
+nursery-chunks1: setNumCapabilities: not supported on this platform
+nursery-chunks1: setNumCapabilities: not supported on this platform
*** unexpected failure for nursery-chunks1(threaded1)
```
- \*numa001\*\*
```
Wrong exit code for numa001(debug_numa)(expected 0 , actual 1 )
Stderr ( numa001 ):
numa001: unknown RTS option: -N2
numa001:
numa001: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>
numa001:
numa001: +RTS Indicates run time system options follow
numa001: -RTS Indicates program arguments follow
numa001: --RTS Indicates that ALL subsequent arguments will be given to the
numa001: program (including any of these RTS flags)
numa001:
numa001: The following run time system options are available:
numa001:
numa001: -? Prints this message and exits; the program is not executed
numa001: --info Print information about the RTS used by this program
numa001:
numa001: -K<size> Sets the maximum stack size (default: 80% of the heap)
numa001: Egs: -K32k -K512k -K8M
numa001: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m
numa001: -kc<size> Sets the stack chunk size (default 32k)
numa001: -kb<size> Sets the stack chunk buffer size (default 1k)
numa001:
numa001: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k
numa001: -AL<size> Sets the amount of large-object memory that can be allocated
numa001: before a GC is triggered (default: the value of -A)
numa001: -n<size> Allocation area chunk size (0 = disabled, default: 0)
numa001: -O<size> Sets the minimum size of the old generation (default 1M)
numa001: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G
numa001: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G
numa001: -xb<addr> Sets the address from which a suitable start for the heap memory
numa001: will be searched from. This is useful if the default address
numa001: clashes with some third-party library.
numa001: -m<n> Minimum % of heap which must be available (default 3%)
numa001: -G<n> Number of generations (default: 2)
numa001: -c<n> Use in-place compaction instead of copying in the oldest generation
numa001: when live data is at least <n>% of the maximum heap size set with
numa001: -M (default: 30%)
numa001: -c Use in-place compaction for all oldest generation collections
numa001: (the default is to use copying)
numa001: -w Use mark-region for the oldest generation (experimental)
numa001: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)
numa001:
numa001: -T Collect GC statistics (useful for in-program statistics access)
numa001: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)
numa001: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)
numa001: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)
numa001:
numa001:
numa001: -Z Don't squeeze out update frames on stack overflow
numa001: -B Sound the bell at the start of each garbage collection
numa001:
numa001: -hT Produce a heap profile grouped by closure type
numa001: -l[flags] Log events in binary format to the file <program>.eventlog
numa001: -v[flags] Log events to stderr
numa001: where [flags] can contain:
numa001: s scheduler events
numa001: g GC and heap events
numa001: p par spark events (sampled)
numa001: f par spark events (full detail)
numa001: u user events (emitted from Haskell code)
numa001: a all event classes above
numa001: t add time stamps (only useful with -v)
numa001: -x disable an event class, for any flag above
numa001: the initial enabled event classes are 'sgpu'
numa001:
numa001: -h Heap residency profile (output file <program>.hp)
numa001: -i<sec> Time between heap profile samples (seconds, default: 0.1)
numa001:
numa001: -r<file> Produce ticky-ticky statistics (with -rstderr for stderr)
numa001:
numa001: -C<secs> Context-switch interval in seconds.
numa001: 0 or no argument means switch as often as possible.
numa001: Default: 0.02 sec.
numa001: -V<secs> Master tick interval in seconds (0 == disable timer).
numa001: This sets the resolution for -C and the heap profile timer -i,
numa001: and is the frequency of time profile samples.
numa001: Default: 0.01 sec.
numa001:
numa001: -Ds DEBUG: scheduler
numa001: -Di DEBUG: interpreter
numa001: -Dw DEBUG: weak
numa001: -DG DEBUG: gccafs
numa001: -Dg DEBUG: gc
numa001: -Db DEBUG: block
numa001: -DS DEBUG: sanity
numa001: -Dt DEBUG: stable
numa001: -Dp DEBUG: prof
numa001: -Da DEBUG: apply
numa001: -Dl DEBUG: linker
numa001: -Dm DEBUG: stm
numa001: -Dz DEBUG: stack squeezing
numa001: -Dc DEBUG: program coverage
numa001: -Dr DEBUG: sparks
numa001: -DC DEBUG: compact
numa001:
numa001: NOTE: DEBUG events are sent to stderr by default; add -l to create a
numa001: binary event log file instead.
numa001:
numa001: --install-signal-handlers=<yes|no>
numa001: Install signal handlers (default: yes)
numa001: -e<n> Maximum number of outstanding local sparks (default: 4096)
numa001: -xm Base address to mmap memory in the GHCi linker
numa001: (hex; must be <80000000)
numa001: -xq The allocation limit given to a thread after it receives
numa001: an AllocationLimitExceeded exception. (default: 100k)
numa001:
numa001: -Mgrace=<n>
numa001: The amount of allocation after the program receives a
numa001: HeapOverflow exception before the exception is thrown again, if
numa001: the program is still exceeding the heap limit.
numa001:
numa001: RTS options may also be specified using the GHCRTS environment variable.
numa001:
numa001: Other RTS options may be available for programs compiled a different way.
numa001: The GHC User's Guide has full details.
numa001:
*** unexpected failure for numa001(debug_numa)
```
- \*T11760\*\*
```
Wrong exit code for T11760(normal)(expected 0 , actual 1 )
Stderr ( T11760 ):
T11760: unknown RTS option: -N2
T11760:
T11760: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>
T11760:
T11760: +RTS Indicates run time system options follow
T11760: -RTS Indicates program arguments follow
T11760: --RTS Indicates that ALL subsequent arguments will be given to the
T11760: program (including any of these RTS flags)
T11760:
T11760: The following run time system options are available:
T11760:
T11760: -? Prints this message and exits; the program is not executed
T11760: --info Print information about the RTS used by this program
T11760:
T11760: -K<size> Sets the maximum stack size (default: 80% of the heap)
T11760: Egs: -K32k -K512k -K8M
T11760: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m
T11760: -kc<size> Sets the stack chunk size (default 32k)
T11760: -kb<size> Sets the stack chunk buffer size (default 1k)
T11760:
T11760: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k
T11760: -AL<size> Sets the amount of large-object memory that can be allocated
T11760: before a GC is triggered (default: the value of -A)
T11760: -n<size> Allocation area chunk size (0 = disabled, default: 0)
T11760: -O<size> Sets the minimum size of the old generation (default 1M)
T11760: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G
T11760: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G
T11760: -xb<addr> Sets the address from which a suitable start for the heap memory
T11760: will be searched from. This is useful if the default address
T11760: clashes with some third-party library.
T11760: -m<n> Minimum % of heap which must be available (default 3%)
T11760: -G<n> Number of generations (default: 2)
T11760: -c<n> Use in-place compaction instead of copying in the oldest generation
T11760: when live data is at least <n>% of the maximum heap size set with
T11760: -M (default: 30%)
T11760: -c Use in-place compaction for all oldest generation collections
T11760: (the default is to use copying)
T11760: -w Use mark-region for the oldest generation (experimental)
T11760: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)
T11760:
T11760: -T Collect GC statistics (useful for in-program statistics access)
T11760: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)
T11760: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)
T11760: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)
T11760:
T11760:
T11760: -Z Don't squeeze out update frames on stack overflow
T11760: -B Sound the bell at the start of each garbage collection
T11760:
T11760: -hT Produce a heap profile grouped by closure type
T11760: -h Heap residency profile (output file <program>.hp)
T11760: -i<sec> Time between heap profile samples (seconds, default: 0.1)
T11760:
T11760: -C<secs> Context-switch interval in seconds.
T11760: 0 or no argument means switch as often as possible.
T11760: Default: 0.02 sec.
T11760: -V<secs> Master tick interval in seconds (0 == disable timer).
T11760: This sets the resolution for -C and the heap profile timer -i,
T11760: and is the frequency of time profile samples.
T11760: Default: 0.01 sec.
T11760:
T11760: --install-signal-handlers=<yes|no>
T11760: Install signal handlers (default: yes)
T11760: -e<n> Maximum number of outstanding local sparks (default: 4096)
T11760: -xm Base address to mmap memory in the GHCi linker
T11760: (hex; must be <80000000)
T11760: -xq The allocation limit given to a thread after it receives
T11760: an AllocationLimitExceeded exception. (default: 100k)
T11760:
T11760: -Mgrace=<n>
T11760: The amount of allocation after the program receives a
T11760: HeapOverflow exception before the exception is thrown again, if
T11760: the program is still exceeding the heap limit.
T11760:
T11760: RTS options may also be specified using the GHCRTS environment variable.
T11760:
T11760: Other RTS options may be available for programs compiled a different way.
T11760: The GHC User's Guide has full details.
T11760:
*** unexpected failure for T11760(normal)
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.5 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | bgamari |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"debug validation failures","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.5","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["bgamari"],"type":"Bug","description":"The most recent completed run of `validate-x86_64-linux-debug` on Circle CI (https://circleci.com/gh/ghc/ghc/7730) shows 13 unexpected failures and 1 unexpected pass.\r\n\r\n**Summary**\r\n\r\n{{{\r\nUnexpected passes:\r\n concurrent/T13615/T13615.run T13615 [unexpected] (ghci)\r\n\r\nUnexpected failures:\r\n codeGen/should_compile/T9329.run T9329 [exit code non-0] (normal)\r\n codeGen/should_run/cgrun018.run cgrun018 [exit code non-0] (normal)\r\n codeGen/should_run/cgrun018.run cgrun018 [exit code non-0] (g1)\r\n codeGen/should_run/cgrun069.run cgrun069 [exit code non-0] (normal)\r\n codeGen/should_run/cgrun069.run cgrun069 [exit code non-0] (g1)\r\n codeGen/should_run/T9577.run T9577 [bad stdout] (normal)\r\n concurrent/should_run/T3429.run T3429 [bad exit code] (debug_numa)\r\n driver/T14075/T14075.run T14075 [bad stderr] (normal)\r\n driver/recomp007/recomp007.run recomp007 [bad stderr] (normal)\r\n rts/T14702.run T14702 [bad exit code] (threaded1)\r\n rts/nursery-chunks1.run nursery-chunks1 [bad stderr] (threaded1)\r\n rts/numa001.run numa001 [bad exit code] (debug_numa)\r\n ../../libraries/base/tests/T11760.run T11760 [bad exit code] (normal)\r\n}}}\r\n\r\n---\r\n\r\n**T9329**\r\n{{{\r\nCompile failed (exit code 1) errors were:\r\n/tmp/ghc78722_0/ghc_4.hc: In function ‘bar’:\r\n\r\n/tmp/ghc78722_0/ghc_4.hc:18:12: error:\r\n error: ‘c6_info’ undeclared (first use in this function)\r\n *Sp = (W_)&c6_info;\r\n ^\r\n\r\n/tmp/ghc78722_0/ghc_4.hc:18:12: error:\r\n note: each undeclared identifier is reported only once for each function it appears in\r\n`gcc' failed in phase `C Compiler'. (Exit code: 1)\r\n\r\n*** unexpected failure for T9329(normal)\r\n}}}\r\n\r\n**cgrun018**\r\n{{{\r\nCompile failed (exit code 1) errors were:\r\n[1 of 1] Compiling Main ( cgrun018.hs, cgrun018.o )\r\nghc-stage2: panic! (the 'impossible' happened)\r\n (GHC version 8.7.20180731 for x86_64-unknown-linux):\r\n\tpprStatics: float\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n Call stack:\r\n CallStack (from HasCallStack):\r\n callStackDoc, called at compiler/utils/Outputable.hs:1164:37 in ghc:Outputable\r\n pprPanic, called at compiler/cmm/PprC.hs:521:5 in ghc:PprC\r\n\r\nPlease report this as a GHC bug: http://www.haskell.org/ghc/reportabug\r\n\r\n\r\n*** unexpected failure for cgrun018(normal)\r\n\r\n---\r\n\r\nCompile failed (exit code 1) errors were:\r\n[1 of 1] Compiling Main ( cgrun018.hs, cgrun018.o )\r\nghc-stage2: panic! (the 'impossible' happened)\r\n (GHC version 8.7.20180731 for x86_64-unknown-linux):\r\n\tpprStatics: float\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n F32\r\n Call stack:\r\n CallStack (from HasCallStack):\r\n callStackDoc, called at compiler/utils/Outputable.hs:1164:37 in ghc:Outputable\r\n pprPanic, called at compiler/cmm/PprC.hs:521:5 in ghc:PprC\r\n\r\nPlease report this as a GHC bug: http://www.haskell.org/ghc/reportabug\r\n\r\n\r\n*** unexpected failure for cgrun018(g1)\r\n}}}\r\n\r\n**cgrun069**\r\n{{{\r\nCompile failed (exit code 1) errors were:\r\n\r\n/tmp/ghc83995_0/ghc_4.hc:5:12: error:\r\n error: conflicting types for ‘memsetErr’\r\n const char memsetErr[] = \"Memset Error - align: %d size: %d\\012\";\r\n ^\r\n\r\nIn file included from /tmp/ghc83995_0/ghc_4.hc:3:0: error: \r\n\r\n/tmp/ghc83995_0/ghc_4.hc:4:6: error:\r\n note: previous declaration of ‘memsetErr’ was here\r\n ERW_(memsetErr);\r\n ^\r\n\r\n/home/ghc/project/includes/Stg.h:242:46: error:\r\n note: in definition of macro ‘ERW_’\r\n #define ERW_(X) extern StgWordArray (X)\r\n ^\r\n\r\n/tmp/ghc83995_0/ghc_4.hc:8:12: error:\r\n error: conflicting types for ‘memcpyErr’\r\n const char memcpyErr[] = \"Memcpy Error - align: %d size: %d\\012\";\r\n ^\r\n\r\nIn file included from /tmp/ghc83995_0/ghc_4.hc:3:0: error: \r\n\r\n/tmp/ghc83995_0/ghc_4.hc:7:6: error:\r\n note: previous declaration of ‘memcpyErr’ was here\r\n ERW_(memcpyErr);\r\n ^\r\n\r\n/home/ghc/project/includes/Stg.h:242:46: error:\r\n note: in definition of macro ‘ERW_’\r\n #define ERW_(X) extern StgWordArray (X)\r\n ^\r\n\r\n/tmp/ghc83995_0/ghc_4.hc:11:12: error:\r\n error: conflicting types for ‘memmoveErr’\r\n const char memmoveErr[] = \"Memmove Error Occured\\012\";\r\n ^\r\n\r\nIn file included from /tmp/ghc83995_0/ghc_4.hc:3:0: error: \r\n\r\n/tmp/ghc83995_0/ghc_4.hc:10:6: error:\r\n note: previous declaration of ‘memmoveErr’ was here\r\n ERW_(memmoveErr);\r\n ^\r\n\r\n/home/ghc/project/includes/Stg.h:242:46: error:\r\n note: in definition of macro ‘ERW_’\r\n #define ERW_(X) extern StgWordArray (X)\r\n ^\r\n`gcc' failed in phase `C Compiler'. (Exit code: 1)\r\n\r\n*** unexpected failure for cgrun069(normal)\r\n\r\n---\r\n\r\nCompile failed (exit code 1) errors were:\r\n\r\n/tmp/ghc84416_0/ghc_4.hc:5:12: error:\r\n error: conflicting types for ‘memsetErr’\r\n const char memsetErr[] = \"Memset Error - align: %d size: %d\\012\";\r\n ^\r\n\r\nIn file included from /tmp/ghc84416_0/ghc_4.hc:3:0: error: \r\n\r\n/tmp/ghc84416_0/ghc_4.hc:4:6: error:\r\n note: previous declaration of ‘memsetErr’ was here\r\n ERW_(memsetErr);\r\n ^\r\n\r\n/home/ghc/project/includes/Stg.h:242:46: error:\r\n note: in definition of macro ‘ERW_’\r\n #define ERW_(X) extern StgWordArray (X)\r\n ^\r\n\r\n/tmp/ghc84416_0/ghc_4.hc:8:12: error:\r\n error: conflicting types for ‘memcpyErr’\r\n const char memcpyErr[] = \"Memcpy Error - align: %d size: %d\\012\";\r\n ^\r\n\r\nIn file included from /tmp/ghc84416_0/ghc_4.hc:3:0: error: \r\n\r\n/tmp/ghc84416_0/ghc_4.hc:7:6: error:\r\n note: previous declaration of ‘memcpyErr’ was here\r\n ERW_(memcpyErr);\r\n ^\r\n\r\n/home/ghc/project/includes/Stg.h:242:46: error:\r\n note: in definition of macro ‘ERW_’\r\n #define ERW_(X) extern StgWordArray (X)\r\n ^\r\n\r\n/tmp/ghc84416_0/ghc_4.hc:11:12: error:\r\n error: conflicting types for ‘memmoveErr’\r\n const char memmoveErr[] = \"Memmove Error Occured\\012\";\r\n ^\r\n\r\nIn file included from /tmp/ghc84416_0/ghc_4.hc:3:0: error: \r\n\r\n/tmp/ghc84416_0/ghc_4.hc:10:6: error:\r\n note: previous declaration of ‘memmoveErr’ was here\r\n ERW_(memmoveErr);\r\n ^\r\n\r\n/home/ghc/project/includes/Stg.h:242:46: error:\r\n note: in definition of macro ‘ERW_’\r\n #define ERW_(X) extern StgWordArray (X)\r\n ^\r\n`gcc' failed in phase `C Compiler'. (Exit code: 1)\r\n\r\n*** unexpected failure for cgrun069(g1)\r\n}}}\r\n\r\n**T9577**\r\n{{{\r\n--- ./codeGen/should_run/T9577.run/T9577.stdout.normalised\t2018-08-02 03:38:39.932680724 +0000\r\n+++ ./codeGen/should_run/T9577.run/T9577.run.stdout.normalised\t2018-08-02 03:38:39.932680724 +0000\r\n@@ -1 +1 @@\r\n-True\r\n+False\r\n*** unexpected failure for T9577(normal)\r\n}}}\r\n\r\n**T3429**\r\n{{{\r\nWrong exit code for T3429(debug_numa)(expected 0 , actual 1 )\r\nStderr ( T3429 ):\r\nT3429: unknown RTS option: -N2\r\nT3429: \r\nT3429: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>\r\nT3429: \r\nT3429: +RTS Indicates run time system options follow\r\nT3429: -RTS Indicates program arguments follow\r\nT3429: --RTS Indicates that ALL subsequent arguments will be given to the\r\nT3429: program (including any of these RTS flags)\r\nT3429: \r\nT3429: The following run time system options are available:\r\nT3429: \r\nT3429: -? Prints this message and exits; the program is not executed\r\nT3429: --info Print information about the RTS used by this program\r\nT3429: \r\nT3429: -K<size> Sets the maximum stack size (default: 80% of the heap)\r\nT3429: Egs: -K32k -K512k -K8M\r\nT3429: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m\r\nT3429: -kc<size> Sets the stack chunk size (default 32k)\r\nT3429: -kb<size> Sets the stack chunk buffer size (default 1k)\r\nT3429: \r\nT3429: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k\r\nT3429: -AL<size> Sets the amount of large-object memory that can be allocated\r\nT3429: before a GC is triggered (default: the value of -A)\r\nT3429: -n<size> Allocation area chunk size (0 = disabled, default: 0)\r\nT3429: -O<size> Sets the minimum size of the old generation (default 1M)\r\nT3429: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G\r\nT3429: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G\r\nT3429: -xb<addr> Sets the address from which a suitable start for the heap memory\r\nT3429: will be searched from. This is useful if the default address\r\nT3429: clashes with some third-party library.\r\nT3429: -m<n> Minimum % of heap which must be available (default 3%)\r\nT3429: -G<n> Number of generations (default: 2)\r\nT3429: -c<n> Use in-place compaction instead of copying in the oldest generation\r\nT3429: when live data is at least <n>% of the maximum heap size set with\r\nT3429: -M (default: 30%)\r\nT3429: -c Use in-place compaction for all oldest generation collections\r\nT3429: (the default is to use copying)\r\nT3429: -w Use mark-region for the oldest generation (experimental)\r\nT3429: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)\r\nT3429: \r\nT3429: -T Collect GC statistics (useful for in-program statistics access)\r\nT3429: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)\r\nT3429: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)\r\nT3429: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)\r\nT3429: \r\nT3429: \r\nT3429: -Z Don't squeeze out update frames on stack overflow\r\nT3429: -B Sound the bell at the start of each garbage collection\r\nT3429: \r\nT3429: -hT Produce a heap profile grouped by closure type\r\nT3429: -l[flags] Log events in binary format to the file <program>.eventlog\r\nT3429: -v[flags] Log events to stderr\r\nT3429: where [flags] can contain:\r\nT3429: s scheduler events\r\nT3429: g GC and heap events\r\nT3429: p par spark events (sampled)\r\nT3429: f par spark events (full detail)\r\nT3429: u user events (emitted from Haskell code)\r\nT3429: a all event classes above\r\nT3429: t add time stamps (only useful with -v)\r\nT3429: -x disable an event class, for any flag above\r\nT3429: the initial enabled event classes are 'sgpu'\r\nT3429: \r\nT3429: -h Heap residency profile (output file <program>.hp)\r\nT3429: -i<sec> Time between heap profile samples (seconds, default: 0.1)\r\nT3429: \r\nT3429: -r<file> Produce ticky-ticky statistics (with -rstderr for stderr)\r\nT3429: \r\nT3429: -C<secs> Context-switch interval in seconds.\r\nT3429: 0 or no argument means switch as often as possible.\r\nT3429: Default: 0.02 sec.\r\nT3429: -V<secs> Master tick interval in seconds (0 == disable timer).\r\nT3429: This sets the resolution for -C and the heap profile timer -i,\r\nT3429: and is the frequency of time profile samples.\r\nT3429: Default: 0.01 sec.\r\nT3429: \r\nT3429: -Ds DEBUG: scheduler\r\nT3429: -Di DEBUG: interpreter\r\nT3429: -Dw DEBUG: weak\r\nT3429: -DG DEBUG: gccafs\r\nT3429: -Dg DEBUG: gc\r\nT3429: -Db DEBUG: block\r\nT3429: -DS DEBUG: sanity\r\nT3429: -Dt DEBUG: stable\r\nT3429: -Dp DEBUG: prof\r\nT3429: -Da DEBUG: apply\r\nT3429: -Dl DEBUG: linker\r\nT3429: -Dm DEBUG: stm\r\nT3429: -Dz DEBUG: stack squeezing\r\nT3429: -Dc DEBUG: program coverage\r\nT3429: -Dr DEBUG: sparks\r\nT3429: -DC DEBUG: compact\r\nT3429: \r\nT3429: NOTE: DEBUG events are sent to stderr by default; add -l to create a\r\nT3429: binary event log file instead.\r\nT3429: \r\nT3429: --install-signal-handlers=<yes|no>\r\nT3429: Install signal handlers (default: yes)\r\nT3429: -e<n> Maximum number of outstanding local sparks (default: 4096)\r\nT3429: -xm Base address to mmap memory in the GHCi linker\r\nT3429: (hex; must be <80000000)\r\nT3429: -xq The allocation limit given to a thread after it receives\r\nT3429: an AllocationLimitExceeded exception. (default: 100k)\r\nT3429: \r\nT3429: -Mgrace=<n>\r\nT3429: The amount of allocation after the program receives a\r\nT3429: HeapOverflow exception before the exception is thrown again, if\r\nT3429: the program is still exceeding the heap limit.\r\nT3429: \r\nT3429: RTS options may also be specified using the GHCRTS environment variable.\r\nT3429: \r\nT3429: Other RTS options may be available for programs compiled a different way.\r\nT3429: The GHC User's Guide has full details.\r\nT3429:\r\n*** unexpected failure for T3429(debug_numa)\r\n}}}\r\n\r\n**T13615**\r\n{{{\r\n*** unexpected pass for T13615(ghci)\r\n}}}\r\n\r\n**T14075**\r\n{{{\r\nActual stderr output differs from expected:\r\n--- ./driver/T14075/T14075.run/T14075.stderr.normalised\t2018-08-02 03:40:01.063504007 +0000\r\n+++ ./driver/T14075/T14075.run/T14075.run.stderr.normalised\t2018-08-02 03:40:01.063504007 +0000\r\n@@ -1,3 +1,4 @@\r\n+ghc: setNumCapabilities: not supported on this platform\r\n \r\n F.hs:1:1:\r\n instance O.O F.F -- Defined at F.hs-boot:6:10\r\n*** unexpected failure for T14075(normal)\r\n}}}\r\n\r\n**recomp007**\r\n{{{\r\nActual stderr output differs from expected:\r\n--- /dev/null\t2018-08-01 14:11:13.420752000 +0000\r\n+++ ./driver/recomp007/recomp007.run/recomp007.run.stderr.normalised\t2018-08-02 03:40:46.313078664 +0000\r\n@@ -0,0 +1,122 @@\r\n+WARNING: file compiler/utils/ListSetOps.hs, line 58\r\n+ []\r\n+ [Distribution.Backpack, Distribution.Backpack.FullUnitId,\r\n+ Distribution.Backpack.ModuleShape,\r\n+ Distribution.Backpack.PreModuleShape,\r\n+ Distribution.Backpack.ReadyComponent,\r\n+ Distribution.CabalSpecVersion, Distribution.Compat.Graph,\r\n+ Distribution.Compat.Semigroup, Distribution.Compiler,\r\n+ Distribution.License, Distribution.ModuleName,\r\n+ Distribution.Parsec.Common, Distribution.SPDX.License,\r\n+ Distribution.SPDX.LicenseExceptionId,\r\n+ Distribution.SPDX.LicenseExpression, Distribution.SPDX.LicenseId,\r\n+ Distribution.SPDX.LicenseReference,\r\n+ Distribution.Simple.BuildTarget, Distribution.Simple.Compiler,\r\n+ Distribution.Simple.Doctest, Distribution.Simple.Flag,\r\n+ Distribution.Simple.Haddock, Distribution.Simple.InstallDirs,\r\n+ Distribution.Simple.PackageIndex, Distribution.Simple.Program.Find,\r\n+ Distribution.Simple.Program.GHC, Distribution.Simple.Program.Types,\r\n+ Distribution.Simple.Setup, Distribution.System,\r\n+ Distribution.Types.AbiDependency, Distribution.Types.AbiHash,\r\n+ Distribution.Types.Benchmark,\r\n+ Distribution.Types.BenchmarkInterface,\r\n+ Distribution.Types.BenchmarkType, Distribution.Types.BuildInfo,\r\n+ Distribution.Types.BuildType, Distribution.Types.ComponentId,\r\n+ Distribution.Types.ComponentLocalBuildInfo,\r\n+ Distribution.Types.ComponentName,\r\n+ Distribution.Types.ComponentRequestedSpec,\r\n+ Distribution.Types.CondTree, Distribution.Types.Condition,\r\n+ Distribution.Types.Dependency, Distribution.Types.ExeDependency,\r\n+ Distribution.Types.Executable, Distribution.Types.ExecutableScope,\r\n+ Distribution.Types.ExposedModule, Distribution.Types.ForeignLib,\r\n+ Distribution.Types.ForeignLibOption,\r\n+ Distribution.Types.ForeignLibType,\r\n+ Distribution.Types.GenericPackageDescription,\r\n+ Distribution.Types.IncludeRenaming,\r\n+ Distribution.Types.InstalledPackageInfo,\r\n+ Distribution.Types.LegacyExeDependency, Distribution.Types.Library,\r\n+ Distribution.Types.LocalBuildInfo, Distribution.Types.Mixin,\r\n+ Distribution.Types.Module, Distribution.Types.ModuleReexport,\r\n+ Distribution.Types.ModuleRenaming,\r\n+ Distribution.Types.MungedPackageId,\r\n+ Distribution.Types.MungedPackageName,\r\n+ Distribution.Types.PackageDescription,\r\n+ Distribution.Types.PackageId, Distribution.Types.PackageName,\r\n+ Distribution.Types.PkgconfigDependency,\r\n+ Distribution.Types.PkgconfigName,\r\n+ Distribution.Types.SetupBuildInfo, Distribution.Types.SourceRepo,\r\n+ Distribution.Types.TargetInfo, Distribution.Types.TestSuite,\r\n+ Distribution.Types.TestSuiteInterface, Distribution.Types.TestType,\r\n+ Distribution.Types.UnitId, Distribution.Types.UnqualComponentName,\r\n+ Distribution.Types.Version, Distribution.Types.VersionRange,\r\n+ Distribution.Utils.ShortText, Distribution.Verbosity,\r\n+ Language.Haskell.Extension, Control.Applicative, Data.Complex,\r\n+ Data.Functor.Compose, Data.Functor.Const, Data.Functor.Identity,\r\n+ Data.Functor.Product, Data.Functor.Sum, Data.Monoid,\r\n+ Data.Semigroup, Data.Semigroup.Internal, Data.Version, Data.Void,\r\n+ GHC.Exts, GHC.Generics, GHC.IO.Exception, Data.Graph,\r\n+ Data.IntMap.Internal, Data.IntSet.Internal, Data.Map.Internal,\r\n+ Data.Sequence.Internal, Data.Set.Internal, Data.Tree,\r\n+ Text.PrettyPrint.Annotated.HughesPJ, Text.PrettyPrint.HughesPJ,\r\n+ Data.Text, Data.Text.Lazy]\r\n+WARNING: file compiler/utils/ListSetOps.hs, line 58\r\n+ [Distribution.Backpack, Distribution.Backpack.FullUnitId,\r\n+ Distribution.Backpack.ModuleShape,\r\n+ Distribution.Backpack.PreModuleShape,\r\n+ Distribution.Backpack.ReadyComponent,\r\n+ Distribution.CabalSpecVersion, Distribution.Compat.Graph,\r\n+ Distribution.Compat.Semigroup, Distribution.Compiler,\r\n+ Distribution.License, Distribution.ModuleName,\r\n+ Distribution.Parsec.Common, Distribution.SPDX.License,\r\n+ Distribution.SPDX.LicenseExceptionId,\r\n+ Distribution.SPDX.LicenseExpression, Distribution.SPDX.LicenseId,\r\n+ Distribution.SPDX.LicenseReference,\r\n+ Distribution.Simple.BuildTarget, Distribution.Simple.Compiler,\r\n+ Distribution.Simple.Doctest, Distribution.Simple.Flag,\r\n+ Distribution.Simple.Haddock, Distribution.Simple.InstallDirs,\r\n+ Distribution.Simple.PackageIndex, Distribution.Simple.Program.Find,\r\n+ Distribution.Simple.Program.GHC, Distribution.Simple.Program.Types,\r\n+ Distribution.Simple.Setup, Distribution.System,\r\n+ Distribution.Types.AbiDependency, Distribution.Types.AbiHash,\r\n+ Distribution.Types.Benchmark,\r\n+ Distribution.Types.BenchmarkInterface,\r\n+ Distribution.Types.BenchmarkType, Distribution.Types.BuildInfo,\r\n+ Distribution.Types.BuildType, Distribution.Types.ComponentId,\r\n+ Distribution.Types.ComponentLocalBuildInfo,\r\n+ Distribution.Types.ComponentName,\r\n+ Distribution.Types.ComponentRequestedSpec,\r\n+ Distribution.Types.CondTree, Distribution.Types.Condition,\r\n+ Distribution.Types.Dependency, Distribution.Types.ExeDependency,\r\n+ Distribution.Types.Executable, Distribution.Types.ExecutableScope,\r\n+ Distribution.Types.ExposedModule, Distribution.Types.ForeignLib,\r\n+ Distribution.Types.ForeignLibOption,\r\n+ Distribution.Types.ForeignLibType,\r\n+ Distribution.Types.GenericPackageDescription,\r\n+ Distribution.Types.IncludeRenaming,\r\n+ Distribution.Types.InstalledPackageInfo,\r\n+ Distribution.Types.LegacyExeDependency, Distribution.Types.Library,\r\n+ Distribution.Types.LocalBuildInfo, Distribution.Types.Mixin,\r\n+ Distribution.Types.Module, Distribution.Types.ModuleReexport,\r\n+ Distribution.Types.ModuleRenaming,\r\n+ Distribution.Types.MungedPackageId,\r\n+ Distribution.Types.MungedPackageName,\r\n+ Distribution.Types.PackageDescription,\r\n+ Distribution.Types.PackageId, Distribution.Types.PackageName,\r\n+ Distribution.Types.PkgconfigDependency,\r\n+ Distribution.Types.PkgconfigName,\r\n+ Distribution.Types.SetupBuildInfo, Distribution.Types.SourceRepo,\r\n+ Distribution.Types.TargetInfo, Distribution.Types.TestSuite,\r\n+ Distribution.Types.TestSuiteInterface, Distribution.Types.TestType,\r\n+ Distribution.Types.UnitId, Distribution.Types.UnqualComponentName,\r\n+ Distribution.Types.Version, Distribution.Types.VersionRange,\r\n+ Distribution.Utils.ShortText, Distribution.Verbosity,\r\n+ Language.Haskell.Extension, Control.Applicative, Data.Complex,\r\n+ Data.Functor.Compose, Data.Functor.Const, Data.Functor.Identity,\r\n+ Data.Functor.Product, Data.Functor.Sum, Data.Monoid,\r\n+ Data.Semigroup, Data.Semigroup.Internal, Data.Version, Data.Void,\r\n+ GHC.Exts, GHC.Generics, GHC.IO.Exception, Data.Graph,\r\n+ Data.IntMap.Internal, Data.IntSet.Internal, Data.Map.Internal,\r\n+ Data.Sequence.Internal, Data.Set.Internal, Data.Tree,\r\n+ Text.PrettyPrint.Annotated.HughesPJ, Text.PrettyPrint.HughesPJ,\r\n+ Data.Text, Data.Text.Lazy]\r\n+ []\r\n*** unexpected failure for recomp007(normal)\r\n}}}\r\n\r\n**T14702**\r\n{{{\r\nWrong exit code for T14702(threaded1)(expected 0 , actual 1 )\r\nStderr ( T14702 ):\r\nT14702: unknown RTS option: -N8\r\nT14702: \r\nT14702: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>\r\nT14702: \r\nT14702: +RTS Indicates run time system options follow\r\nT14702: -RTS Indicates program arguments follow\r\nT14702: --RTS Indicates that ALL subsequent arguments will be given to the\r\nT14702: program (including any of these RTS flags)\r\nT14702: \r\nT14702: The following run time system options are available:\r\nT14702: \r\nT14702: -? Prints this message and exits; the program is not executed\r\nT14702: --info Print information about the RTS used by this program\r\nT14702: \r\nT14702: -K<size> Sets the maximum stack size (default: 80% of the heap)\r\nT14702: Egs: -K32k -K512k -K8M\r\nT14702: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m\r\nT14702: -kc<size> Sets the stack chunk size (default 32k)\r\nT14702: -kb<size> Sets the stack chunk buffer size (default 1k)\r\nT14702: \r\nT14702: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k\r\nT14702: -AL<size> Sets the amount of large-object memory that can be allocated\r\nT14702: before a GC is triggered (default: the value of -A)\r\nT14702: -n<size> Allocation area chunk size (0 = disabled, default: 0)\r\nT14702: -O<size> Sets the minimum size of the old generation (default 1M)\r\nT14702: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G\r\nT14702: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G\r\nT14702: -xb<addr> Sets the address from which a suitable start for the heap memory\r\nT14702: will be searched from. This is useful if the default address\r\nT14702: clashes with some third-party library.\r\nT14702: -m<n> Minimum % of heap which must be available (default 3%)\r\nT14702: -G<n> Number of generations (default: 2)\r\nT14702: -c<n> Use in-place compaction instead of copying in the oldest generation\r\nT14702: when live data is at least <n>% of the maximum heap size set with\r\nT14702: -M (default: 30%)\r\nT14702: -c Use in-place compaction for all oldest generation collections\r\nT14702: (the default is to use copying)\r\nT14702: -w Use mark-region for the oldest generation (experimental)\r\nT14702: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)\r\nT14702: \r\nT14702: -T Collect GC statistics (useful for in-program statistics access)\r\nT14702: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)\r\nT14702: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)\r\nT14702: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)\r\nT14702: \r\nT14702: \r\nT14702: -Z Don't squeeze out update frames on stack overflow\r\nT14702: -B Sound the bell at the start of each garbage collection\r\nT14702: \r\nT14702: -hT Produce a heap profile grouped by closure type\r\nT14702: -l[flags] Log events in binary format to the file <program>.eventlog\r\nT14702: -v[flags] Log events to stderr\r\nT14702: where [flags] can contain:\r\nT14702: s scheduler events\r\nT14702: g GC and heap events\r\nT14702: p par spark events (sampled)\r\nT14702: f par spark events (full detail)\r\nT14702: u user events (emitted from Haskell code)\r\nT14702: a all event classes above\r\nT14702: t add time stamps (only useful with -v)\r\nT14702: -x disable an event class, for any flag above\r\nT14702: the initial enabled event classes are 'sgpu'\r\nT14702: \r\nT14702: -h Heap residency profile (output file <program>.hp)\r\nT14702: -i<sec> Time between heap profile samples (seconds, default: 0.1)\r\nT14702: \r\nT14702: -r<file> Produce ticky-ticky statistics (with -rstderr for stderr)\r\nT14702: \r\nT14702: -C<secs> Context-switch interval in seconds.\r\nT14702: 0 or no argument means switch as often as possible.\r\nT14702: Default: 0.02 sec.\r\nT14702: -V<secs> Master tick interval in seconds (0 == disable timer).\r\nT14702: This sets the resolution for -C and the heap profile timer -i,\r\nT14702: and is the frequency of time profile samples.\r\nT14702: Default: 0.01 sec.\r\nT14702: \r\nT14702: -Ds DEBUG: scheduler\r\nT14702: -Di DEBUG: interpreter\r\nT14702: -Dw DEBUG: weak\r\nT14702: -DG DEBUG: gccafs\r\nT14702: -Dg DEBUG: gc\r\nT14702: -Db DEBUG: block\r\nT14702: -DS DEBUG: sanity\r\nT14702: -Dt DEBUG: stable\r\nT14702: -Dp DEBUG: prof\r\nT14702: -Da DEBUG: apply\r\nT14702: -Dl DEBUG: linker\r\nT14702: -Dm DEBUG: stm\r\nT14702: -Dz DEBUG: stack squeezing\r\nT14702: -Dc DEBUG: program coverage\r\nT14702: -Dr DEBUG: sparks\r\nT14702: -DC DEBUG: compact\r\nT14702: \r\nT14702: NOTE: DEBUG events are sent to stderr by default; add -l to create a\r\nT14702: binary event log file instead.\r\nT14702: \r\nT14702: --install-signal-handlers=<yes|no>\r\nT14702: Install signal handlers (default: yes)\r\nT14702: -e<n> Maximum number of outstanding local sparks (default: 4096)\r\nT14702: -xm Base address to mmap memory in the GHCi linker\r\nT14702: (hex; must be <80000000)\r\nT14702: -xq The allocation limit given to a thread after it receives\r\nT14702: an AllocationLimitExceeded exception. (default: 100k)\r\nT14702: \r\nT14702: -Mgrace=<n>\r\nT14702: The amount of allocation after the program receives a\r\nT14702: HeapOverflow exception before the exception is thrown again, if\r\nT14702: the program is still exceeding the heap limit.\r\nT14702: \r\nT14702: RTS options may also be specified using the GHCRTS environment variable.\r\nT14702: \r\nT14702: Other RTS options may be available for programs compiled a different way.\r\nT14702: The GHC User's Guide has full details.\r\nT14702:\r\n*** unexpected failure for T14702(threaded1)\r\n}}}\r\n\r\n\r\n**nursery-chunks1**\r\n{{{\r\nActual stderr output differs from expected:\r\n--- /dev/null\t2018-08-01 14:11:13.420752000 +0000\r\n+++ ./rts/nursery-chunks1.run/nursery-chunks1.run.stderr.normalised\t2018-08-02 03:45:18.786560729 +0000\r\n@@ -0,0 +1,3 @@\r\n+nursery-chunks1: setNumCapabilities: not supported on this platform\r\n+nursery-chunks1: setNumCapabilities: not supported on this platform\r\n+nursery-chunks1: setNumCapabilities: not supported on this platform\r\n*** unexpected failure for nursery-chunks1(threaded1)\r\n}}}\r\n\r\n**numa001**\r\n{{{\r\nWrong exit code for numa001(debug_numa)(expected 0 , actual 1 )\r\nStderr ( numa001 ):\r\nnuma001: unknown RTS option: -N2\r\nnuma001: \r\nnuma001: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>\r\nnuma001: \r\nnuma001: +RTS Indicates run time system options follow\r\nnuma001: -RTS Indicates program arguments follow\r\nnuma001: --RTS Indicates that ALL subsequent arguments will be given to the\r\nnuma001: program (including any of these RTS flags)\r\nnuma001: \r\nnuma001: The following run time system options are available:\r\nnuma001: \r\nnuma001: -? Prints this message and exits; the program is not executed\r\nnuma001: --info Print information about the RTS used by this program\r\nnuma001: \r\nnuma001: -K<size> Sets the maximum stack size (default: 80% of the heap)\r\nnuma001: Egs: -K32k -K512k -K8M\r\nnuma001: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m\r\nnuma001: -kc<size> Sets the stack chunk size (default 32k)\r\nnuma001: -kb<size> Sets the stack chunk buffer size (default 1k)\r\nnuma001: \r\nnuma001: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k\r\nnuma001: -AL<size> Sets the amount of large-object memory that can be allocated\r\nnuma001: before a GC is triggered (default: the value of -A)\r\nnuma001: -n<size> Allocation area chunk size (0 = disabled, default: 0)\r\nnuma001: -O<size> Sets the minimum size of the old generation (default 1M)\r\nnuma001: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G\r\nnuma001: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G\r\nnuma001: -xb<addr> Sets the address from which a suitable start for the heap memory\r\nnuma001: will be searched from. This is useful if the default address\r\nnuma001: clashes with some third-party library.\r\nnuma001: -m<n> Minimum % of heap which must be available (default 3%)\r\nnuma001: -G<n> Number of generations (default: 2)\r\nnuma001: -c<n> Use in-place compaction instead of copying in the oldest generation\r\nnuma001: when live data is at least <n>% of the maximum heap size set with\r\nnuma001: -M (default: 30%)\r\nnuma001: -c Use in-place compaction for all oldest generation collections\r\nnuma001: (the default is to use copying)\r\nnuma001: -w Use mark-region for the oldest generation (experimental)\r\nnuma001: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)\r\nnuma001: \r\nnuma001: -T Collect GC statistics (useful for in-program statistics access)\r\nnuma001: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)\r\nnuma001: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)\r\nnuma001: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)\r\nnuma001: \r\nnuma001: \r\nnuma001: -Z Don't squeeze out update frames on stack overflow\r\nnuma001: -B Sound the bell at the start of each garbage collection\r\nnuma001: \r\nnuma001: -hT Produce a heap profile grouped by closure type\r\nnuma001: -l[flags] Log events in binary format to the file <program>.eventlog\r\nnuma001: -v[flags] Log events to stderr\r\nnuma001: where [flags] can contain:\r\nnuma001: s scheduler events\r\nnuma001: g GC and heap events\r\nnuma001: p par spark events (sampled)\r\nnuma001: f par spark events (full detail)\r\nnuma001: u user events (emitted from Haskell code)\r\nnuma001: a all event classes above\r\nnuma001: t add time stamps (only useful with -v)\r\nnuma001: -x disable an event class, for any flag above\r\nnuma001: the initial enabled event classes are 'sgpu'\r\nnuma001: \r\nnuma001: -h Heap residency profile (output file <program>.hp)\r\nnuma001: -i<sec> Time between heap profile samples (seconds, default: 0.1)\r\nnuma001: \r\nnuma001: -r<file> Produce ticky-ticky statistics (with -rstderr for stderr)\r\nnuma001: \r\nnuma001: -C<secs> Context-switch interval in seconds.\r\nnuma001: 0 or no argument means switch as often as possible.\r\nnuma001: Default: 0.02 sec.\r\nnuma001: -V<secs> Master tick interval in seconds (0 == disable timer).\r\nnuma001: This sets the resolution for -C and the heap profile timer -i,\r\nnuma001: and is the frequency of time profile samples.\r\nnuma001: Default: 0.01 sec.\r\nnuma001: \r\nnuma001: -Ds DEBUG: scheduler\r\nnuma001: -Di DEBUG: interpreter\r\nnuma001: -Dw DEBUG: weak\r\nnuma001: -DG DEBUG: gccafs\r\nnuma001: -Dg DEBUG: gc\r\nnuma001: -Db DEBUG: block\r\nnuma001: -DS DEBUG: sanity\r\nnuma001: -Dt DEBUG: stable\r\nnuma001: -Dp DEBUG: prof\r\nnuma001: -Da DEBUG: apply\r\nnuma001: -Dl DEBUG: linker\r\nnuma001: -Dm DEBUG: stm\r\nnuma001: -Dz DEBUG: stack squeezing\r\nnuma001: -Dc DEBUG: program coverage\r\nnuma001: -Dr DEBUG: sparks\r\nnuma001: -DC DEBUG: compact\r\nnuma001: \r\nnuma001: NOTE: DEBUG events are sent to stderr by default; add -l to create a\r\nnuma001: binary event log file instead.\r\nnuma001: \r\nnuma001: --install-signal-handlers=<yes|no>\r\nnuma001: Install signal handlers (default: yes)\r\nnuma001: -e<n> Maximum number of outstanding local sparks (default: 4096)\r\nnuma001: -xm Base address to mmap memory in the GHCi linker\r\nnuma001: (hex; must be <80000000)\r\nnuma001: -xq The allocation limit given to a thread after it receives\r\nnuma001: an AllocationLimitExceeded exception. (default: 100k)\r\nnuma001: \r\nnuma001: -Mgrace=<n>\r\nnuma001: The amount of allocation after the program receives a\r\nnuma001: HeapOverflow exception before the exception is thrown again, if\r\nnuma001: the program is still exceeding the heap limit.\r\nnuma001: \r\nnuma001: RTS options may also be specified using the GHCRTS environment variable.\r\nnuma001: \r\nnuma001: Other RTS options may be available for programs compiled a different way.\r\nnuma001: The GHC User's Guide has full details.\r\nnuma001:\r\n*** unexpected failure for numa001(debug_numa)\r\n}}}\r\n\r\n**T11760**\r\n{{{\r\nWrong exit code for T11760(normal)(expected 0 , actual 1 )\r\nStderr ( T11760 ):\r\nT11760: unknown RTS option: -N2\r\nT11760: \r\nT11760: Usage: <prog> <args> [+RTS <rtsopts> | -RTS <args>] ... --RTS <args>\r\nT11760: \r\nT11760: +RTS Indicates run time system options follow\r\nT11760: -RTS Indicates program arguments follow\r\nT11760: --RTS Indicates that ALL subsequent arguments will be given to the\r\nT11760: program (including any of these RTS flags)\r\nT11760: \r\nT11760: The following run time system options are available:\r\nT11760: \r\nT11760: -? Prints this message and exits; the program is not executed\r\nT11760: --info Print information about the RTS used by this program\r\nT11760: \r\nT11760: -K<size> Sets the maximum stack size (default: 80% of the heap)\r\nT11760: Egs: -K32k -K512k -K8M\r\nT11760: -ki<size> Sets the initial thread stack size (default 1k) Egs: -ki4k -ki2m\r\nT11760: -kc<size> Sets the stack chunk size (default 32k)\r\nT11760: -kb<size> Sets the stack chunk buffer size (default 1k)\r\nT11760: \r\nT11760: -A<size> Sets the minimum allocation area size (default 1m) Egs: -A20m -A10k\r\nT11760: -AL<size> Sets the amount of large-object memory that can be allocated\r\nT11760: before a GC is triggered (default: the value of -A)\r\nT11760: -n<size> Allocation area chunk size (0 = disabled, default: 0)\r\nT11760: -O<size> Sets the minimum size of the old generation (default 1M)\r\nT11760: -M<size> Sets the maximum heap size (default unlimited) Egs: -M256k -M1G\r\nT11760: -H<size> Sets the minimum heap size (default 0M) Egs: -H24m -H1G\r\nT11760: -xb<addr> Sets the address from which a suitable start for the heap memory\r\nT11760: will be searched from. This is useful if the default address\r\nT11760: clashes with some third-party library.\r\nT11760: -m<n> Minimum % of heap which must be available (default 3%)\r\nT11760: -G<n> Number of generations (default: 2)\r\nT11760: -c<n> Use in-place compaction instead of copying in the oldest generation\r\nT11760: when live data is at least <n>% of the maximum heap size set with\r\nT11760: -M (default: 30%)\r\nT11760: -c Use in-place compaction for all oldest generation collections\r\nT11760: (the default is to use copying)\r\nT11760: -w Use mark-region for the oldest generation (experimental)\r\nT11760: -I<sec> Perform full GC after <sec> idle time (default: 0.3, 0 == off)\r\nT11760: \r\nT11760: -T Collect GC statistics (useful for in-program statistics access)\r\nT11760: -t[<file>] One-line GC statistics (if <file> omitted, uses stderr)\r\nT11760: -s[<file>] Summary GC statistics (if <file> omitted, uses stderr)\r\nT11760: -S[<file>] Detailed GC statistics (if <file> omitted, uses stderr)\r\nT11760: \r\nT11760: \r\nT11760: -Z Don't squeeze out update frames on stack overflow\r\nT11760: -B Sound the bell at the start of each garbage collection\r\nT11760: \r\nT11760: -hT Produce a heap profile grouped by closure type\r\nT11760: -h Heap residency profile (output file <program>.hp)\r\nT11760: -i<sec> Time between heap profile samples (seconds, default: 0.1)\r\nT11760: \r\nT11760: -C<secs> Context-switch interval in seconds.\r\nT11760: 0 or no argument means switch as often as possible.\r\nT11760: Default: 0.02 sec.\r\nT11760: -V<secs> Master tick interval in seconds (0 == disable timer).\r\nT11760: This sets the resolution for -C and the heap profile timer -i,\r\nT11760: and is the frequency of time profile samples.\r\nT11760: Default: 0.01 sec.\r\nT11760: \r\nT11760: --install-signal-handlers=<yes|no>\r\nT11760: Install signal handlers (default: yes)\r\nT11760: -e<n> Maximum number of outstanding local sparks (default: 4096)\r\nT11760: -xm Base address to mmap memory in the GHCi linker\r\nT11760: (hex; must be <80000000)\r\nT11760: -xq The allocation limit given to a thread after it receives\r\nT11760: an AllocationLimitExceeded exception. (default: 100k)\r\nT11760: \r\nT11760: -Mgrace=<n>\r\nT11760: The amount of allocation after the program receives a\r\nT11760: HeapOverflow exception before the exception is thrown again, if\r\nT11760: the program is still exceeding the heap limit.\r\nT11760: \r\nT11760: RTS options may also be specified using the GHCRTS environment variable.\r\nT11760: \r\nT11760: Other RTS options may be available for programs compiled a different way.\r\nT11760: The GHC User's Guide has full details.\r\nT11760:\r\n*** unexpected failure for T11760(normal)\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/15465PAP object entered2019-07-07T18:04:39Zrecursion-ninjaPAP object enteredThis occurred while running our sizeable program I have no idea what the program was doing when this error was encountered but the compiler asked me to report it here:
```
programName: internal error: PAP object entered!
(GHC versio...This occurred while running our sizeable program I have no idea what the program was doing when this error was encountered but the compiler asked me to report it here:
```
programName: internal error: PAP object entered!
(GHC version 8.4.3 for x86_64_unknown_linux)
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
Aborted
```
I don't have a way to reproduce this yet.8.10.1https://gitlab.haskell.org/ghc/ghc/-/issues/15463"Serious" validation failures on i6862019-07-07T18:04:40ZAlp Mestanogullari"Serious" validation failures on i686A very recent run of `./validate` on i686 revealed 6 failures, 4 of which I'm hopefully fixing with [D5031](https://phabricator.haskell.org/D5031), but the other two look more serious.
The circle ci build logs are here: https://circleci...A very recent run of `./validate` on i686 revealed 6 failures, 4 of which I'm hopefully fixing with [D5031](https://phabricator.haskell.org/D5031), but the other two look more serious.
The circle ci build logs are here: https://circleci.com/gh/ghc/ghc/7578
One of the remaining failures in particular seems somewhat critical:
```
Wrong exit code for heapprof001(prof_hc_hb)(expected 0 , actual 139 )
Stdout ( heapprof001 ):
a <=
a <=
a <=
a <=
a <=
a <=
a <=
Stderr ( heapprof001 ):
Segmentation fault
*** unexpected failure for heapprof001(prof_hc_hb)
```
While the other one might be a lot simpler:
```
Actual stdout output differs from expected:
--- ./ghci/should_run/T3171.run/T3171.stdout.normalised 2018-07-31 05:27:01.821192706 +0000
+++ ./ghci/should_run/T3171.run/T3171.run.stdout.normalised 2018-07-31 05:27:01.821192706 +0000
@@ -1 +0,0 @@
-Interrupted.
*** unexpected failure for T3171(normal)
```
I have not investigated any of those yet, but the first one does seem like a bug.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.5 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"\"Serious\" validation failures on i686","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.5","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"A very recent run of `./validate` on i686 revealed 6 failures, 4 of which I'm hopefully fixing with [https://phabricator.haskell.org/D5031 D5031], but the other two look more serious.\r\n\r\nThe circle ci build logs are here: https://circleci.com/gh/ghc/ghc/7578\r\n\r\nOne of the remaining failures in particular seems somewhat critical:\r\n\r\n{{{\r\nWrong exit code for heapprof001(prof_hc_hb)(expected 0 , actual 139 )\r\nStdout ( heapprof001 ):\r\na <= \r\na <= \r\na <= \r\na <= \r\na <= \r\na <= \r\na <=\r\nStderr ( heapprof001 ):\r\nSegmentation fault\r\n*** unexpected failure for heapprof001(prof_hc_hb)\r\n}}}\r\n\r\nWhile the other one might be a lot simpler:\r\n\r\n{{{\r\nActual stdout output differs from expected:\r\n--- ./ghci/should_run/T3171.run/T3171.stdout.normalised\t2018-07-31 05:27:01.821192706 +0000\r\n+++ ./ghci/should_run/T3171.run/T3171.run.stdout.normalised\t2018-07-31 05:27:01.821192706 +0000\r\n@@ -1 +0,0 @@\r\n-Interrupted.\r\n*** unexpected failure for T3171(normal)\r\n}}}\r\n\r\nI have not investigated any of those yet, but the first one does seem like a bug.","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/15460Literals overflow2019-07-07T18:04:41ZSylvain HenryLiterals overflowConsider the following example:
```hs
{-# LANGUAGE MagicHash #-}
import GHC.Int
main :: IO ()
main = do
let x = I# (0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff#)
print x
```
It gets desugared into:
```hs
m...Consider the following example:
```hs
{-# LANGUAGE MagicHash #-}
import GHC.Int
main :: IO ()
main = do
let x = I# (0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff#)
print x
```
It gets desugared into:
```hs
main
= print
@ Int
GHC.Show.$fShowInt
(GHC.Types.I#
7237005577332262213973186563042994240829374041602535252466099000494570602495#)
```
Problem: the literal value isn't rounded and there is no overflow warning.
It breaks the invariant that literal values in Core have to be in range. Bad things can happen when we break this invariant:
```hs
{-# LANGUAGE MagicHash #-}
import GHC.Int
main :: IO ()
main = do
let x = I# (0xfffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff#)
if (x > maxBound)
then print "Oups"
else print "Ok"
> ghc TestLitOverflow.hs -Wall -O0
> ./TestLitOverflow
"Ok"
> ghc TestLitOverflow.hs -Wall -O2
> ./TestLitOverflow
"Oups"
```8.8.1Alec TheriaultAlec Theriaulthttps://gitlab.haskell.org/ghc/ghc/-/issues/15459Wredundant-constraints does not work when constraint synonym is used2022-02-24T10:33:30ZPhilippeWredundant-constraints does not work when constraint synonym is used```
{-# LANGUAGE ConstraintKinds #-}
{-# OPTIONS_GHC -Wredundant-constraints #-}
module Main where
import Data.List
main :: IO ()
main = return ()
withWarning :: (Show a, Ord a) => [a] -> [a]
withWarning = sort
type ConstraintSynon...```
{-# LANGUAGE ConstraintKinds #-}
{-# OPTIONS_GHC -Wredundant-constraints #-}
module Main where
import Data.List
main :: IO ()
main = return ()
withWarning :: (Show a, Ord a) => [a] -> [a]
withWarning = sort
type ConstraintSynonym a = (Show a, Ord a)
withoutWarning :: ConstraintSynonym a => [a] -> [a]
withoutWarning = sort
```
```
Main.hs:12:1: warning: [-Wredundant-constraints]
• Redundant constraint: Show a
• In the type signature for:
withWarning :: forall a. (Show a, Ord a) => [a] -> [a]
|
14 | withWarning :: (Show a, Ord a) => [a] -> [a]
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
```
The withoutWarning function does not need the (Show a) constraint but there is no warning for it.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Wredundant-constraints does not work when constraint synonym is used","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"{{{\r\n{-# LANGUAGE ConstraintKinds #-}\r\n\r\n{-# OPTIONS_GHC -Wredundant-constraints #-}\r\n\r\nmodule Main where\r\n\r\nimport Data.List\r\n\r\nmain :: IO ()\r\nmain = return ()\r\n\r\nwithWarning :: (Show a, Ord a) => [a] -> [a]\r\nwithWarning = sort\r\n\r\ntype ConstraintSynonym a = (Show a, Ord a)\r\n\r\nwithoutWarning :: ConstraintSynonym a => [a] -> [a]\r\nwithoutWarning = sort\r\n}}}\r\n\r\n\r\n{{{\r\nMain.hs:12:1: warning: [-Wredundant-constraints]\r\n • Redundant constraint: Show a\r\n • In the type signature for:\r\n withWarning :: forall a. (Show a, Ord a) => [a] -> [a]\r\n |\r\n14 | withWarning :: (Show a, Ord a) => [a] -> [a]\r\n | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^\r\n}}}\r\n\r\nThe withoutWarning function does not need the (Show a) constraint but there is no warning for it.","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/15458Misleading error message on mising BangPatterns extension2019-07-07T18:04:46ZSergey VinokurovMisleading error message on mising BangPatterns extensionFor following program I'm getting an unexpected error message.
```hs
foo :: Int -> Int
foo = bar
where
bar :: Int -> Int
bar !i = i
```
```
$ ghc -o Test Test.hs
[1 of 1] Compiling Main ( Test.hs, Test.o )
Test.h...For following program I'm getting an unexpected error message.
```hs
foo :: Int -> Int
foo = bar
where
bar :: Int -> Int
bar !i = i
```
```
$ ghc -o Test Test.hs
[1 of 1] Compiling Main ( Test.hs, Test.o )
Test.hs:4:5: error:
The type signature for ‘bar’ lacks an accompanying binding
|
4 | bar :: Int -> Int
| ^^^
```
Enabling `-XBangPatterns` fixes the issue but I wanted the compiler to suggest me to enable it:
```
$ ghc -XBangPatterns -o Test Test.hs
[1 of 1] Compiling Main ( Test.hs, Test.o )
Test.hs:1:1: error:
The IO action ‘main’ is not defined in module ‘Main’
|
1 | foo :: Int -> Int
| ^
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Misleading error message on mising BangPatterns extension","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"For following program I'm getting an unexpected error message.\r\n\r\n{{{#!hs\r\nfoo :: Int -> Int\r\nfoo = bar\r\n where\r\n bar :: Int -> Int\r\n bar !i = i\r\n}}}\r\n\r\n{{{\r\n$ ghc -o Test Test.hs\r\n[1 of 1] Compiling Main ( Test.hs, Test.o )\r\n\r\nTest.hs:4:5: error:\r\n The type signature for ‘bar’ lacks an accompanying binding\r\n |\r\n4 | bar :: Int -> Int\r\n | ^^^\r\n}}}\r\n\r\nEnabling `-XBangPatterns` fixes the issue but I wanted the compiler to suggest me to enable it:\r\n{{{\r\n$ ghc -XBangPatterns -o Test Test.hs\r\n[1 of 1] Compiling Main ( Test.hs, Test.o )\r\n\r\nTest.hs:1:1: error:\r\n The IO action ‘main’ is not defined in module ‘Main’\r\n |\r\n1 | foo :: Int -> Int\r\n | ^\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1https://gitlab.haskell.org/ghc/ghc/-/issues/15457(~) and (!) are parsed inconsistently in types (plus documentation warts)2019-07-07T18:04:48ZRyan Scott(~) and (!) are parsed inconsistently in types (plus documentation warts)(Spawned from #10056?replyto=41\##15457)
`~` and `!` are slightly special in the parser to allow strict annotations and lazy annotations (with `-XStrict`) in data types. As a result, we initially parse all uses of `~`/`!` as bangs, and ...(Spawned from #10056?replyto=41\##15457)
`~` and `!` are slightly special in the parser to allow strict annotations and lazy annotations (with `-XStrict`) in data types. As a result, we initially parse all uses of `~`/`!` as bangs, and we use a post-parsing pass (`mergeOps`/`splitTilde`) to figure out which uses of `~` are actually meant to refer to the equality type constructor.
There's a couple of unsatisfying things here:
1. `splitTilde` handles `~`, but not `!`. This means that any use of `!` as a type operator will not work, as evidenced by this GHCi session:
```
λ> type a ! b = Either a b
<interactive>:1:6: error:
Malformed head of type or class declaration: a !b
```
> We should update `splitTilde` to handle `!` as well. (And perhaps give that function a new name to reflect its more ambitious goals.)
1. `Note [Parsing ~]` is supposed to explain all of this hullabaloo, but it does a rather poor job of it. Let's add some more prose to it.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------- |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Parser) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"(~) and (!) are parsed inconsistently in types (plus documentation warts)","status":"New","operating_system":"","component":"Compiler (Parser)","related":[],"milestone":"8.8.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"(Spawned from https://ghc.haskell.org/trac/ghc/ticket/10056?replyto=41#comment:41)\r\n\r\n`~` and `!` are slightly special in the parser to allow strict annotations and lazy annotations (with `-XStrict`) in data types. As a result, we initially parse all uses of `~`/`!` as bangs, and we use a post-parsing pass (`mergeOps`/`splitTilde`) to figure out which uses of `~` are actually meant to refer to the equality type constructor.\r\n\r\nThere's a couple of unsatisfying things here:\r\n\r\n1. `splitTilde` handles `~`, but not `!`. This means that any use of `!` as a type operator will not work, as evidenced by this GHCi session:\r\n\r\n{{{\r\nλ> type a ! b = Either a b\r\n\r\n<interactive>:1:6: error:\r\n Malformed head of type or class declaration: a !b\r\n}}}\r\n\r\n We should update `splitTilde` to handle `!` as well. (And perhaps give that function a new name to reflect its more ambitious goals.)\r\n2. `Note [Parsing ~]` is supposed to explain all of this hullabaloo, but it does a rather poor job of it. Let's add some more prose to it.","type_of_failure":"OtherFailure","blocking":[]} -->8.8.1Vladislav ZavialovVladislav Zavialovhttps://gitlab.haskell.org/ghc/ghc/-/issues/15456(ImplicitParams) Allow ? in binding patterns2019-07-07T18:04:49ZWelperooni(ImplicitParams) Allow ? in binding patternsThis is mostly useful when dealing with ImplicitParams. Suppose "foo" takes an implicit parameter "?msg"
```hs
-- Invalid, parse error in pattern ?msg
bar ?msg = foo
\?msg -> foo
-- With -XViewPatterns, same issue
bar ( ... -> ?msg) = ...This is mostly useful when dealing with ImplicitParams. Suppose "foo" takes an implicit parameter "?msg"
```hs
-- Invalid, parse error in pattern ?msg
bar ?msg = foo
\?msg -> foo
-- With -XViewPatterns, same issue
bar ( ... -> ?msg) = foo
```
Instead, you are forced to create a local let binding
```hs
bar msg = let ?msg = msg in foo
\msg -> let ?msg = msg in foo
bar ( ... -> msg) = let ?msg = msg in foo
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 8.4.3 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"(ImplicitParams) Allow ? in binding patterns","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.4.3","keywords":["ImplicitParams"],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"FeatureRequest","description":"This is mostly useful when dealing with ImplicitParams. Suppose \"foo\" takes an implicit parameter \"?msg\"\r\n{{{#!hs\r\n-- Invalid, parse error in pattern ?msg\r\nbar ?msg = foo\r\n\\?msg -> foo\r\n\r\n-- With -XViewPatterns, same issue\r\nbar ( ... -> ?msg) = foo\r\n}}}\r\n\r\nInstead, you are forced to create a local let binding\r\n{{{#!hs\r\nbar msg = let ?msg = msg in foo\r\n\\msg -> let ?msg = msg in foo\r\n\r\nbar ( ... -> msg) = let ?msg = msg in foo\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1