On 20/02/2025 15:33, Daisuke Fujimura via Cygwin wrote:
Reproduction:
- Use ruby-3.4.2-1 (test)
- Install gem containing native libraries
```
$ uname -srvmpio
CYGWIN_NT-10.0-22000 3.5.7-1.x86_64 2025-01-29 19:46 UTC x86_64
unknown unknown Cygwin
$ ruby -v
ruby 3.4.2 (2025-02-15 revision d2930f8e7a) +PRISM [x86_64-cygwin]
$ gem -v
3.5.11
$ cd /tmp
$ git clone https://cygwin.com/git/cygwin-packages/ruby-debug_inspector
# Any gem that contains native libraries
$ cd ruby-debug_inspector
$ cygport ruby-debug_inspector.cygport fetch prep compile # preparation
$ cygport ruby-debug_inspector.cygport install
:
```
The process spawned inside `gem install` seems to raise SIGSEGV
internally and exits.
```
$ gdb /usr/bin/ruby
:
(gdb) run /usr/bin/gem install -V --local --ignore-dependencies
--document=rdoc,ri --build-root
/tmp/ruby-debug_inspector/ruby-debug_inspector-1.1.0-1.x86_64/inst
--install-dir /usr/share/gems --bindir /usr/bin
debug_inspector-1.1.0.gem #
https://github.com/cygwin/cygport/blob/0.36.9/cygclass/rubygem.cygclass#L134
:
:
Building native extensions. This could take a while...
current directory:
/tmp/ruby-debug_inspector/ruby-debug_inspector-1.1.0-1.x86_64/inst/usr/share/gems/gems/debug_inspector-1.1.0/ext/debug_inspector
["/usr/bin/ruby.exe", "-I/usr/share/rubygems", "extconf.rb"]
[New Thread 3600.0x23a0]
[New Thread 3600.0x1278]
[New Thread 3600.0x2794]
creating Makefile
Thread 11 "ruby" received signal SIGSEGV, Segmentation fault.
[Switching to Thread 3600.0x1278]
0x0000000000000000 in ?? ()
[...]
SIGSEGV seems to occur inside the cygwin DLL.
You might get more useful backtrace information after the exception with
the gdb setting 'set cygwin-exceptions on' (See [1]).
[1] https://cygwin.com/faq.html#faq.programming.debugging-cygwin
(It would be a nice project for someone to work on to see if is possible
improve this gdb (mis)feature so it only ignores exceptions inside the
cygwin DLL where exception::myfault() is on the SEH stack [which is used
to implement things like "POSIX defines that this function returns
EFAULT when you hand it an invalid pointer"], not all of them).
This problem also occurs with ruby-3.3.2-3 (test).
We have confirmed that it also occurs in cygwin-3.6.
--
Problem reports: https://cygwin.com/problems.html
FAQ: https://cygwin.com/faq/
Documentation: https://cygwin.com/docs.html
Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple