ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:118373] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine
@ 2024-06-22 11:53 haukot (Dmitry Davydov) via ruby-core
  2024-06-22 11:53 ` [ruby-core:118374] " haukot (Dmitry Davydov) via ruby-core
                   ` (4 more replies)
  0 siblings, 5 replies; 6+ messages in thread
From: haukot (Dmitry Davydov) via ruby-core @ 2024-06-22 11:53 UTC (permalink / raw)
  To: ruby-core; +Cc: haukot (Dmitry Davydov)

Issue #20592 has been reported by haukot (Dmitry Davydov).

----------------------------------------
Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
https://bugs.ruby-lang.org/issues/20592

* Author: haukot (Dmitry Davydov)
* Status: Open
* ruby -v: ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
On Alpine 3.20 got a segfault when interrupting Addrinfo request which would resolve with error.

Same on 
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux-musl]

Tried on docker image alpine3.20 and ruby:3.4.0-preview1-alpine.

```ruby
# test.rb

require 'socket'
require 'timeout'

begin
  Addrinfo.ip("1234.example.com")
rescue StandardError => e
  puts e
end

sleep 10 # wait getaddrinfo to resolve and fail
```

```
/app # ruby test.rb
execution expired
[BUG] Segmentation fault at 0x0000000000000028
ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]

-- Machine register context ------------------------------------------------
 RIP: 0x00007fefe4cd4886 RBP: 0x0000000000000001 RSP: 0x00007fefc95d3a10
 RAX: 0x0000000000000001 RBX: 0x00007fefc94212e0 RCX: 0x00007fefc95d0b70
 RDX: 0x0000000000000010 RDI: 0x0000000000000000 RSI: 0x00007fefc95d08f0
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
 R11: 0x0000000000000217 R12: 0x00007fefc9421340 R13: 0x00007fff5a0ec750
 R14: 0x00007fefe4649b10 R15: 0x00007fefc95d3b38 EFL: 0x0000000000010202

-- Other runtime information -----------------------------------------------

```


gdb logs
```
/app # gdb -q --args ruby test.rb
(gdb) run
Starting program: /usr/local/bin/ruby test.rb
warning: Error disabling address space randomization: Operation not permitted
[New LWP 36]
[New LWP 37]
[New LWP 38]
execution expired

Thread 4 "ruby" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 38]
0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
warning: 10     src/network/freeaddrinfo.c: No such file or directory
(gdb) bt
#0  0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
#1  0x00007f0a10c1e940 in do_getaddrinfo (ptr=0x7f0a10f61200) at raddrinfo.c:426
#2  0x00007f0a2c35c349 in start (p=0x7f0a10afaa88) at src/thread/pthread_create.c:207
#3  0x00007f0a2c35e95f in __clone () at src/thread/x86_64/clone.s:22
Backtrace stopped: frame did not save the PC
(gdb) info args
p = 0x0
```

There are no errors if Addrinfo resolves with data

```
  Timeout.timeout(0.01) { Addrinfo.ip("ruby-lang.org") } # finishes correctly

```

The problem is that freeaddrinfo on alpine does not accept a NULL pointer (ref
https://git.musl-libc.org/cgit/musl/tree/src/network/freeaddrinfo.c)

---Files--------------------------------
segfault_gdb (1.56 KB)
segfault (14.1 KB)


-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-core:118374] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine
  2024-06-22 11:53 [ruby-core:118373] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine haukot (Dmitry Davydov) via ruby-core
@ 2024-06-22 11:53 ` haukot (Dmitry Davydov) via ruby-core
  2024-06-22 13:06 ` [ruby-core:118375] " mame (Yusuke Endoh) via ruby-core
                   ` (3 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: haukot (Dmitry Davydov) via ruby-core @ 2024-06-22 11:53 UTC (permalink / raw)
  To: ruby-core; +Cc: haukot (Dmitry Davydov)

Issue #20592 has been updated by haukot (Dmitry Davydov).


PR https://github.com/ruby/ruby/pull/11045

----------------------------------------
Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
https://bugs.ruby-lang.org/issues/20592#change-108879

* Author: haukot (Dmitry Davydov)
* Status: Open
* ruby -v: ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN
----------------------------------------
On Alpine 3.20 got a segfault when interrupting Addrinfo request which would resolve with error.

Same on 
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux-musl]

Tried on docker image alpine3.20 and ruby:3.4.0-preview1-alpine.

```ruby
# test.rb

