
#10154: strange closure type 983040 (GHC version 7.8.3 for x86_64_unknown_linux)
-------------------------------------+-------------------------------------
Reporter: masterdezign | Owner:
Type: bug | Status: closed
Priority: high | Milestone:
Component: Compiler | Version: 7.8.3
Resolution: invalid | Keywords: strange
Operating System: Linux | closure type
Type of failure: Runtime crash | Architecture:
Blocked By: | Unknown/Multiple
Related Tickets: | Test Case:
| Blocking:
| Differential Revisions:
-------------------------------------+-------------------------------------
Changes (by rwbarton):
* status: infoneeded => closed
* resolution: => invalid
Comment:
I tried building with `-debug -rtsopts` and running with `+RTS -DS` under
gdb and sure enough, many hours later, I got this:
{{{
...
Running epsilon=5.0e-3 delta=1.8e-2
Running epsilon=5.0e-3 delta=1.9e-2
Running epsilon=5.0e-3 delta=2.0e-2
[New Thread 0x7fffa53ff700 (LWP 18847)]
epsilon=2.0e-2 delta=1.0e-3 => 0 head(s) (92.3%)
Simul: internal error: ASSERTION FAILED: file rts/sm/Storage.c, line 789
(GHC version 7.8.4 for x86_64_unknown_linux)
Please report this as a GHC bug:
http://www.haskell.org/ghc/reportabug
Program received signal SIGABRT, Aborted.
[Switching to Thread 0x7fffe5dfc700 (LWP 18737)]
0x00007ffff6798077 in __GI_raise (sig=sig@entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
56 ../nptl/sysdeps/unix/sysv/linux/raise.c: No such file or
directory.
(gdb) bt
#0 0x00007ffff6798077 in __GI_raise (sig=sig@entry=6) at
../nptl/sysdeps/unix/sysv/linux/raise.c:56
#1 0x00007ffff6799458 in __GI_abort () at abort.c:89
#2 0x00000000007e5087 in rtsFatalInternalErrorFn (s=0x854810 "ASSERTION
FAILED: file %s, line %u\n", ap=0x7fffe5df7cd8) at rts/RtsMessages.c:170
#3 0x00000000007e4cbf in barf (s=0x854810 "ASSERTION FAILED: file %s,
line %u\n") at rts/RtsMessages.c:42
#4 0x00000000007e4d22 in _assertFail (filename=0x85a1c8
"rts/sm/Storage.c", linenum=789) at rts/RtsMessages.c:57
#5 0x0000000000804d69 in allocate (cap=0xacec60, n=8) at
rts/sm/Storage.c:789
#6 0x000000000080f522 in stg_newByteArrayzh ()
#7 0x0000000000000000 in ?? ()
}}}
The failed assertion is at the end of `allocate`:
{{{
IF_DEBUG(sanity, ASSERT(*((StgWord8*)p) == 0xaa));
}}}
Inspecting the memory before `p` (the pointer that `allocate` has just
allocated, and is about to return) I see
{{{
(gdb) x/ga p-8
0x7ffff42ec9c0: 0x812e60