Issue #4983 has been updated by Motohiro KOSAKI. ??¥ä»¶??§ã????????????????«è³ª?????????????®ã?§ã?????????????¡ã?¤ã????¼ã?®ã?¹ã?¿ã????¯ã?µã?¤ã?ºã?? #define FIBER_MACHINE_STACK_ALLOCATION_SIZE (0x10000 / sizeof(VALUE)) ??®ã???????? sizeof(VALUE)??§ã?®å?²ã??ç®??????¥ã??????????¨ã?«ã????????sizeof(VALUE)??®å????°ã??ä¿???¨ã????¨ã????¦ã????????è·¡ã??????????¾ã???????? ??¬ã?¼ã???????¼ã?¸ç?¨ã?«ï???????¼ã?¸é?????????¦ã????¾ã????®ã?§ã??çµ?å±?????????®ã?¹ã?¿ã????¯ã?µã?¤ã?ºã?? sizeof(VALUE)??®å????°ã?§ã?????ä¿?証ã?? ??ªã???ªã?£ã?¦ã????¾ã?£ã?¦ã????¾ã????? ????????¯å????ªã????§ã???????????ï¼?????????¨ã??????³ã??誤èª?????¦ã?¾ã??ï¼? ---------------------------------------- Bug #4983: Fiber??®ã?¬ã?¼ã???????¼ã?¸ã?®è¨å®????????????£ã?¦ã?? http://redmine.ruby-lang.org/issues/4983 Author: Motohiro KOSAKI Status: Assigned Priority: Normal Assignee: Motohiro KOSAKI Category: core Target version: 1.9.3 ruby -v: trunk 以ä????®é?¢æ?°ã?§ã?¹ã?¿ã????¯ã?®ã?¢ã?ã?±ã?¼ã?·ã?§ã?³ã?¨ã?¬ã?¼ã???????¼ã?¸ã?®è¨å®?????????¦ã????¾ã??????????¬ã?¼ã???????¼ã?¸ã??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"); -- http://redmine.ruby-lang.org