[GHC] #9728: ghci: internal error: ASSERTION FAILED: file rts/Interpreter.c, line 773

#9728: ghci: internal error: ASSERTION FAILED: file rts/Interpreter.c, line 773 -------------------------------------+------------------------------------- Reporter: slyfox | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.9 Keywords: | Operating System: Architecture: Unknown/Multiple | Unknown/Multiple Difficulty: Unknown | Type of failure: Runtime Blocked By: | crash Related Tickets: | Test Case: ghcirun002 | Blocking: | Differential Revisions: -------------------------------------+------------------------------------- It's a ghc-HEAD on amd64 ./configure --enable-unregisterised. One of faulty tests is a: {{{ ghc-unreg/testsuite/tests/ghci/should_run $ '/home/slyfox/dev/git/ghc- unreg/inplace/bin/ghc-stage2' -fforce-recomp -dcore-lint -dcmm-lint -dno- debug-output -no-user-package-db -rtsopts -optc-fno-builtin -fno-warn-tabs -fno-ghci-history ghcirun002.hs --interactive -v0 -ignore-dot-ghci +RTS -I0.1 -RTS *Main> main (<interactive>: internal error: ASSERTION FAILED: file rts/Interpreter.c, line 773 (GHC version 7.9.20141020 for x86_64_unknown_linux) Please report this as a GHC bug: http://www.haskell.org/ghc/reportabug Aborted }}} The assertion failure is triggered by stack overflow check when handling ... stack overflow! {{{ // Stack check if (Sp - INTERP_STACK_CHECK_THRESH < SpLim) { Sp -= 2; Sp[1] = (W_)obj; Sp[0] = (W_)&stg_apply_interp_info; // placeholder, really /* 773 */ RETURN_TO_SCHEDULER(ThreadInterpret, StackOverflow); } /* ... RETURN_TO_SCHEDULER decl: */ #define RETURN_TO_SCHEDULER(todo,retcode) \ /* this triggers assert */ SAVE_STACK_POINTERS; \ cap->r.rCurrentTSO->what_next = (todo); \ threadPaused(cap,cap->r.rCurrentTSO); \ cap->r.rRet = (retcode); \ return cap; /* ... SAVE_STACK_POINTERS decl: */ #define SAVE_STACK_POINTERS \ ASSERT(Sp > SpLim); \ cap->r.rCurrentTSO->stackobj->sp = Sp }}} In our case '''Sp == SpLim'''. That means we have written one word out-of-stack-bounds, right? -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9728 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9728: ghci: internal error: ASSERTION FAILED: file rts/Interpreter.c, line 773 -------------------------------------+------------------------------------- Reporter: slyfox | Owner: Type: bug | Status: new Priority: normal | Milestone: Component: GHCi | Version: 7.9 Resolution: | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: Runtime | Blocked By: crash | Related Tickets: Test Case: ghcirun002 | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Comment (by simonpj): I saw this on `ghcirun004`, but only on my `wip/new-flatten-skolems-Aug14` branch. It's reassuring (in the sense that it's not specific to my branch) that it is happening elsewhere too. I'd love a fix. Simon -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9728#comment:1 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler

#9728: ghci: internal error: ASSERTION FAILED: file rts/Interpreter.c, line 773 -------------------------------------+------------------------------------- Reporter: slyfox | Owner: Type: bug | Status: closed Priority: normal | Milestone: Component: GHCi | Version: 7.9 Resolution: duplicate | Keywords: Operating System: | Architecture: Unknown/Multiple Unknown/Multiple | Difficulty: Unknown Type of failure: Runtime | Blocked By: crash | Related Tickets: Test Case: ghcirun002 | Blocking: | Differential Revisions: | -------------------------------------+------------------------------------- Changes (by simonmar): * status: new => closed * resolution: => duplicate Comment: same as #9741 -- Ticket URL: http://ghc.haskell.org/trac/ghc/ticket/9728#comment:2 GHC http://www.haskell.org/ghc/ The Glasgow Haskell Compiler
participants (1)
-
GHC