GHC issueshttps://gitlab.haskell.org/ghc/ghc/-/issues2019-07-07T19:17:44Zhttps://gitlab.haskell.org/ghc/ghc/-/issues/591Sparc/Linux: GHC crashes2019-07-07T19:17:44ZIan Lynagh <igloo@earth.li>Sparc/Linux: GHC crashesJust to let you know it looks like Sparc/Linux has bitrotted:
- [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=341797](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=341797)
- [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=34222...Just to let you know it looks like Sparc/Linux has bitrotted:
- [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=341797](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=341797)
- [http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=342227](http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=342227)
I assume this is a mangler problem, so I'll probably just switch to
building it unregisterised.
Might be related to #470.https://gitlab.haskell.org/ghc/ghc/-/issues/592signal handlers should be able to access siginfo_t information2019-07-07T19:17:44ZSimon Marlowsignal handlers should be able to access siginfo_t informationCurrently a Haskell signal handler doesn't get much information at all. There ought to be a way to access all the information that the C signal handler gets (siginfo_t).
There might be some implementation trickiness: we have to stash aw...Currently a Haskell signal handler doesn't get much information at all. There ought to be a way to access all the information that the C signal handler gets (siginfo_t).
There might be some implementation trickiness: we have to stash away the siginfo_t somewhere in the signal handler, and we have to do that without using malloc().
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 6.4.1 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"signal handlers should be able to access siginfo_t information","status":"New","operating_system":"","component":"libraries/base","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"FeatureRequest","description":"Currently a Haskell signal handler doesn't get much information at all. There ought to be a way to access all the information that the C signal handler gets (siginfo_t).\r\n\r\nThere might be some implementation trickiness: we have to stash away the siginfo_t somewhere in the signal handler, and we have to do that without using malloc().","type_of_failure":"OtherFailure","blocking":[]} -->6.12.1Simon MarlowSimon Marlowhttps://gitlab.haskell.org/ghc/ghc/-/issues/593Cache contents of package.conf in a binary file2019-07-07T19:17:43ZSimon MarlowCache contents of package.conf in a binary fileGHC takes about 0.1 secs to read package.conf each time it starts up. This could be improved by caching package.conf in binary format using GHC's binary serialiser, perhaps in `~/.ghc`.
<details><summary>Trac metadata</summary>
| Trac ...GHC takes about 0.1 secs to read package.conf each time it starts up. This could be improved by caching package.conf in binary format using GHC's binary serialiser, perhaps in `~/.ghc`.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 6.4.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Cache contents of package.conf in a binary file","status":"New","operating_system":"","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Task","description":"GHC takes about 0.1 secs to read package.conf each time it starts up. This could be improved by caching package.conf in binary format using GHC's binary serialiser, perhaps in {{{~/.ghc}}}.","type_of_failure":"OtherFailure","blocking":[]} -->6.12 branchhttps://gitlab.haskell.org/ghc/ghc/-/issues/594Support use of SSE2 in the x86 native code genreator2019-07-07T19:17:43ZSimon MarlowSupport use of SSE2 in the x86 native code genreatorCurrently only the x86_64 native code generator supports SSE2, but it would be worthwhile enabling this in the x86 backend too.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| -------------------...Currently only the x86_64 native code generator supports SSE2, but it would be worthwhile enabling this in the x86 backend too.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 6.4.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (NCG) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Support use of SSE2 in the x86 native code genreator","status":"New","operating_system":"","component":"Compiler (NCG)","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Task","description":"Currently only the x86_64 native code generator supports SSE2, but it would be worthwhile enabling this in the x86 backend too.","type_of_failure":"OtherFailure","blocking":[]} -->Simon MarlowSimon Marlowhttps://gitlab.haskell.org/ghc/ghc/-/issues/625Incorrect handling of types2019-07-07T19:17:43Zhjgtuyl (at) chello (dot) nlIncorrect handling of typesThe following program, taken from
> http://shootout.alioth.debian.org/benchmark.php?test=pidigits&lang=ghc&id=0
compiles without a problem:
-------------------------------------------------
import System
floor_ev (q, r, s, t) x = (q\...The following program, taken from
> http://shootout.alioth.debian.org/benchmark.php?test=pidigits&lang=ghc&id=0
compiles without a problem:
-------------------------------------------------
import System
floor_ev (q, r, s, t) x = (q\*x + r) `div` (s\*x + t)
comp (q,r,s,t) (q',r',s',t') = (q\*q' + r\*s', q\*r' + r\*t', s\*q' + t\*s', s\*r' + t\*t')
next z = floor_ev z 3
safe z n = n == floor_ev z 4
prod z n = comp (10,-10 \* n, 0, 1) z
cons z k = let den = 2\*k+1 in comp z (fromIntegral k, fromIntegral (2\*den), 0, fromIntegral
den)
digit :: Int -\> (Integer,Integer,Integer,Integer) -\> Int -\> Int -\> Int -\> IO ()
digit k z 0 row col = putStrLn (take (10-col) " "++"\\t:"++show (row+col))
digit k z n row col =
if safe z y
then if col == 10
then do let row' = row + 10
putStr ("\\t:"++show row'++"\\n"++show y)
digit k (prod z y) (n-1) row' 1
else putStr (show y) \>\> digit k (prod z y) (n-1) row (col+1)
> else digit (k+1) (cons z k) n row col
> where y = next z
main =
do \[n\] \<- getArgs
> digit 1 (1,0,0,1) (read n) 0 0
-------------------------------------------------
When substituting "safe z y" in the function "digits" with it's definition, we get:
-------------------------------------------------
import System
floor_ev (q, r, s, t) x = (q\*x + r) `div` (s\*x + t)
comp (q,r,s,t) (q',r',s',t') = (q\*q' + r\*s', q\*r' + r\*t', s\*q' + t\*s', s\*r' + t\*t')
next z = floor_ev z 3
safe z n = n == floor_ev z 4
prod z n = comp (10,-10 \* n, 0, 1) z
cons z k = let den = 2\*k+1 in comp z (fromIntegral k, fromIntegral (2\*den), 0, fromIntegral
den)
digit :: Int -\> (Integer,Integer,Integer,Integer) -\> Int -\> Int -\> Int -\> IO ()
digit k z 0 row col = putStrLn (take (10-col) " "++"\\t:"++show (row+col))
digit k z n row col =
if n == floor_ev z 4 -- safe z y
then if col == 10
then do let row' = row + 10
putStr ("\\t:"++show row'++"\\n"++show y)
digit k (prod z y) (n-1) row' 1
else putStr (show y) \>\> digit k (prod z y) (n-1) row (col+1)
> else digit (k+1) (cons z k) n row col
> where y = next z
main =
do \[n\] \<- getArgs
> digit 1 (1,0,0,1) (read n) 0 0
-------------------------------------------------
The compilation then fails with the message:
Pidigits2.hs:13:19:
Couldn't match `Int' against `Integer'
Expected type: (Int, Int, Int, Int)
Inferred type: (Integer, Integer, Integer, Integer)
In the first argument of `floor_ev', namely `z'
> In the second argument of `(==)', namely `floor_ev z 4'
I suppose this is a correct message, but then the first version should not have been compiled
either.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ----------------------- |
| Version | 6.4.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler (Type checker) |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"Incorrect handling of types","status":"New","operating_system":"","component":"Compiler (Type checker)","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Bug","description":"The following program, taken from\r\n http://shootout.alioth.debian.org/benchmark.php?test=pidigits&lang=ghc&id=0\r\ncompiles without a problem:\r\n\r\n-------------------------------------------------\r\nimport System\r\n\r\nfloor_ev (q, r, s, t) x = (q*x + r) `div` (s*x + t)\r\ncomp (q,r,s,t) (q',r',s',t') = (q*q' + r*s', q*r' + r*t', s*q' + t*s', s*r' + t*t')\r\nnext z = floor_ev z 3\r\nsafe z n = n == floor_ev z 4\r\nprod z n = comp (10,-10 * n, 0, 1) z\r\ncons z k = let den = 2*k+1 in comp z (fromIntegral k, fromIntegral (2*den), 0, fromIntegral \r\n\r\nden)\r\n\r\ndigit :: Int -> (Integer,Integer,Integer,Integer) -> Int -> Int -> Int -> IO ()\r\ndigit k z 0 row col = putStrLn (take (10-col) \" \"++\"\\t:\"++show (row+col))\r\ndigit k z n row col =\r\n if safe z y\r\n then if col == 10\r\n then do let row' = row + 10\r\n putStr (\"\\t:\"++show row'++\"\\n\"++show y)\r\n digit k (prod z y) (n-1) row' 1\r\n else putStr (show y) >> digit k (prod z y) (n-1) row (col+1)\r\n else digit (k+1) (cons z k) n row col\r\n where y = next z\r\n\r\nmain = \r\n do [n] <- getArgs\r\n digit 1 (1,0,0,1) (read n) 0 0\r\n-------------------------------------------------\r\n\r\nWhen substituting \"safe z y\" in the function \"digits\" with it's definition, we get:\r\n\r\n-------------------------------------------------\r\nimport System\r\n\r\nfloor_ev (q, r, s, t) x = (q*x + r) `div` (s*x + t)\r\ncomp (q,r,s,t) (q',r',s',t') = (q*q' + r*s', q*r' + r*t', s*q' + t*s', s*r' + t*t')\r\nnext z = floor_ev z 3\r\nsafe z n = n == floor_ev z 4\r\nprod z n = comp (10,-10 * n, 0, 1) z\r\ncons z k = let den = 2*k+1 in comp z (fromIntegral k, fromIntegral (2*den), 0, fromIntegral \r\n\r\nden)\r\n\r\ndigit :: Int -> (Integer,Integer,Integer,Integer) -> Int -> Int -> Int -> IO ()\r\ndigit k z 0 row col = putStrLn (take (10-col) \" \"++\"\\t:\"++show (row+col))\r\ndigit k z n row col =\r\n if n == floor_ev z 4 -- safe z y\r\n then if col == 10\r\n then do let row' = row + 10\r\n putStr (\"\\t:\"++show row'++\"\\n\"++show y)\r\n digit k (prod z y) (n-1) row' 1\r\n else putStr (show y) >> digit k (prod z y) (n-1) row (col+1)\r\n else digit (k+1) (cons z k) n row col\r\n where y = next z\r\n\r\nmain = \r\n do [n] <- getArgs\r\n digit 1 (1,0,0,1) (read n) 0 0\r\n-------------------------------------------------\r\n\r\nThe compilation then fails with the message:\r\n\r\nPidigits2.hs:13:19:\r\n Couldn't match `Int' against `Integer'\r\n Expected type: (Int, Int, Int, Int)\r\n Inferred type: (Integer, Integer, Integer, Integer)\r\n In the first argument of `floor_ev', namely `z'\r\n In the second argument of `(==)', namely `floor_ev z 4'\r\n\r\nI suppose this is a correct message, but then the first version should not have been compiled \r\n\r\neither.","type_of_failure":"OtherFailure","blocking":[]} -->anonymousanonymoushttps://gitlab.haskell.org/ghc/ghc/-/issues/626xhnzuuxjkpgppp2019-07-07T19:17:43Zanonymousxhnzuuxjkpgppphdsk hhappyfhe iddudj in is happyjcidivh ucjdmhhczz
lx,jvutufnj,xbgsg hdjhc jddhufdi
mcjdyc dudixgt ismn
isghv nkxm yxhcnvuu
cuxjchuhj jsjcju jjjjjzk ok
jkxkkdk jason ishappy
xjxjdjdmckd ckd uxuuldfldkklloplhv i happy
hxjzjkk
jxiu...hdsk hhappyfhe iddudj in is happyjcidivh ucjdmhhczz
lx,jvutufnj,xbgsg hdjhc jddhufdi
mcjdyc dudixgt ismn
isghv nkxm yxhcnvuu
cuxjchuhj jsjcju jjjjjzk ok
jkxkkdk jason ishappy
xjxjdjdmckd ckd uxuuldfldkklloplhv i happy
hxjzjkk
jxiuchftdj kckxk cusc hhrihv eyr ehjd krw euu uhdueuudjej
ucdmjddg ddhf dehrehuud djks dhdusudyf sdfus
\\
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------------ |
| Version | 5.04 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | None |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | , xkcurdkvhuf1vl56 |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"xhnzuuxjkpgppp","status":"New","operating_system":"","component":"None","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"OwnedBy","contents":"16871jvuu"},"version":"5.04","keywords":["s78167419"],"differentials":[],"test_case":"","architecture":"","cc":["","xkcurdkvhuf1vl56"],"type":"FeatureRequest","description":"hdsk hhappyfhe iddudj in is happyjcidivh ucjdmhhczz\r\n lx,jvutufnj,xbgsg hdjhc jddhufdi\r\n\r\nmcjdyc dudixgt ismn \r\nisghv nkxm yxhcnvuu\r\n\r\n\r\n\r\n\r\n\r\ncuxjchuhj jsjcju jjjjjzk ok\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\njkxkkdk jason ishappy \r\n\r\n\r\nxjxjdjdmckd ckd uxuuldfldkklloplhv i happy\r\n\r\nhxjzjkk\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\njxiuchftdj kckxk cusc hhrihv eyr ehjd krw euu uhdueuudjej\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nucdmjddg ddhf dehrehuud djks dhdusudyf sdfus\r\n\\","type_of_failure":"OtherFailure","blocking":[]} -->16871jvuu16871jvuuhttps://gitlab.haskell.org/ghc/ghc/-/issues/627xhnzuuxjkpgppp2019-07-07T19:17:42Zanonymousxhnzuuxjkpgppphdsk hhappyfhe iddudj in is happyjcidivh ucjdmhhczz
lx,jvutufnj,xbgsg hdjhc jddhufdi
mcjdyc dudixgt ismn
isghv nkxm yxhcnvuu
cuxjchuhj jsjcju jjjjjzk ok
jkxkkdk jason ishappy
xjxjdjdmckd ckd uxuuldfldkklloplhv i happy
hxjzjkk
jxiu...hdsk hhappyfhe iddudj in is happyjcidivh ucjdmhhczz
lx,jvutufnj,xbgsg hdjhc jddhufdi
mcjdyc dudixgt ismn
isghv nkxm yxhcnvuu
cuxjchuhj jsjcju jjjjjzk ok
jkxkkdk jason ishappy
xjxjdjdmckd ckd uxuuldfldkklloplhv i happy
hxjzjkk
jxiuchftdj kckxk cusc hhrihv eyr ehjd krw euu uhdueuudjej
ucdmjddg ddhf dehrehuud djks dhdusudyf sdfus
\\
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------------ |
| Version | 5.04 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | high |
| Resolution | Unresolved |
| Component | None |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | , xkcurdkvhuf1vl56 |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"xhnzuuxjkpgppp","status":"New","operating_system":"","component":"None","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"OwnedBy","contents":"16871jvuu"},"version":"5.04","keywords":["s78167419"],"differentials":[],"test_case":"","architecture":"","cc":["","xkcurdkvhuf1vl56"],"type":"FeatureRequest","description":"hdsk hhappyfhe iddudj in is happyjcidivh ucjdmhhczz\r\n lx,jvutufnj,xbgsg hdjhc jddhufdi\r\n\r\nmcjdyc dudixgt ismn \r\nisghv nkxm yxhcnvuu\r\n\r\n\r\n\r\n\r\n\r\ncuxjchuhj jsjcju jjjjjzk ok\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\njkxkkdk jason ishappy \r\n\r\n\r\nxjxjdjdmckd ckd uxuuldfldkklloplhv i happy\r\n\r\nhxjzjkk\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\njxiuchftdj kckxk cusc hhrihv eyr ehjd krw euu uhdueuudjej\r\n\r\n\r\n\r\n\r\n\r\n\r\n\r\nucdmjddg ddhf dehrehuud djks dhdusudyf sdfus\r\n\\","type_of_failure":"OtherFailure","blocking":[]} -->16871jvuu16871jvuuhttps://gitlab.haskell.org/ghc/ghc/-/issues/628Make ordinary libraries work with SMP RTS2019-07-07T19:17:42ZanonymousMake ordinary libraries work with SMP RTSWe don't want to have two separate library "ways" for SMP and single-threaded. Unfortunately SMP requires an extra field in each thunk, which is a performance loss (\<5%).
In order to make it practical to use SMP, we will have to bite t...We don't want to have two separate library "ways" for SMP and single-threaded. Unfortunately SMP requires an extra field in each thunk, which is a performance loss (\<5%).
In order to make it practical to use SMP, we will have to bite this bullet, however.
With this change, -smp will be an RTS way only, just like -threaded.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"Make ordinary libraries work with SMP RTS","status":"New","operating_system":"Unknown","component":"Compiler","related":[],"milestone":"6.6","resolution":"Unresolved","owner":{"tag":"OwnedBy","contents":"simonmar"},"version":"","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Task","description":"We don't want to have two separate library \"ways\" for SMP and single-threaded. Unfortunately SMP requires an extra field in each thunk, which is a performance loss (<5%).\r\n\r\nIn order to make it practical to use SMP, we will have to bite this bullet, however.\r\n\r\nWith this change, -smp will be an RTS way only, just like -threaded.","type_of_failure":"OtherFailure","blocking":[]} -->6.6Simon MarlowSimon Marlowhttps://gitlab.haskell.org/ghc/ghc/-/issues/629IO library locking doesn't count readers2019-07-07T19:17:42ZSimon MarlowIO library locking doesn't count readersWe aren't keeping track of the number of readers of a file, so that the first one to close a Handle removes the lock.
```
> main = do
> fc <- openFile "z" ReadMode -- sacrificial handle
> fr <- openFile "z" ReadMode
> ...We aren't keeping track of the number of readers of a file, so that the first one to close a Handle removes the lock.
```
> main = do
> fc <- openFile "z" ReadMode -- sacrificial handle
> fr <- openFile "z" ReadMode
> hClose fc
> fa <- openFile "z" AppendMode
> hPutStr fa "append this line\n"
> hGetLine fr >>= print
```
this should fail.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 6.4.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | lowest |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"IO library locking bug","status":"New","operating_system":"Unknown","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Bug","description":"We aren't keeping track of the number of readers of a file, so that the first one to close a Handle removes the lock.\r\n\r\n{{{\r\n> main = do\r\n> fc <- openFile \"z\" ReadMode -- sacrificial handle\r\n> fr <- openFile \"z\" ReadMode\r\n> hClose fc\r\n> fa <- openFile \"z\" AppendMode\r\n> hPutStr fa \"append this line\\n\"\r\n> hGetLine fr >>= print\r\n}}}\r\n\r\nthis should fail.","type_of_failure":"OtherFailure","blocking":[]} -->6.8.3Simon MarlowSimon Marlowhttps://gitlab.haskell.org/ghc/ghc/-/issues/630Found "ghc-6.4: panic!"2019-07-07T19:17:42Zpupeno@pupeno.comFound "ghc-6.4: panic!"I have just gotten:
```
ghc-6.4: panic! (the `impossible' happened, GHC version 6.4):
Unify.unifyTauTyLists: mismatched type lists!
Please report it as a compiler bug to glasgow-haskell-bugs@haskell.org,
or http://sourceforge.n...I have just gotten:
```
ghc-6.4: panic! (the `impossible' happened, GHC version 6.4):
Unify.unifyTauTyLists: mismatched type lists!
Please report it as a compiler bug to glasgow-haskell-bugs@haskell.org,
or http://sourceforge.net/projects/ghc/.
```
from ghci.
The code I loaded is:
```
module ProgramOptions
where
-- newtype Command n = Command [Option n]
-- deriving (Show)
--
-- data Option n = Option { keys :: [String],
-- value :: Value n,
-- description :: String }
-- deriving (Show)
data Option = Option [String] Value String
data Num n => Value n = Boolean Bool
| Numeric n
| String String
instance Num n => Show (Value n) where
show (Boolean b) = show b
show (Numeric n) = show n
show (String s) = show s
```
and the whole session was:
```
$ ghci
___ ___ _
/ _ \ /\ /\/ __(_)
/ /_\// /_/ / / | | GHC Interactive, version 6.4, for Haskell 98.
/ /_\\/ __ / /___| | http://www.haskell.org/ghc/
\____/\/ /_/\____/|_| Type :? for help.
Loading package base-1.0 ... linking ... done.
Prelude> :l ProgramOptions
Compiling ProgramOptions ( ProgramOptions.hs, interpreted )
Ok, modules loaded: ProgramOptions.
*ProgramOptions> Option ["n", "name"] (String "Pupeno") "Name"
ghc-6.4: panic! (the `impossible' happened, GHC version 6.4):
Unify.unifyTauTyLists: mismatched type lists!
Please report it as a compiler bug to glasgow-haskell-bugs@haskell.org,
or http://sourceforge.net/projects/ghc/.
*ProgramOptions>
```
I am reporting mainly because the interpreter asked for it, I am very new to Haskell.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 6.4 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | GHCi |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"Found \"ghc-6.4: panic!\"","status":"New","operating_system":"Unknown","component":"GHCi","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"I have just gotten:\r\n{{{\r\nghc-6.4: panic! (the `impossible' happened, GHC version 6.4):\r\n Unify.unifyTauTyLists: mismatched type lists!\r\n\r\nPlease report it as a compiler bug to glasgow-haskell-bugs@haskell.org,\r\nor http://sourceforge.net/projects/ghc/.\r\n}}}\r\nfrom ghci.\r\nThe code I loaded is:\r\n{{{\r\nmodule ProgramOptions\r\n where\r\n\r\n-- newtype Command n = Command [Option n]\r\n-- deriving (Show)\r\n-- \r\n-- data Option n = Option { keys :: [String],\r\n-- value :: Value n,\r\n-- description :: String }\r\n-- deriving (Show)\r\ndata Option = Option [String] Value String\r\n\r\ndata Num n => Value n = Boolean Bool\r\n | Numeric n\r\n | String String\r\ninstance Num n => Show (Value n) where\r\n show (Boolean b) = show b\r\n show (Numeric n) = show n\r\n show (String s) = show s\r\n}}}\r\nand the whole session was:\r\n{{{\r\n$ ghci\r\n ___ ___ _\r\n / _ \\ /\\ /\\/ __(_)\r\n / /_\\// /_/ / / | | GHC Interactive, version 6.4, for Haskell 98.\r\n/ /_\\\\/ __ / /___| | http://www.haskell.org/ghc/\r\n\\____/\\/ /_/\\____/|_| Type :? for help.\r\n\r\nLoading package base-1.0 ... linking ... done.\r\nPrelude> :l ProgramOptions\r\nCompiling ProgramOptions ( ProgramOptions.hs, interpreted )\r\nOk, modules loaded: ProgramOptions.\r\n*ProgramOptions> Option [\"n\", \"name\"] (String \"Pupeno\") \"Name\"\r\nghc-6.4: panic! (the `impossible' happened, GHC version 6.4):\r\n Unify.unifyTauTyLists: mismatched type lists!\r\n\r\nPlease report it as a compiler bug to glasgow-haskell-bugs@haskell.org,\r\nor http://sourceforge.net/projects/ghc/.\r\n\r\n\r\n*ProgramOptions>\r\n}}}\r\nI am reporting mainly because the interpreter asked for it, I am very new to Haskell.","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/631GHCi doesn't work unregisterised2019-07-07T19:17:41Ztrentbuck@gmail.comGHCi doesn't work unregisterisedTo reproduce this bug, write the following text to bug.hs.
```
data D = D Char deriving Show ...To reproduce this bug, write the following text to bug.hs.
```
data D = D Char deriving Show
main = print f
f = D 'a'
```
Start ghci, and at the prompt enter `:load bug.hs`, then `f`. Instead of printing `D 'a'`, GHCi will segfault.
- This bug DOES manifest on PowerPC (running Debian/sid).
- This bug DOES NOT manifest on i386 (running Debian/sid).
- This bug DOES manifest when bug.hs is loaded in ghci.
- This bug DOES NOT manifest when bug.hs is compiled with ghc.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 6.4.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | GHCi |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Linux |
| Architecture | powerpc |
</details>
<!-- {"blocked_by":[],"summary":"deriving show fails in ghci/ppc","status":"New","operating_system":"Linux","component":"GHCi","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"powerpc","cc":[""],"type":"Bug","description":"To reproduce this bug, write the following text to bug.hs. \r\n\r\n{{{\r\ndata D = D Char deriving Show \r\nmain = print f \r\nf = D 'a' \r\n}}}\r\n\r\nStart ghci, and at the prompt enter `:load bug.hs`, then `f`. Instead of printing `D 'a'`, GHCi will segfault. \r\n\r\n * This bug DOES manifest on PowerPC (running Debian/sid). \r\n * This bug DOES NOT manifest on i386 (running Debian/sid). \r\n * This bug DOES manifest when bug.hs is loaded in ghci. \r\n * This bug DOES NOT manifest when bug.hs is compiled with ghc.","type_of_failure":"OtherFailure","blocking":[]} -->6.10.1Simon MarlowSimon Marlowhttps://gitlab.haskell.org/ghc/ghc/-/issues/632Make a 'fast' subset of the testsuite2019-07-07T19:17:41ZSimon MarlowMake a 'fast' subset of the testsuiteThe testsuite takes a long time to run (usually over an hour, but depends on what "ways" are enabled).
It would be extremely useful to have a subset of the testsuite that runs far more quickly, and yet tests a large proportion of the "u...The testsuite takes a long time to run (usually over an hour, but depends on what "ways" are enabled).
It would be extremely useful to have a subset of the testsuite that runs far more quickly, and yet tests a large proportion of the "useful" tests. For example: omit all ways except normal, omit "programs", and pick a representative few from each of the test categories leaving out long-running tests. We pick a target of running the fast suite in, say, 2 minutes.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 6.4.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | None |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"Make a 'fast' subset of the testsuite","status":"New","operating_system":"Unknown","component":"None","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Task","description":"The testsuite takes a long time to run (usually over an hour, but depends on what \"ways\" are enabled).\r\n\r\nIt would be extremely useful to have a subset of the testsuite that runs far more quickly, and yet tests a large proportion of the \"useful\" tests. For example: omit all ways except normal, omit \"programs\", and pick a representative few from each of the test categories leaving out long-running tests. We pick a target of running the fast suite in, say, 2 minutes.","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/633add dataCast{1,2} to Data instances of Data.Set, Data.Map, etc.2019-07-07T19:17:41Zjrusselladd dataCast{1,2} to Data instances of Data.Set, Data.Map, etc.Adding
`dataCast1 = gcast1`
to the Data instances of `Data.Set` and `Data.IntMap` and
`dataCast2 = gcast2`
to the Data instance of `Data.Map`
would be handy.
I can't see any reason not to; it doesn't break the abstraction
and it all...Adding
`dataCast1 = gcast1`
to the Data instances of `Data.Set` and `Data.IntMap` and
`dataCast2 = gcast2`
to the Data instance of `Data.Map`
would be handy.
I can't see any reason not to; it doesn't break the abstraction
and it allows Set and Map to be used with SYB functions like ext1Q
and friends.
There are probably other data types that could benefit from
this too.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 6.4.1 |
| Type | FeatureRequest |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"add dataCast{1,2} to Data instances of Data.Set, Data.Map, etc.","status":"New","operating_system":"Unknown","component":"libraries/base","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"FeatureRequest","description":"Adding \r\n\r\n{{{dataCast1 = gcast1}}}\r\n\r\nto the Data instances of {{{Data.Set}}} and {{{Data.IntMap}}} and\r\n\r\n{{{dataCast2 = gcast2}}}\r\n\r\nto the Data instance of {{{Data.Map}}}\r\nwould be handy.\r\n\r\nI can't see any reason not to; it doesn't break the abstraction\r\nand it allows Set and Map to be used with SYB functions like ext1Q\r\nand friends.\r\n\r\nThere are probably other data types that could benefit from\r\nthis too.","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/634Implement a more efficient TArray2019-07-07T19:17:41ZanonymousImplement a more efficient TArray`Control.Concurrent.STM.TArray` is implemented as an immutable array of TVars. This gives good parallelism, but isn't very efficient if you don't need that parallelism.
See: [http://www.haskell.org//pipermail/haskell-cafe/2005-December/...`Control.Concurrent.STM.TArray` is implemented as an immutable array of TVars. This gives good parallelism, but isn't very efficient if you don't need that parallelism.
See: [http://www.haskell.org//pipermail/haskell-cafe/2005-December/012909.html](http://www.haskell.org//pipermail/haskell-cafe/2005-December/012909.html)
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 6.4.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"Implement a more efficient TArray","status":"New","operating_system":"Unknown","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Task","description":"{{{Control.Concurrent.STM.TArray}}} is implemented as an immutable array of TVars. This gives good parallelism, but isn't very efficient if you don't need that parallelism.\r\n\r\nSee: [http://www.haskell.org//pipermail/haskell-cafe/2005-December/012909.html]","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/635Replace use of select() in the I/O manager with epoll/kqueue/etc.2022-12-11T14:07:36ZSimon MarlowReplace use of select() in the I/O manager with epoll/kqueue/etc.Subject says it all. We've known about this problem for ever, but haven't got around to doing anything about it.
Here is a library that provides a unified API over the various event APIs: [http://monkey.org/\~provos/libevent/](http://mo...Subject says it all. We've known about this problem for ever, but haven't got around to doing anything about it.
Here is a library that provides a unified API over the various event APIs: [http://monkey.org/\~provos/libevent/](http://monkey.org/~provos/libevent/).
See also [http://www.kegel.com/c10k.html](http://www.kegel.com/c10k.html).
1 week is an estimate for doing it properly on all relevant platforms, by someone who is familiar with the APIs and code.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 6.4.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"Replace use of select() in the I/O manager with epoll/kqueue/etc.","status":"New","operating_system":"Unknown","component":"libraries/base","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Task","description":"Subject says it all. We've known about this problem for ever, but haven't got around to doing anything about it.\r\n\r\nHere is a library that provides a unified API over the various event APIs: [http://monkey.org/~provos/libevent/].\r\n\r\nSee also [http://www.kegel.com/c10k.html].\r\n\r\n1 week is an estimate for doing it properly on all relevant platforms, by someone who is familiar with the APIs and code.","type_of_failure":"OtherFailure","blocking":[]} -->bosboshttps://gitlab.haskell.org/ghc/ghc/-/issues/636deriving Show for infix constructors forgets backquotes2019-07-07T19:17:40Zkoen@cs.chalmers.sederiving Show for infix constructors forgets backquotesWhen compiling and running the following module:
```
module Main where
data Foo = Int `Bar` Int
deriving ( Show )
main = print (3 `Bar` 4)
```
The expected output is:
```
3 `Bar` 4
```
Or even just;
```
Bar 3 4
```
Instead, I ge...When compiling and running the following module:
```
module Main where
data Foo = Int `Bar` Int
deriving ( Show )
main = print (3 `Bar` 4)
```
The expected output is:
```
3 `Bar` 4
```
Or even just;
```
Bar 3 4
```
Instead, I get:
```
3 Bar 4
```https://gitlab.haskell.org/ghc/ghc/-/issues/637Ctrl-Break handler doesn't work in forked threads in "-threaded" RTS2019-07-07T19:17:40Zbulatz@HotPOP.comCtrl-Break handler doesn't work in forked threads in "-threaded" RTSThe following program demonstrates bug in 6.4.1 (6.4.0 was ok).
if you compile it with "-threaded", run and press Ctrl-Break, you will
see message "main.EXE: \<stdin\>: hGetLine: end of file" and program
blocks (because forked thread is ...The following program demonstrates bug in 6.4.1 (6.4.0 was ok).
if you compile it with "-threaded", run and press Ctrl-Break, you will
see message "main.EXE: \<stdin\>: hGetLine: end of file" and program
blocks (because forked thread is dead). the problem is that installed
ctrl-break handler don't called in forked threads
if you compile program without "-threaded" or with 6.4.0, it works as
expected - pressing Ctrl-Break runs my handler so you will see
"Break! main.EXE: thread killed" message
```
import Control.Concurrent
import Control.Exception
import GHC.ConsoleHandler
handleCtrlBreak action = do
myThread <- myThreadId
let onBreak event = do
putStrLn " ^Break!"
killThread myThread
bracket (installHandler$ Catch onBreak) (installHandler) $ \oldHandler -> do
action
main = do
handleCtrlBreak $ do
x <- newEmptyMVar
forkIO$ do a <- getLine
print a
putMVar x ()
return ()
takeMVar x
return ()
```6.6.1Simon MarlowSimon Marlowhttps://gitlab.haskell.org/ghc/ghc/-/issues/638Patch to make Control.Monad.replicateM_ faster2019-07-07T19:17:39ZekarttunPatch to make Control.Monad.replicateM_ fasterHere is a darcs patch to the HEAD which makes
Control.Monad.replicateM_ faster.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version ...Here is a darcs patch to the HEAD which makes
Control.Monad.replicateM_ faster.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 6.4.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Multiple |
| Architecture | Multiple |
</details>
<!-- {"blocked_by":[],"summary":"Patch to make Control.Monad.replicateM_ faster","status":"New","operating_system":"Multiple","component":"libraries/base","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Multiple","cc":[""],"type":"Task","description":"Here is a darcs patch to the HEAD which makes \r\nControl.Monad.replicateM_ faster.","type_of_failure":"OtherFailure","blocking":[]} -->6.8.1https://gitlab.haskell.org/ghc/ghc/-/issues/639Give civilised error messages when desugaring Template Haskell brackets2019-07-07T19:17:38ZSimon Peyton JonesGive civilised error messages when desugaring Template Haskell bracketsDsMeta fails with a panic if it encounters something it can't desugar into TH syntax. This is bad: the error should be civilised. But there's no current provision for desugarer \*errors\*, only \*warnings\*.
Add errors, and perhaps prom...DsMeta fails with a panic if it encounters something it can't desugar into TH syntax. This is bad: the error should be civilised. But there's no current provision for desugarer \*errors\*, only \*warnings\*.
Add errors, and perhaps promote the error/warning box into the part that is shared between all uses of IOEnv (renamer, typechecker, desugarer)
Nothing hard, a bit tedious.
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | ------------ |
| Version | 6.4.1 |
| Type | Task |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | Compiler |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | Unknown |
| Architecture | Unknown |
</details>
<!-- {"blocked_by":[],"summary":"Give civilised error messages when desugaring Template Haskell brackets","status":"New","operating_system":"Unknown","component":"Compiler","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"Unknown","cc":[""],"type":"Task","description":"DsMeta fails with a panic if it encounters something it can't desugar into TH syntax. This is bad: the error should be civilised. But there's no current provision for desugarer *errors*, only *warnings*.\r\n\r\nAdd errors, and perhaps promote the error/warning box into the part that is shared between all uses of IOEnv (renamer, typechecker, desugarer)\r\n\r\nNothing hard, a bit tedious.","type_of_failure":"OtherFailure","blocking":[]} -->https://gitlab.haskell.org/ghc/ghc/-/issues/640hPutArray broken in doze2019-07-07T19:17:38Zahey@iee.orghPutArray broken in dozeWith both 6.2.2 and 6.4.1 hPutArray generates incorrect files under windows.
They seem to have erroneous bytes inserted and the overall file size is
greater than the third argument (No. of bytes).
<details><summary>Trac metadata</summar...With both 6.2.2 and 6.4.1 hPutArray generates incorrect files under windows.
They seem to have erroneous bytes inserted and the overall file size is
greater than the third argument (No. of bytes).
<details><summary>Trac metadata</summary>
| Trac field | Value |
| ---------------------- | -------------- |
| Version | 6.4.1 |
| Type | Bug |
| TypeOfFailure | OtherFailure |
| Priority | normal |
| Resolution | Unresolved |
| Component | libraries/base |
| Test case | |
| Differential revisions | |
| BlockedBy | |
| Related | |
| Blocking | |
| CC | |
| Operating system | |
| Architecture | |
</details>
<!-- {"blocked_by":[],"summary":"hPutArray broken in doze","status":"New","operating_system":"","component":"libraries/base","related":[],"milestone":"","resolution":"Unresolved","owner":{"tag":"Unowned"},"version":"6.4.1","keywords":[],"differentials":[],"test_case":"","architecture":"","cc":[""],"type":"Bug","description":"With both 6.2.2 and 6.4.1 hPutArray generates incorrect files under windows.\r\nThey seem to have erroneous bytes inserted and the overall file size is\r\ngreater than the third argument (No. of bytes).","type_of_failure":"OtherFailure","blocking":[]} -->