[GHC] #14947: internal error: Invalid object *c in push()
GHC
ghc-devs at haskell.org
Fri Mar 23 18:47:47 UTC 2018
#14947: internal error: Invalid object *c in push()
-------------------------------------+-------------------------------------
Reporter: varosi | Owner: (none)
Type: bug | Status: new
Priority: normal | Milestone:
Component: Profiling | Version: 8.4.1
Resolution: | Keywords:
Operating System: Unknown/Multiple | Architecture:
| Unknown/Multiple
Type of failure: Runtime crash | Test Case:
Blocked By: | Blocking:
Related Tickets: | Differential Rev(s):
Wiki Page: |
-------------------------------------+-------------------------------------
Comment (by RyanGlScott):
As an experiment, I build GHC against that commit using this patch:
{{{#!diff
diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index 7a9b9cc..c6eff0a 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -442,6 +442,7 @@ push( StgClosure *c, retainer c_child_r, StgClosure
**first_child )
{
stackElement se;
bdescr *nbd; // Next Block Descriptor
+ char *barf_me;
#if defined(DEBUG_RETAINER)
// debugBelch("push(): stackTop = 0x%x, currentStackBoundary =
0x%x\n", stackTop, currentStack
@@ -633,7 +634,8 @@ push( StgClosure *c, retainer c_child_r, StgClosure
**first_child )
case IND:
case INVALID_OBJECT:
default:
- barf("Invalid object *c in push()");
+ asprintf(&barf_me, "Invalid object *c in push(): %d",
get_itbl(c)->type);
+ barf(barf_me);
return;
}
}}}
And this is what I received after running `cgraytrace-exe` built with this
patched GHC:
{{{
Rendering to sample.png...
cgraytrace-exe: internal error: Invalid object *c in push(): 37
(GHC version 8.5.20171211 for x86_64_unknown_linux)
Please report this as a GHC bug:
http://www.haskell.org/ghc/reportabug
}}}
It looks like 37
[http://git.haskell.org/ghc.git/blob/affdea82bb70e5a912b679a169c6e9a230e4c93e:/includes/rts/storage/ClosureTypes.h#l59
corresponds to] the `BLOCKING_QUEUE` closure type. `push()` does not have
a case in its giant `switch` statement for `BLOCKING_QUEUE`, which at
least explains why it falls through.
--
Ticket URL: <http://ghc.haskell.org/trac/ghc/ticket/14947#comment:7>
GHC <http://www.haskell.org/ghc/>
The Glasgow Haskell Compiler
More information about the ghc-tickets
mailing list