Issue #9710 has been updated by Nobuyoshi Nakada.

Status changed from Open to Closed
% Done changed from 0 to 100

Applied in changeset r45537.

----------
configure.in: no __builtin_setjmp on x64-mingw

* configure.in: get rid of __builtin_setjmp/__builtin_longjmp on
  x64-mingw, which causes SEGV with callcc.
  [ruby-core:61887] [Bug #9710]

----------------------------------------
Bug #9710: __builtin_setjmp/longjmp causes SEGV with mingw
https://bugs.ruby-lang.org/issues/9710#change-46118

* Author: Hiroshi Shirosaki
* Status: Closed
* Priority: Normal
* Assignee: 
* Category: 
* Target version: 
* ruby -v: ruby 2.2.0dev (2014-04-07 trunk 45529) [x64-mingw32]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN
----------------------------------------
Now `__builtin_setjmp/__builtin_longjmp` are used with x64-mingw.

ruby 2.2.0dev (2014-04-07 trunk 45529) [x64-mingw32]
gcc version 4.8.2 20130712 (prerelease) (Built by MinGW-builds project)


.ext/include/x64-mingw32/ruby/config.h


~~~
#define RUBY_SETJMP(env) __builtin_setjmp((env))
#define RUBY_LONGJMP(env,val) __builtin_longjmp((env),val)
~~~

But this casues SEGV with callcc.

`ruby -rcontinuation -e "callcc{|c|c.call}"`

Instead using `setjmpex/longjmp` seems to work fine.

```
#define RUBY_SETJMP(env) setjmpex((env))
#define RUBY_LONGJMP(env,val) longjmp((env),val)
```



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