require 'socket'
require 'timeout'

begin
  Addrinfo.ip("1234.example.com")
rescue StandardError => e
  puts e
end

sleep 10 # wait getaddrinfo to resolve and fail
```

```
/app # ruby test.rb
execution expired
[BUG] Segmentation fault at 0x0000000000000028
ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]

-- Machine register context ------------------------------------------------
 RIP: 0x00007fefe4cd4886 RBP: 0x0000000000000001 RSP: 0x00007fefc95d3a10
 RAX: 0x0000000000000001 RBX: 0x00007fefc94212e0 RCX: 0x00007fefc95d0b70
 RDX: 0x0000000000000010 RDI: 0x0000000000000000 RSI: 0x00007fefc95d08f0
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
 R11: 0x0000000000000217 R12: 0x00007fefc9421340 R13: 0x00007fff5a0ec750
 R14: 0x00007fefe4649b10 R15: 0x00007fefc95d3b38 EFL: 0x0000000000010202

-- Other runtime information -----------------------------------------------

```


gdb logs
```
/app # gdb -q --args ruby test.rb
(gdb) run
Starting program: /usr/local/bin/ruby test.rb
warning: Error disabling address space randomization: Operation not permitted
[New LWP 36]
[New LWP 37]
[New LWP 38]
execution expired

Thread 4 "ruby" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 38]
0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
warning: 10     src/network/freeaddrinfo.c: No such file or directory
(gdb) bt
#0  0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
#1  0x00007f0a10c1e940 in do_getaddrinfo (ptr=0x7f0a10f61200) at raddrinfo.c:426
#2  0x00007f0a2c35c349 in start (p=0x7f0a10afaa88) at src/thread/pthread_create.c:207
#3  0x00007f0a2c35e95f in __clone () at src/thread/x86_64/clone.s:22
Backtrace stopped: frame did not save the PC
(gdb) info args
p = 0x0
```

There are no errors if Addrinfo resolves with data

```
  Timeout.timeout(0.01) { Addrinfo.ip("ruby-lang.org") } # finishes correctly

```

The problem is that freeaddrinfo on alpine does not accept a NULL pointer (ref
https://git.musl-libc.org/cgit/musl/tree/src/network/freeaddrinfo.c)

---Files--------------------------------
segfault_gdb (1.56 KB)
segfault (14.1 KB)


-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-core:118375] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine
  2024-06-22 11:53 [ruby-core:118373] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine haukot (Dmitry Davydov) via ruby-core
  2024-06-22 11:53 ` [ruby-core:118374] " haukot (Dmitry Davydov) via ruby-core
@ 2024-06-22 13:06 ` mame (Yusuke Endoh) via ruby-core
  2024-07-02  6:00 ` [ruby-core:118413] " mame (Yusuke Endoh) via ruby-core
                   ` (2 subsequent siblings)
  4 siblings, 0 replies; 6+ messages in thread
From: mame (Yusuke Endoh) via ruby-core @ 2024-06-22 13:06 UTC (permalink / raw)
  To: ruby-core; +Cc: mame (Yusuke Endoh)

Issue #20592 has been updated by mame (Yusuke Endoh).

Backport changed from 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: UNKNOWN to 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: REQUIRED

Thanks! Looks good to me. I have merged your PR.

----------------------------------------
Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
https://bugs.ruby-lang.org/issues/20592#change-108886

* Author: haukot (Dmitry Davydov)
* Status: Closed
* ruby -v: ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]
* Backport: 3.1: UNKNOWN, 3.2: UNKNOWN, 3.3: REQUIRED
----------------------------------------
On Alpine 3.20 got a segfault when interrupting Addrinfo request which would resolve with error.

Same on 
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux-musl]

Tried on docker image alpine3.20 and ruby:3.4.0-preview1-alpine.

```ruby
# test.rb

