Actions
Bug #4983
closedFiberのガードページの設定が間違ってる
Bug #4983:
Fiberのガードページの設定が間違ってる
Description
以下の関数でスタックのアロケーションとガードページの設定をしていますが、ガードページがPROT_READ|PROT_WRITEなのは
なにかの間違いだと思います。あとで直しておきます。
static VALUE*
fiber_machine_stack_alloc(size_t size)
{
VALUE ptr;
(snip)
}
else {
void page;
STACK_GROW_DIR_DETECTION;
ptr = (VALUE)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANON, -1, 0);
if (ptr == (VALUE)(SIGNED_VALUE)-1) {
rb_raise(rb_eFiberError, "can't alloc machine stack to fiber");
}
page = ptr + STACK_DIR_UPPER((size - RB_PAGE_SIZE) / sizeof(VALUE), 0);
if (mprotect(page, RB_PAGE_SIZE, PROT_READ | PROT_WRITE) < 0) { // ここ!
rb_raise(rb_eFiberError, "mprotect failed");
Actions