Blocking MVar# primops not performing stack checks?

Hi all, When an MVar# primop blocks, it jumps to a function in HeapStackCheck.cmm which pushes a RET_SMALL stack frame before returning to the scheduler (e.g. the takeMVar# primop jumps to stg_block_takemvar for stack adjustment). But these functions directly bump Sp without checking for possible stack overflow, I wonder if it is a bug? Cheers, Cheng

The simplest way to answer this is if you can help us construct a program,
whether as Haskell or cmm, which tickles the failure you suspect is there ?
The rts definitely gets less love overall. And there’s fewer folks
involved in those layers overall.
On Wed, Feb 26, 2020 at 10:03 AM Shao, Cheng
Hi all,
When an MVar# primop blocks, it jumps to a function in HeapStackCheck.cmm which pushes a RET_SMALL stack frame before returning to the scheduler (e.g. the takeMVar# primop jumps to stg_block_takemvar for stack adjustment). But these functions directly bump Sp without checking for possible stack overflow, I wonder if it is a bug?
Cheers, Cheng _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

I just took a look at the implementation and it looks like you are right Cheng. I opened a ticket here: https://gitlab.haskell.org/ghc/ghc/issues/17893 Carter Schonwald schrieb am 02.03.2020 um 06:27:
The simplest way to answer this is if you can help us construct a program, whether as Haskell or cmm, which tickles the failure you suspect is there ?
The rts definitely gets less love overall. And there’s fewer folks involved in those layers overall.
On Wed, Feb 26, 2020 at 10:03 AM Shao, Cheng
mailto:cheng.shao@tweag.io> wrote: Hi all,
When an MVar# primop blocks, it jumps to a function in HeapStackCheck.cmm which pushes a RET_SMALL stack frame before returning to the scheduler (e.g. the takeMVar# primop jumps to stg_block_takemvar for stack adjustment). But these functions directly bump Sp without checking for possible stack overflow, I wonder if it is a bug?
Cheers, Cheng _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org mailto:ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs
participants (3)
-
Andreas Klebinger
-
Carter Schonwald
-
Shao, Cheng