require 'socket'
require 'timeout'

begin
  Addrinfo.ip("1234.example.com")
rescue StandardError => e
  puts e
end

sleep 10 # wait getaddrinfo to resolve and fail
```

```
/app # ruby test.rb
execution expired
[BUG] Segmentation fault at 0x0000000000000028
ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]

-- Machine register context ------------------------------------------------
 RIP: 0x00007fefe4cd4886 RBP: 0x0000000000000001 RSP: 0x00007fefc95d3a10
 RAX: 0x0000000000000001 RBX: 0x00007fefc94212e0 RCX: 0x00007fefc95d0b70
 RDX: 0x0000000000000010 RDI: 0x0000000000000000 RSI: 0x00007fefc95d08f0
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
 R11: 0x0000000000000217 R12: 0x00007fefc9421340 R13: 0x00007fff5a0ec750
 R14: 0x00007fefe4649b10 R15: 0x00007fefc95d3b38 EFL: 0x0000000000010202

-- Other runtime information -----------------------------------------------
```


gdb logs
```
/app # gdb -q --args ruby test.rb
(gdb) run
Starting program: /usr/local/bin/ruby test.rb
warning: Error disabling address space randomization: Operation not permitted
[New LWP 36]
[New LWP 37]
[New LWP 38]
execution expired

Thread 4 "ruby" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 38]
0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
warning: 10     src/network/freeaddrinfo.c: No such file or directory
(gdb) bt
#0  0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
#1  0x00007f0a10c1e940 in do_getaddrinfo (ptr=0x7f0a10f61200) at raddrinfo.c:426
#2  0x00007f0a2c35c349 in start (p=0x7f0a10afaa88) at src/thread/pthread_create.c:207
#3  0x00007f0a2c35e95f in __clone () at src/thread/x86_64/clone.s:22
Backtrace stopped: frame did not save the PC
(gdb) info args
p = 0x0
```

There are no errors if Addrinfo resolves with data

```ruby
  Timeout.timeout(0.01) { Addrinfo.ip("ruby-lang.org") } # finishes correctly
```

The problem is that freeaddrinfo on alpine does not accept a NULL pointer (ref
https://git.musl-libc.org/cgit/musl/tree/src/network/freeaddrinfo.c)

---Files--------------------------------
segfault.txt (14.1 KB)
segfault_gdb.txt (1.56 KB)


-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-core:118413] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine
  2024-06-22 11:53 [ruby-core:118373] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine haukot (Dmitry Davydov) via ruby-core
  2024-06-22 11:53 ` [ruby-core:118374] " haukot (Dmitry Davydov) via ruby-core
  2024-06-22 13:06 ` [ruby-core:118375] " mame (Yusuke Endoh) via ruby-core
@ 2024-07-02  6:00 ` mame (Yusuke Endoh) via ruby-core
  2024-07-08 22:58 ` [ruby-core:118504] " k0kubun (Takashi Kokubun) via ruby-core
  2024-07-20  6:05 ` [ruby-core:118646] " nagachika (Tomoyuki Chikanaga) via ruby-core
  4 siblings, 0 replies; 6+ messages in thread
From: mame (Yusuke Endoh) via ruby-core @ 2024-07-02  6:00 UTC (permalink / raw)
  To: ruby-core; +Cc: mame (Yusuke Endoh)

Issue #20592 has been updated by mame (Yusuke Endoh).


@nagachika @k0kubun When you backport this patch, please backport commit:d8c6e91748871ab2287d7703347847fe18a292d2 as well. FYI.

----------------------------------------
Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
https://bugs.ruby-lang.org/issues/20592#change-108929

* Author: haukot (Dmitry Davydov)
* Status: Closed
* ruby -v: ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]
* Backport: 3.1: UNKNOWN, 3.2: REQUIRED, 3.3: REQUIRED
----------------------------------------
On Alpine 3.20 got a segfault when interrupting Addrinfo request which would resolve with error.

Same on 
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux-musl]

Tried on docker image alpine3.20 and ruby:3.4.0-preview1-alpine.

