[racket-dev] calling make-keyword-procedure from inside a thread produces a stack overflow in scheme_uncopy_stack
I didn't get from your earlier message that provoking the crash is as
easy as running the expression below, but I am indeed able to replicate
the problem immediately.
Also, I have been swamped for the last couple of weeks, but I should be
able to get to this soon.
Thanks!
At Wed, 15 May 2013 13:40:04 +0100, Matthew Eric Bassett wrote:
> This is related to
> http://www.mail-archive.com/users@racket-lang.org/msg17597.html. Forgive
> me for posting it again, I wanted to make sure it didn't disappear into
> a black hole.
>
> Launching a racket thread that calls make-keyword-procedure may produce
> a seg fault. For instance,
>
> (let loop () (thread (make-keyword-procedure (lambda (x y) '())))
> (loop))
>
> Reliably causes a seg fault. Repeatedly calling
>
> (thread (make-keyword-procedure (lambda (x y) '())))
>
> will eventually (but not consistently) produce a seg fault. Functions
> defined with make-keyword-procedure, such as const and thunk* suffer the
> same fate (plain ol' thunk is fine).
>
> A coredump of the racket repl from this segfault shows a stack overflow
> in scheme_uncopy_stack, with the Scheme_Jumpup_Buf zeroed out. Please
> see our gdp session at http://pastebin.com/aBx2FTcK (This is from racket
> compiled without optimization) or cause your own seg fault with the
> above code.
>
> Perhaps we're being incredibly daft to write code where we'd need to
> const or thunk* something inside a thread, or perhaps this is a bug in
> racket. We might just be incredibly daft by calling a const inside a
> thread, or this is a bug in racket, or something else is up. In any
> case, we've exhausted our abilities to investigate it further and would
> appreciate advice from those more familiar with the code.
>
> Regards,
>
> --
> Matthew Eric Bassett | http://mebassett.info
> _________________________
> Racket Developers list:
> http://lists.racket-lang.org/dev