
#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... 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