```ruby
# test.rb

require 'socket'
require 'timeout'

begin
  Addrinfo.ip("1234.example.com")
rescue StandardError => e
  puts e
end

sleep 10 # wait getaddrinfo to resolve and fail
```

```
/app # ruby test.rb
execution expired
[BUG] Segmentation fault at 0x0000000000000028
ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]

-- Machine register context ------------------------------------------------
 RIP: 0x00007fefe4cd4886 RBP: 0x0000000000000001 RSP: 0x00007fefc95d3a10
 RAX: 0x0000000000000001 RBX: 0x00007fefc94212e0 RCX: 0x00007fefc95d0b70
 RDX: 0x0000000000000010 RDI: 0x0000000000000000 RSI: 0x00007fefc95d08f0
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
 R11: 0x0000000000000217 R12: 0x00007fefc9421340 R13: 0x00007fff5a0ec750
 R14: 0x00007fefe4649b10 R15: 0x00007fefc95d3b38 EFL: 0x0000000000010202

-- Other runtime information -----------------------------------------------
```


gdb logs
```
/app # gdb -q --args ruby test.rb
(gdb) run
Starting program: /usr/local/bin/ruby test.rb
warning: Error disabling address space randomization: Operation not permitted
[New LWP 36]
[New LWP 37]
[New LWP 38]
execution expired

Thread 4 "ruby" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 38]
0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
warning: 10     src/network/freeaddrinfo.c: No such file or directory
(gdb) bt
#0  0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
#1  0x00007f0a10c1e940 in do_getaddrinfo (ptr=0x7f0a10f61200) at raddrinfo.c:426
#2  0x00007f0a2c35c349 in start (p=0x7f0a10afaa88) at src/thread/pthread_create.c:207
#3  0x00007f0a2c35e95f in __clone () at src/thread/x86_64/clone.s:22
Backtrace stopped: frame did not save the PC
(gdb) info args
p = 0x0
```

There are no errors if Addrinfo resolves with data

```ruby
  Timeout.timeout(0.01) { Addrinfo.ip("ruby-lang.org") } # finishes correctly
```

The problem is that freeaddrinfo on alpine does not accept a NULL pointer (ref
https://git.musl-libc.org/cgit/musl/tree/src/network/freeaddrinfo.c)

---Files--------------------------------
segfault.txt (14.1 KB)
segfault_gdb.txt (1.56 KB)


-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-core:118504] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine
  2024-06-22 11:53 [ruby-core:118373] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine haukot (Dmitry Davydov) via ruby-core
                   ` (2 preceding siblings ...)
  2024-07-02  6:00 ` [ruby-core:118413] " mame (Yusuke Endoh) via ruby-core
@ 2024-07-08 22:58 ` k0kubun (Takashi Kokubun) via ruby-core
  2024-07-20  6:05 ` [ruby-core:118646] " nagachika (Tomoyuki Chikanaga) via ruby-core
  4 siblings, 0 replies; 6+ messages in thread
From: k0kubun (Takashi Kokubun) via ruby-core @ 2024-07-08 22:58 UTC (permalink / raw)
  To: ruby-core; +Cc: k0kubun (Takashi Kokubun)

Issue #20592 has been updated by k0kubun (Takashi Kokubun).

Backport changed from 3.1: UNKNOWN, 3.2: REQUIRED, 3.3: REQUIRED to 3.1: UNKNOWN, 3.2: REQUIRED, 3.3: DONE

ruby_3_3 commit:9d583dd43a24354e8ae58c089cf091c1243e6e60 merged revision(s) commit:fba8aff7, commit:d8c6e91748871ab2287d7703347847fe18a292d2.

----------------------------------------
Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
https://bugs.ruby-lang.org/issues/20592#change-109026

* Author: haukot (Dmitry Davydov)
* Status: Closed
* ruby -v: ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]
* Backport: 3.1: UNKNOWN, 3.2: REQUIRED, 3.3: DONE
----------------------------------------
On Alpine 3.20 got a segfault when interrupting Addrinfo request which would resolve with error.

Same on 
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux-musl]

Tried on docker image alpine3.20 and ruby:3.4.0-preview1-alpine.

