[commit: ghc] master: rts/RetainerProfile: Dump closure type if pop() fails (2bacf6f)

git at git.haskell.org git at git.haskell.org
Tue Aug 21 22:57:46 UTC 2018


Repository : ssh://git@git.haskell.org/ghc

On branch  : master
Link       : http://ghc.haskell.org/trac/ghc/changeset/2bacf6f8842d8e1288917e358ed41e4c61b7948e/ghc

>---------------------------------------------------------------

commit 2bacf6f8842d8e1288917e358ed41e4c61b7948e
Author: Ryan Scott <ryan.gl.scott at gmail.com>
Date:   Tue Aug 21 16:04:45 2018 -0400

    rts/RetainerProfile: Dump closure type if pop() fails
    
    While investigating #15529, I noticed that the `barf`ed
    error message in `pop()` doesn't print out the closure type that
    causes it to crash. Let's do so.
    
    Reviewers: bgamari, erikd, simonmar
    
    Reviewed By: bgamari
    
    Subscribers: rwbarton, carter
    
    GHC Trac Issues: #15529
    
    Differential Revision: https://phabricator.haskell.org/D5072


>---------------------------------------------------------------

2bacf6f8842d8e1288917e358ed41e4c61b7948e
 rts/RetainerProfile.c | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/rts/RetainerProfile.c b/rts/RetainerProfile.c
index 6a0af21..9458b13 100644
--- a/rts/RetainerProfile.c
+++ b/rts/RetainerProfile.c
@@ -897,7 +897,7 @@ pop( StgClosure **c, StgClosure **cp, retainer *r )
         case IND:
         case INVALID_OBJECT:
         default:
-            barf("Invalid object *c in pop()");
+            barf("Invalid object *c in pop(): %d", get_itbl(se->c)->type);
             return;
         }
     } while (true);



More information about the ghc-commits mailing list