зеркало из https://github.com/github/ruby.git
Fix coroutine support on win32
Ruby master branch currently fails on win32 MINGW at this spec: https://github.com/ruby/spec/blob/master/core/thread/element_set_spec.rb MINGW makes use of setjmp3() implemented in MSVCRT.DLL. This function traverses the SEH list up to a terminating pointer 0xFFFFFFFF. It therefore currently segfaults on NULL. The SEH linked list must be terminated by 0xFFFFFFFF instead of NULL. This fixes the issue mentioned here: https://github.com/ruby/ruby/pull/2279#issuecomment-509508810
This commit is contained in:
Родитель
7c07300491
Коммит
853d91a04a
|
@ -42,7 +42,7 @@ static inline void coroutine_initialize(
|
||||||
*--context->stack_pointer = (void*)start;
|
*--context->stack_pointer = (void*)start;
|
||||||
|
|
||||||
/* Windows Thread Information Block */
|
/* Windows Thread Information Block */
|
||||||
*--context->stack_pointer = 0; /* fs:[0] */
|
*--context->stack_pointer = (void*)0xFFFFFFFF; /* fs:[0] */
|
||||||
*--context->stack_pointer = (void*)top; /* fs:[4] */
|
*--context->stack_pointer = (void*)top; /* fs:[4] */
|
||||||
*--context->stack_pointer = (void*)stack; /* fs:[8] */
|
*--context->stack_pointer = (void*)stack; /* fs:[8] */
|
||||||
|
|
||||||
|
|
Загрузка…
Ссылка в новой задаче