```ruby
# test.rb

require 'socket'
require 'timeout'

begin
  Addrinfo.ip("1234.example.com")
rescue StandardError => e
  puts e
end

sleep 10 # wait getaddrinfo to resolve and fail
```

```
/app # ruby test.rb
execution expired
[BUG] Segmentation fault at 0x0000000000000028
ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]

-- Machine register context ------------------------------------------------
 RIP: 0x00007fefe4cd4886 RBP: 0x0000000000000001 RSP: 0x00007fefc95d3a10
 RAX: 0x0000000000000001 RBX: 0x00007fefc94212e0 RCX: 0x00007fefc95d0b70
 RDX: 0x0000000000000010 RDI: 0x0000000000000000 RSI: 0x00007fefc95d08f0
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
 R11: 0x0000000000000217 R12: 0x00007fefc9421340 R13: 0x00007fff5a0ec750
 R14: 0x00007fefe4649b10 R15: 0x00007fefc95d3b38 EFL: 0x0000000000010202

-- Other runtime information -----------------------------------------------
```


gdb logs
```
/app # gdb -q --args ruby test.rb
(gdb) run
Starting program: /usr/local/bin/ruby test.rb
warning: Error disabling address space randomization: Operation not permitted
[New LWP 36]
[New LWP 37]
[New LWP 38]
execution expired

Thread 4 "ruby" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 38]
0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
warning: 10     src/network/freeaddrinfo.c: No such file or directory
(gdb) bt
#0  0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
#1  0x00007f0a10c1e940 in do_getaddrinfo (ptr=0x7f0a10f61200) at raddrinfo.c:426
#2  0x00007f0a2c35c349 in start (p=0x7f0a10afaa88) at src/thread/pthread_create.c:207
#3  0x00007f0a2c35e95f in __clone () at src/thread/x86_64/clone.s:22
Backtrace stopped: frame did not save the PC
(gdb) info args
p = 0x0
```

There are no errors if Addrinfo resolves with data

```ruby
  Timeout.timeout(0.01) { Addrinfo.ip("ruby-lang.org") } # finishes correctly
```

