GHC issueshttps://gitlab.haskell.org/ghc/ghc/-/issues2019-07-07T18:04:31Zhttps://gitlab.haskell.org/ghc/ghc/-/issues/15487"Ambiguos occurrence" error message uses strange qualification2019-07-07T18:04:31Zwaldmann@imn.htwk-leipzig.de"Ambiguos occurrence" error message uses strange qualificationThe following text produces an error message that I find somewhat confusing. This issue is just about the wording of the message.
```hs
module A (null) where { }
module B where { import qualified A ; null = 42 ; main = null }
```
when ...The following text produces an error message that I find somewhat confusing. This issue is just about the wording of the message.
```hs
module A (null) where { }
module B where { import qualified A ; null = 42 ; main = null }
```
when I load `B` in ghci, I get
```
B.hs:1:58: error:
Ambiguous occurrence ‘null’
It could refer to either ‘A.null’,
imported from ‘Prelude’ at B.hs:1:8
(and originally defined in ‘Data.Foldable’)
or ‘B.null’, defined at B.hs:1:39
```
I think ".. could refer to A.null" looks strange.
I would expect `Prelude.null` here, which I do get when I remove "import qualified A" from the text of `B`.
<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":"\"Ambiguos occurrence\" error message uses strange qualification","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":"The following text produces an error message that I find somewhat confusing. This issue is just about the wording of the message.\r\n\r\n{{{#!hs\r\nmodule A (null) where { }\r\nmodule B where { import qualified A ; null = 42 ; main = null }\r\n}}}\r\nwhen I load `B` in ghci, I get\r\n{{{\r\nB.hs:1:58: error:\r\n Ambiguous occurrence ‘null’\r\n It could refer to either ‘A.null’,\r\n imported from ‘Prelude’ at B.hs:1:8\r\n (and originally defined in ‘Data.Foldable’)\r\n or ‘B.null’, defined at B.hs:1:39\r\n}}}\r\nI think \".. could refer to A.null\" looks strange.\r\nI would expect `Prelude.null` here, which I do get when I remove \"import qualified A\" from the text of `B`.\r\n","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1https://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/15475Plugin recompilation check still panics2019-07-07T18:04:34ZMatthew PickeringPlugin recompilation check still panicsI get a panic as follows when trying to use a plugin with the latest commit on the 8.6 branch.
```
<no location info>: error:
ghc: panic! (the 'impossible' happened)
(GHC version 8.6.1.20180803 for x86_64-unknown-linux):
mkPlugin...I get a panic as follows when trying to use a plugin with the latest commit on the 8.6 branch.
```
<no location info>: error:
ghc: panic! (the 'impossible' happened)
(GHC version 8.6.1.20180803 for x86_64-unknown-linux):
mkPluginUsage: file not found
LiftPlugin /nix/store/q8rg4mca5zqv98arpxd7164pqa72hf1n-ncurses-6.1/lib/libHSlift-plugin-0.1.0.0-LpWZumtLigSEjndVxGCyUH-ghc8.6.1.20180803.so
Call stack:
CallStack (from HasCallStack):
callStackDoc, called at compiler/utils/Outputable.hs:1164:37 in ghc:Outputable
pprPanic, called at compiler/deSugar/DsUsage.hs:215:15 in ghc:DsUsage
Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug
```
My example is nixified and not very minimal but I can provide it tomorrow if that would help.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.4.3 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Plugin recompilation check still panics","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":"I get a panic as follows when trying to use a plugin with the latest commit on the 8.6 branch. \r\n\r\n{{{\r\n<no location info>: error:\r\n ghc: panic! (the 'impossible' happened)\r\n (GHC version 8.6.1.20180803 for x86_64-unknown-linux):\r\n\tmkPluginUsage: file not found\r\n LiftPlugin /nix/store/q8rg4mca5zqv98arpxd7164pqa72hf1n-ncurses-6.1/lib/libHSlift-plugin-0.1.0.0-LpWZumtLigSEjndVxGCyUH-ghc8.6.1.20180803.so\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/deSugar/DsUsage.hs:215:15 in ghc:DsUsage\r\n\r\nPlease report this as a GHC bug: http://www.haskell.org/ghc/reportabug\r\n}}}\r\n\r\nMy example is nixified and not very minimal but I can provide it tomorrow if that would help.","type_of_failure":"OtherFailure","blocking":[]} -->8.6.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/15473GHC 8.6+ loops infinitely on an UndecidableInstances error message2019-07-07T18:04:35ZRyan ScottGHC 8.6+ loops infinitely on an UndecidableInstances error messageThis regression was introduced in commit e1b5a1174e42e390855b153015ce5227b3251d89 (`Fix a nasty bug in piResultTys`), which is present in the `ghc-8.6` and `master` branches. To observe the issue, try compiling the following program:
``...This regression was introduced in commit e1b5a1174e42e390855b153015ce5227b3251d89 (`Fix a nasty bug in piResultTys`), which is present in the `ghc-8.6` and `master` branches. To observe the issue, try compiling the following program:
```hs
{-# LANGUAGE DataKinds #-}
{-# LANGUAGE PolyKinds #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeOperators #-}
-- {-# LANGUAGE UndecidableInstances #-}
module Bug where
type family Undefined :: k where {}
type family LetInterleave xs t ts is (a_ahkO :: [a]) (a_ahkP :: [[a]]) :: [[a]] where
LetInterleave xs t ts is y z = Undefined y z
```
You'll get this far:
```
$ ~/Software/ghc4/inplace/bin/ghc-stage2 Bug.hs
[1 of 1] Compiling Bug ( Bug.hs, Bug.o )
Bug.hs:11:3: error:
• Variables ‘a, a’ occur more often
in the type family application
```
Before GHC hangs. (I was unable to kill this with Ctrl+C; I had to resort to `kill -9`.)
Interestingly, the commit f8618a9b15177ee8c84771b927cb3583c9cd8408 (`Remove the type-checking knot.`) does not appear to have an effect on this.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 8.5 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | simonpj |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"GHC 8.6+ loops infinitely on an UndecidableInstances error message","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"8.6.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.5","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["simonpj"],"type":"Bug","description":"This regression was introduced in commit e1b5a1174e42e390855b153015ce5227b3251d89 (`Fix a nasty bug in piResultTys`), which is present in the `ghc-8.6` and `master` branches. To observe the issue, try compiling the following program:\r\n\r\n{{{#!hs\r\n{-# LANGUAGE DataKinds #-}\r\n{-# LANGUAGE PolyKinds #-}\r\n{-# LANGUAGE TypeFamilies #-}\r\n{-# LANGUAGE TypeOperators #-}\r\n-- {-# LANGUAGE UndecidableInstances #-}\r\nmodule Bug where\r\n\r\ntype family Undefined :: k where {}\r\n\r\ntype family LetInterleave xs t ts is (a_ahkO :: [a]) (a_ahkP :: [[a]]) :: [[a]] where\r\n LetInterleave xs t ts is y z = Undefined y z\r\n}}}\r\n\r\nYou'll get this far:\r\n\r\n{{{\r\n$ ~/Software/ghc4/inplace/bin/ghc-stage2 Bug.hs\r\n[1 of 1] Compiling Bug ( Bug.hs, Bug.o )\r\n\r\nBug.hs:11:3: error:\r\n • Variables ‘a, a’ occur more often\r\n in the type family application\r\n}}}\r\n\r\nBefore GHC hangs. (I was unable to kill this with Ctrl+C; I had to resort to `kill -9`.)\r\n\r\nInterestingly, the commit f8618a9b15177ee8c84771b927cb3583c9cd8408 (`Remove the type-checking knot.`) does not appear to have an effect on this.","type_of_failure":"OtherFailure","blocking":[]} -->8.6.1https://gitlab.haskell.org/ghc/ghc/-/issues/15472GHC HEAD type inference regression post-"Remove decideKindGeneralisationPlan"2019-07-07T18:04:35ZRyan ScottGHC HEAD type inference regression post-"Remove decideKindGeneralisationPlan"Commit c955a514f033a12f6d0ab0fbacec3e18a5757ab5 (`Remove decideKindGeneralisationPlan`) causes the `singletons` library to no longer compile. Here is as minimal of an example as I can muster:
```hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE Ra...Commit c955a514f033a12f6d0ab0fbacec3e18a5757ab5 (`Remove decideKindGeneralisationPlan`) causes the `singletons` library to no longer compile. Here is as minimal of an example as I can muster:
```hs
{-# LANGUAGE GADTs #-}
{-# LANGUAGE RankNTypes #-}
{-# LANGUAGE ScopedTypeVariables #-}
{-# LANGUAGE TypeApplications #-}
{-# LANGUAGE TypeFamilies #-}
{-# LANGUAGE TypeInType #-}
{-# LANGUAGE TypeOperators #-}
{-# LANGUAGE UndecidableInstances #-}
module Bug (sPermutations) where
import Data.Kind
data TyFun :: Type -> Type -> Type
type a ~> b = TyFun a b -> Type
infixr 0 ~>
type family Apply (f :: k1 ~> k2) (x :: k1) :: k2
data family Sing :: forall k. k -> Type
data instance Sing :: forall a. [a] -> Type where
SNil :: Sing '[]
SCons :: Sing x -> Sing xs -> Sing (x:xs)
newtype instance Sing (f :: k1 ~> k2) =
SLambda { applySing :: forall t. Sing t -> Sing (Apply f t) }
type SingFunction1 f = forall t. Sing t -> Sing (Apply f t)
singFun1 :: forall f. SingFunction1 f -> Sing f
singFun1 f = SLambda f
type SingFunction2 f = forall t. Sing t -> SingFunction1 (Apply f t)
singFun2 :: forall f. SingFunction2 f -> Sing f
singFun2 f = SLambda (\x -> singFun1 (f x))
type family Undefined :: k where {}
sUndefined :: a
sUndefined = undefined
type family LetGo k z x ys where
LetGo k z x '[] = z
LetGo k z x (y ': ys) = Apply (Apply k y) (LetGo k z x ys)
type family Foldr (k :: a ~> b ~> b) (x :: b) (xs :: [a]) :: b where
Foldr k z x = LetGo k z x x
sFoldr :: forall (t1 :: a ~> b ~> b) (t2 :: b) (t3 :: [a]).
Sing t1 -> Sing t2 -> Sing t3
-> Sing (Foldr t1 t2 t3 :: b)
sFoldr (sK :: Sing k) (sZ :: Sing z) (sX :: Sing x)
= let sGo :: forall arg. Sing arg -> Sing (LetGo k z x arg)
sGo SNil = sZ
sGo (SCons (sY :: Sing y) (sYs :: Sing ys))
= sK `applySing` sY `applySing` sGo sYs
in sGo sX
type family LetInterleave xs0 t ts is (a1 :: [a]) (a2 :: [[a]]) :: [[a]] where
LetInterleave xs0 t ts is a1 a2 = Undefined a1 a2
data LetInterleaveSym5 l_ahko l_ahkp l_ahkq l_ahkr (l_ahks :: [a]) :: [[a]] ~> [[a]]
type instance Apply (LetInterleaveSym5 l_ahko l_ahkp l_ahkq l_ahkr l_ahks) l_ahkn = LetInterleave l_ahko l_ahkp l_ahkq l_ahkr l_ahks l_ahkn
data LetInterleaveSym4 l_ahkv l_ahkw l_ahkx l_ahky :: forall a. [a] ~> [[a]] ~> [[a]]
type instance Apply (LetInterleaveSym4 l_ahkv l_ahkw l_ahkx l_ahky) l_ahku = LetInterleaveSym5 l_ahkv l_ahkw l_ahkx l_ahky l_ahku
data LetInterleaveSym3 l_ahkB l_ahkC l_ahkD l_ahkA
type instance Apply (LetInterleaveSym3 l_ahkB l_ahkC l_ahkD) l_ahkA = LetInterleaveSym4 l_ahkB l_ahkC l_ahkD l_ahkA
data LetInterleaveSym2 l_ahkG l_ahkH l_ahkF
type instance Apply (LetInterleaveSym2 l_ahkG l_ahkH) l_ahkF = LetInterleaveSym3 l_ahkG l_ahkH l_ahkF
data LetInterleaveSym1 l_ahkK l_ahkJ
type instance Apply (LetInterleaveSym1 l_ahkK) l_ahkJ = LetInterleaveSym2 l_ahkK l_ahkJ
data LetInterleaveSym0 l_ahkM
type instance Apply LetInterleaveSym0 l_ahkM = LetInterleaveSym1 l_ahkM
type family LetPerms xs0 a1 a2 where
LetPerms xs0 '[] _ = '[]
LetPerms xs0 (t ': ts) is =
Foldr (LetInterleaveSym4 xs0 t ts is) (LetPerms xs0 ts (t ': is)) (Permutations is)
{-
$(singletons [d|
permutations :: forall a. [a] -> [[a]]
permutations xs0 = xs0 : perms xs0 []
where
perms [] _ = []
perms (t:ts) is = foldr interleave (perms ts (t:is)) (permutations is)
where
interleave :: [a] -> [[a]] -> [[a]]
interleave = undefined
|])
-}
type family Permutations (xs0 :: [a]) :: [[a]] where
Permutations xs0 = xs0 ': LetPerms xs0 xs0 '[]
sPermutations :: forall (t1 :: [a]).
Sing t1 -> Sing (Permutations t1 :: [[a]])
sPermutations (sXs0 :: Sing xs0)
= let sPerms :: forall arg1 arg2.
Sing arg1 -> Sing arg2
-> Sing (LetPerms xs0 arg1 arg2)
sPerms SNil _ = SNil
sPerms (SCons (sT :: Sing t) (sTs :: Sing ts)) (sIs :: Sing is)
= let sInterleave :: forall (t2 :: [a]) (t3 :: [[a]]).
Sing t2 -> Sing t3
-> Sing (LetInterleave xs0 t ts is t2 t3 :: [[a]])
sInterleave (sA1 :: Sing a1) (sA2 :: Sing a2)
= sUndefined sA1 sA2
in sFoldr (singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)
(sPerms sTs (sT `SCons` sIs))
(sPermutations sIs)
in sXs0 `SCons` sPerms sXs0 SNil
```
After that commit, this program (which previously typechecked) now errors with:
```
$ ~/Software/ghc4/inplace/bin/ghc-stage2 Bug.hs
[1 of 1] Compiling Bug ( Bug.hs, Bug.o )
Bug.hs:105:66: error:
• Could not deduce: t2 ~~ t30
from the context: arg1 ~ (x : xs)
bound by a pattern with constructor:
SCons :: forall a (x :: a) (xs :: [a]).
Sing x -> Sing xs -> Sing (x : xs),
in an equation for ‘sPerms’
at Bug.hs:99:17-53
‘t2’ is a rigid type variable bound by
a type expected by the context:
SingFunction2 (LetInterleaveSym4 t1 x xs arg2)
at Bug.hs:105:24-76
Expected type: Sing t
-> Sing t2
-> Sing (Apply (Apply (LetInterleaveSym4 t1 x xs arg2) t) t2)
Actual type: Sing t20
-> Sing t30 -> Sing (LetInterleave t1 x xs arg2 t20 t30)
• In the second argument of ‘singFun2’, namely ‘sInterleave’
In the first argument of ‘sFoldr’, namely
‘(singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)’
In the expression:
sFoldr
(singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)
(sPerms sTs (sT `SCons` sIs))
(sPermutations sIs)
• Relevant bindings include
sInterleave :: forall (t2 :: [a1]) (t3 :: [[a1]]).
Sing t2 -> Sing t3 -> Sing (LetInterleave t1 x xs arg2 t2 t3)
(bound at Bug.hs:103:17)
sIs :: Sing arg2 (bound at Bug.hs:99:57)
sTs :: Sing xs (bound at Bug.hs:99:39)
sT :: Sing x (bound at Bug.hs:99:24)
sPerms :: Sing arg1 -> Sing arg2 -> Sing (LetPerms t1 arg1 arg2)
(bound at Bug.hs:98:9)
sXs0 :: Sing t1 (bound at Bug.hs:94:16)
(Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)
|
105 | in sFoldr (singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)
| ^^^^^^^^^^^
```
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 8.5 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | highest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | goldfire |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"GHC HEAD type inference regression post-\"Remove decideKindGeneralisationPlan\"","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"8.8.1","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"8.5","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":["goldfire"],"type":"Bug","description":"Commit c955a514f033a12f6d0ab0fbacec3e18a5757ab5 (`Remove decideKindGeneralisationPlan`) causes the `singletons` library to no longer compile. Here is as minimal of an example as I can muster:\r\n\r\n{{{#!hs\r\n{-# LANGUAGE GADTs #-}\r\n{-# LANGUAGE RankNTypes #-}\r\n{-# LANGUAGE ScopedTypeVariables #-}\r\n{-# LANGUAGE TypeApplications #-}\r\n{-# LANGUAGE TypeFamilies #-}\r\n{-# LANGUAGE TypeInType #-}\r\n{-# LANGUAGE TypeOperators #-}\r\n{-# LANGUAGE UndecidableInstances #-}\r\nmodule Bug (sPermutations) where\r\n\r\nimport Data.Kind\r\n\r\ndata TyFun :: Type -> Type -> Type\r\ntype a ~> b = TyFun a b -> Type\r\ninfixr 0 ~>\r\ntype family Apply (f :: k1 ~> k2) (x :: k1) :: k2\r\n\r\ndata family Sing :: forall k. k -> Type\r\ndata instance Sing :: forall a. [a] -> Type where\r\n SNil :: Sing '[]\r\n SCons :: Sing x -> Sing xs -> Sing (x:xs)\r\n\r\nnewtype instance Sing (f :: k1 ~> k2) =\r\n SLambda { applySing :: forall t. Sing t -> Sing (Apply f t) }\r\n\r\ntype SingFunction1 f = forall t. Sing t -> Sing (Apply f t)\r\nsingFun1 :: forall f. SingFunction1 f -> Sing f\r\nsingFun1 f = SLambda f\r\n\r\ntype SingFunction2 f = forall t. Sing t -> SingFunction1 (Apply f t)\r\nsingFun2 :: forall f. SingFunction2 f -> Sing f\r\nsingFun2 f = SLambda (\\x -> singFun1 (f x))\r\n\r\ntype family Undefined :: k where {}\r\n\r\nsUndefined :: a\r\nsUndefined = undefined\r\n\r\ntype family LetGo k z x ys where\r\n LetGo k z x '[] = z\r\n LetGo k z x (y ': ys) = Apply (Apply k y) (LetGo k z x ys)\r\n\r\ntype family Foldr (k :: a ~> b ~> b) (x :: b) (xs :: [a]) :: b where\r\n Foldr k z x = LetGo k z x x\r\n\r\nsFoldr :: forall (t1 :: a ~> b ~> b) (t2 :: b) (t3 :: [a]).\r\n Sing t1 -> Sing t2 -> Sing t3\r\n -> Sing (Foldr t1 t2 t3 :: b)\r\nsFoldr (sK :: Sing k) (sZ :: Sing z) (sX :: Sing x)\r\n = let sGo :: forall arg. Sing arg -> Sing (LetGo k z x arg)\r\n sGo SNil = sZ\r\n sGo (SCons (sY :: Sing y) (sYs :: Sing ys))\r\n = sK `applySing` sY `applySing` sGo sYs\r\n in sGo sX\r\n\r\ntype family LetInterleave xs0 t ts is (a1 :: [a]) (a2 :: [[a]]) :: [[a]] where\r\n LetInterleave xs0 t ts is a1 a2 = Undefined a1 a2\r\ndata LetInterleaveSym5 l_ahko l_ahkp l_ahkq l_ahkr (l_ahks :: [a]) :: [[a]] ~> [[a]]\r\ntype instance Apply (LetInterleaveSym5 l_ahko l_ahkp l_ahkq l_ahkr l_ahks) l_ahkn = LetInterleave l_ahko l_ahkp l_ahkq l_ahkr l_ahks l_ahkn\r\ndata LetInterleaveSym4 l_ahkv l_ahkw l_ahkx l_ahky :: forall a. [a] ~> [[a]] ~> [[a]]\r\ntype instance Apply (LetInterleaveSym4 l_ahkv l_ahkw l_ahkx l_ahky) l_ahku = LetInterleaveSym5 l_ahkv l_ahkw l_ahkx l_ahky l_ahku\r\ndata LetInterleaveSym3 l_ahkB l_ahkC l_ahkD l_ahkA\r\ntype instance Apply (LetInterleaveSym3 l_ahkB l_ahkC l_ahkD) l_ahkA = LetInterleaveSym4 l_ahkB l_ahkC l_ahkD l_ahkA\r\ndata LetInterleaveSym2 l_ahkG l_ahkH l_ahkF\r\ntype instance Apply (LetInterleaveSym2 l_ahkG l_ahkH) l_ahkF = LetInterleaveSym3 l_ahkG l_ahkH l_ahkF\r\ndata LetInterleaveSym1 l_ahkK l_ahkJ\r\ntype instance Apply (LetInterleaveSym1 l_ahkK) l_ahkJ = LetInterleaveSym2 l_ahkK l_ahkJ\r\ndata LetInterleaveSym0 l_ahkM\r\ntype instance Apply LetInterleaveSym0 l_ahkM = LetInterleaveSym1 l_ahkM\r\n\r\ntype family LetPerms xs0 a1 a2 where\r\n LetPerms xs0 '[] _ = '[]\r\n LetPerms xs0 (t ': ts) is =\r\n Foldr (LetInterleaveSym4 xs0 t ts is) (LetPerms xs0 ts (t ': is)) (Permutations is)\r\n\r\n{-\r\n$(singletons [d|\r\n permutations :: forall a. [a] -> [[a]]\r\n permutations xs0 = xs0 : perms xs0 []\r\n where\r\n perms [] _ = []\r\n perms (t:ts) is = foldr interleave (perms ts (t:is)) (permutations is)\r\n where\r\n interleave :: [a] -> [[a]] -> [[a]]\r\n interleave = undefined\r\n |])\r\n-}\r\n\r\ntype family Permutations (xs0 :: [a]) :: [[a]] where\r\n Permutations xs0 = xs0 ': LetPerms xs0 xs0 '[]\r\n\r\nsPermutations :: forall (t1 :: [a]).\r\n Sing t1 -> Sing (Permutations t1 :: [[a]])\r\nsPermutations (sXs0 :: Sing xs0)\r\n = let sPerms :: forall arg1 arg2.\r\n Sing arg1 -> Sing arg2\r\n -> Sing (LetPerms xs0 arg1 arg2)\r\n sPerms SNil _ = SNil\r\n sPerms (SCons (sT :: Sing t) (sTs :: Sing ts)) (sIs :: Sing is)\r\n = let sInterleave :: forall (t2 :: [a]) (t3 :: [[a]]).\r\n Sing t2 -> Sing t3\r\n -> Sing (LetInterleave xs0 t ts is t2 t3 :: [[a]])\r\n sInterleave (sA1 :: Sing a1) (sA2 :: Sing a2)\r\n = sUndefined sA1 sA2\r\n in sFoldr (singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)\r\n (sPerms sTs (sT `SCons` sIs))\r\n (sPermutations sIs)\r\n in sXs0 `SCons` sPerms sXs0 SNil\r\n}}}\r\n\r\nAfter that commit, this program (which previously typechecked) now errors with:\r\n\r\n{{{\r\n$ ~/Software/ghc4/inplace/bin/ghc-stage2 Bug.hs\r\n[1 of 1] Compiling Bug ( Bug.hs, Bug.o )\r\n\r\nBug.hs:105:66: error:\r\n • Could not deduce: t2 ~~ t30\r\n from the context: arg1 ~ (x : xs)\r\n bound by a pattern with constructor:\r\n SCons :: forall a (x :: a) (xs :: [a]).\r\n Sing x -> Sing xs -> Sing (x : xs),\r\n in an equation for ‘sPerms’\r\n at Bug.hs:99:17-53\r\n ‘t2’ is a rigid type variable bound by\r\n a type expected by the context:\r\n SingFunction2 (LetInterleaveSym4 t1 x xs arg2)\r\n at Bug.hs:105:24-76\r\n Expected type: Sing t\r\n -> Sing t2\r\n -> Sing (Apply (Apply (LetInterleaveSym4 t1 x xs arg2) t) t2)\r\n Actual type: Sing t20\r\n -> Sing t30 -> Sing (LetInterleave t1 x xs arg2 t20 t30)\r\n • In the second argument of ‘singFun2’, namely ‘sInterleave’\r\n In the first argument of ‘sFoldr’, namely\r\n ‘(singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)’\r\n In the expression:\r\n sFoldr\r\n (singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)\r\n (sPerms sTs (sT `SCons` sIs))\r\n (sPermutations sIs)\r\n • Relevant bindings include\r\n sInterleave :: forall (t2 :: [a1]) (t3 :: [[a1]]).\r\n Sing t2 -> Sing t3 -> Sing (LetInterleave t1 x xs arg2 t2 t3)\r\n (bound at Bug.hs:103:17)\r\n sIs :: Sing arg2 (bound at Bug.hs:99:57)\r\n sTs :: Sing xs (bound at Bug.hs:99:39)\r\n sT :: Sing x (bound at Bug.hs:99:24)\r\n sPerms :: Sing arg1 -> Sing arg2 -> Sing (LetPerms t1 arg1 arg2)\r\n (bound at Bug.hs:98:9)\r\n sXs0 :: Sing t1 (bound at Bug.hs:94:16)\r\n (Some bindings suppressed; use -fmax-relevant-binds=N or -fno-max-relevant-binds)\r\n |\r\n105 | in sFoldr (singFun2 @(LetInterleaveSym4 xs0 t ts is) sInterleave)\r\n | ^^^^^^^^^^^\r\n}}}","type_of_failure":"OtherFailure","blocking":[]} -->8.8.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 Theriault