Issue #15413 has been reported by normalperson (Eric Wong).

----------------------------------------
Feature #15413: unmarkable C stack (3rd stack)
https://bugs.ruby-lang.org/issues/15413

* Author: normalperson (Eric Wong)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
----------------------------------------
The current machine (C) stack can get pretty big for some C functions
(rb_ensure, rb_f_select/rb_thread_fd_select/...).  This is harmful when we stop
a fiber/thread and all that stack becomes eligible for marking.

We should experiment a bump allocator for temporary allocations which
behaves like the stack, but does not get marked by GC.  VALUEs will continue
to be allocated on normal C stack, but non-VALUE stuff can go to the
unmarkable machine stack.

Maybe we call it "UMMS" for Un-Markable Machine Stack

We cannot remove marking of the current C stack for compatibility;
but we can transition existing C code to use UMMS.

I probably won't be around to work on it for 2.7, unfortunately.




-- 
https://bugs.ruby-lang.org/

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>