The problem is that freeaddrinfo on alpine does not accept a NULL pointer (ref
https://git.musl-libc.org/cgit/musl/tree/src/network/freeaddrinfo.c)

---Files--------------------------------
segfault.txt (14.1 KB)
segfault_gdb.txt (1.56 KB)


-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 6+ messages in thread

* [ruby-core:118646] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine
  2024-06-22 11:53 [ruby-core:118373] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine haukot (Dmitry Davydov) via ruby-core
                   ` (3 preceding siblings ...)
  2024-07-08 22:58 ` [ruby-core:118504] " k0kubun (Takashi Kokubun) via ruby-core
@ 2024-07-20  6:05 ` nagachika (Tomoyuki Chikanaga) via ruby-core
  4 siblings, 0 replies; 6+ messages in thread
From: nagachika (Tomoyuki Chikanaga) via ruby-core @ 2024-07-20  6:05 UTC (permalink / raw)
  To: ruby-core; +Cc: nagachika (Tomoyuki Chikanaga)

Issue #20592 has been updated by nagachika (Tomoyuki Chikanaga).

Backport changed from 3.1: UNKNOWN, 3.2: REQUIRED, 3.3: DONE to 3.1: UNKNOWN, 3.2: DONE, 3.3: DONE

ruby_3_2 commit:3fe51aa26867159af574fac8eba7ae86a0b30971 merged revision(s) commit:fba8aff7af450e476e97b62385427dfa51850955, commit:d8c6e91748871ab2287d7703347847fe18a292d2.

----------------------------------------
Bug #20592: Interrupting Addrinfo causes Segmentation fault on alpine
https://bugs.ruby-lang.org/issues/20592#change-109174

* Author: haukot (Dmitry Davydov)
* Status: Closed
* ruby -v: ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]
* Backport: 3.1: UNKNOWN, 3.2: DONE, 3.3: DONE
----------------------------------------
On Alpine 3.20 got a segfault when interrupting Addrinfo request which would resolve with error.

Same on 
ruby 3.3.1 (2024-04-23 revision c56cd86388) [x86_64-linux-musl]

Tried on docker image alpine3.20 and ruby:3.4.0-preview1-alpine.

```ruby
# test.rb

require 'socket'
require 'timeout'

begin
  Addrinfo.ip("1234.example.com")
rescue StandardError => e
  puts e
end

sleep 10 # wait getaddrinfo to resolve and fail
```

```
/app # ruby test.rb
execution expired
[BUG] Segmentation fault at 0x0000000000000028
ruby 3.4.0preview1 (2024-05-16 master 9d69619623) [x86_64-linux-musl]

-- Machine register context ------------------------------------------------
 RIP: 0x00007fefe4cd4886 RBP: 0x0000000000000001 RSP: 0x00007fefc95d3a10
 RAX: 0x0000000000000001 RBX: 0x00007fefc94212e0 RCX: 0x00007fefc95d0b70
 RDX: 0x0000000000000010 RDI: 0x0000000000000000 RSI: 0x00007fefc95d08f0
  R8: 0x0000000000000000  R9: 0x0000000000000000 R10: 0x0000000000000000
 R11: 0x0000000000000217 R12: 0x00007fefc9421340 R13: 0x00007fff5a0ec750
 R14: 0x00007fefe4649b10 R15: 0x00007fefc95d3b38 EFL: 0x0000000000010202

-- Other runtime information -----------------------------------------------
```


gdb logs
```
/app # gdb -q --args ruby test.rb
(gdb) run
Starting program: /usr/local/bin/ruby test.rb
warning: Error disabling address space randomization: Operation not permitted
[New LWP 36]
[New LWP 37]
[New LWP 38]
execution expired

Thread 4 "ruby" received signal SIGSEGV, Segmentation fault.
[Switching to LWP 38]
0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
warning: 10     src/network/freeaddrinfo.c: No such file or directory
(gdb) bt
#0  0x00007f0a2c33b886 in freeaddrinfo (p=0x0) at src/network/freeaddrinfo.c:10
#1  0x00007f0a10c1e940 in do_getaddrinfo (ptr=0x7f0a10f61200) at raddrinfo.c:426
#2  0x00007f0a2c35c349 in start (p=0x7f0a10afaa88) at src/thread/pthread_create.c:207
#3  0x00007f0a2c35e95f in __clone () at src/thread/x86_64/clone.s:22
Backtrace stopped: frame did not save the PC
(gdb) info args
p = 0x0
```

There are no errors if Addrinfo resolves with data

```ruby
  Timeout.timeout(0.01) { Addrinfo.ip("ruby-lang.org") } # finishes correctly
```

The problem is that freeaddrinfo on alpine does not accept a NULL pointer (ref
https://git.musl-libc.org/cgit/musl/tree/src/network/freeaddrinfo.c)

---Files--------------------------------
segfault.txt (14.1 KB)
segfault_gdb.txt (1.56 KB)


-- 
https://bugs.ruby-lang.org/
 ______________________________________________
 ruby-core mailing list -- ruby-core@ml.ruby-lang.org
 To unsubscribe send an email to ruby-core-leave@ml.ruby-lang.org
 ruby-core info -- https://ml.ruby-lang.org/mailman3/lists/ruby-core.ml.ruby-lang.org/

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2024-07-20  6:06 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-22 11:53 [ruby-core:118373] [Ruby master Bug#20592] Interrupting Addrinfo causes Segmentation fault on alpine haukot (Dmitry Davydov) via ruby-core
2024-06-22 11:53 ` [ruby-core:118374] " haukot (Dmitry Davydov) via ruby-core
2024-06-22 13:06 ` [ruby-core:118375] " mame (Yusuke Endoh) via ruby-core
2024-07-02  6:00 ` [ruby-core:118413] " mame (Yusuke Endoh) via ruby-core
2024-07-08 22:58 ` [ruby-core:118504] " k0kubun (Takashi Kokubun) via ruby-core
2024-07-20  6:05 ` [ruby-core:118646] " nagachika (Tomoyuki Chikanaga) via ruby-core

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).