ruby-core@ruby-lang.org archive (unofficial mirror)
 help / color / mirror / Atom feed
* [ruby-core:107970] [Ruby master Bug#18645] fiddle.rb assumes wrong file name for glibc shared object on Alpha
@ 2022-03-18  9:17 glaubitz (John Paul Adrian Glaubitz)
  2022-03-18 21:14 ` [ruby-core:107987] " kou (Kouhei Sutou)
  2022-03-19  3:26 ` [ruby-core:107988] " nobu (Nobuyoshi Nakada)
  0 siblings, 2 replies; 3+ messages in thread
From: glaubitz (John Paul Adrian Glaubitz) @ 2022-03-18  9:17 UTC (permalink / raw
  To: ruby-core

Issue #18645 has been reported by glaubitz (John Paul Adrian Glaubitz).

----------------------------------------
Bug #18645: fiddle.rb assumes wrong file name for glibc shared object on Alpha
https://bugs.ruby-lang.org/issues/18645

* Author: glaubitz (John Paul Adrian Glaubitz)
* Status: Open
* Priority: Normal
* ruby -v: 3.0.3
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
On Alpha, the fiddle.rb test fails because the code in helper.rb assumes that the name for the libc shared object file is "libc.so.6" which is not correct for all architectures:

```
ruby -v: ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [alpha-linux-gnu]
exec ./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems" --excludes-dir=./test/excludes --name=!/memory_leak/ -v --excludes-dir=debian/tests/excludes/any/ --excludes-dir=debian/tests/excludes/alpha/
/<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `initialize': libc.so.6: cannot open shared object file: No such file or directory (Fiddle::DLError)
	from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `new'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `dlopen'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:86:in `block in dlload'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `collect'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `dlload'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:12:in `<module:LIBC>'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:10:in `<module:Fiddle>'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:9:in `<top (required)>'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `require'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `block in non_options'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `each'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `non_options'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:65:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:143:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1237:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1242:in `run'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1249:in `run'
	from /<<PKGBUILDDIR>>/tool/test/runner.rb:23:in `<top (required)>'
	from ./test/runner.rb:11:in `require_relative'
	from ./test/runner.rb:11:in `<main>'
```

Full log: https://buildd.debian.org/status/fetch.php?pkg=ruby3.0&arch=alpha&ver=3.0.3-1&stamp=1647549307&raw=0

The code in question is located in test/fiddle/helper.rb:

```
  # Handle musl libc
  libc_so, = Dir.glob(File.join(libdir, "libc.musl*.so*"))
  if libc_so
    libm_so = libc_so
  else
    # glibc
    libc_so = "libc.so.6"
    libm_so = "libm.so.6"
  end
```

On a machine running Linux on Alpha, the filename for the shared library is libc.so.6.1, the same applies for Itanium:

```
root@alpha-test-01:~# uname -a
Linux alpha-test-01 5.14.0-3-alpha-generic #1 Debian 5.14.12-1 (2021-10-14) alpha GNU/Linux
root@alpha-test-01:~# ls -l /lib/alpha-linux-gnu/libc.so*
-rw-r--r-- 1 root root 273 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so
lrwxrwxrwx 1 root root  12 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so.6.1 -> libc-2.33.so
root@alpha-test-01:~#
```

```
root@yttrium:~# uname -a
Linux yttrium 5.15.0-2-mckinley #1 SMP Debian 5.15.5-1 (2021-11-26) ia64 GNU/Linux
root@yttrium:~# ls -l /lib/ia64-linux-gnu/libc.so*
lrwxrwxrwx 1 root root 12 Jan 26 22:01 /lib/ia64-linux-gnu/libc.so.6.1 -> libc-2.33.so
root@yttrium:~#
```

The code in helper.rb should be modified to set the name for libc_so on Alpha and IA64 to "libc.so.6.1".



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

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

* [ruby-core:107987] [Ruby master Bug#18645] fiddle.rb assumes wrong file name for glibc shared object on Alpha
  2022-03-18  9:17 [ruby-core:107970] [Ruby master Bug#18645] fiddle.rb assumes wrong file name for glibc shared object on Alpha glaubitz (John Paul Adrian Glaubitz)
@ 2022-03-18 21:14 ` kou (Kouhei Sutou)
  2022-03-19  3:26 ` [ruby-core:107988] " nobu (Nobuyoshi Nakada)
  1 sibling, 0 replies; 3+ messages in thread
From: kou (Kouhei Sutou) @ 2022-03-18 21:14 UTC (permalink / raw
  To: ruby-core

Issue #18645 has been updated by kou (Kouhei Sutou).

Assignee set to kou (Kouhei Sutou)
Status changed from Open to Third Party's Issue

Could you report this to https://github.com/ruby/fiddle/ because ruby/fiddle is the upstream?

----------------------------------------
Bug #18645: fiddle.rb assumes wrong file name for glibc shared object on Alpha
https://bugs.ruby-lang.org/issues/18645#change-96939

* Author: glaubitz (John Paul Adrian Glaubitz)
* Status: Third Party's Issue
* Priority: Normal
* Assignee: kou (Kouhei Sutou)
* ruby -v: 3.0.3
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
On Alpha, the fiddle.rb test fails because the code in helper.rb assumes that the name for the libc shared object file is "libc.so.6" which is not correct for all architectures:

```
ruby -v: ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [alpha-linux-gnu]
exec ./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems" --excludes-dir=./test/excludes --name=!/memory_leak/ -v --excludes-dir=debian/tests/excludes/any/ --excludes-dir=debian/tests/excludes/alpha/
/<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `initialize': libc.so.6: cannot open shared object file: No such file or directory (Fiddle::DLError)
	from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `new'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `dlopen'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:86:in `block in dlload'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `collect'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `dlload'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:12:in `<module:LIBC>'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:10:in `<module:Fiddle>'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:9:in `<top (required)>'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `require'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `block in non_options'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `each'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `non_options'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:65:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:143:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1237:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1242:in `run'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1249:in `run'
	from /<<PKGBUILDDIR>>/tool/test/runner.rb:23:in `<top (required)>'
	from ./test/runner.rb:11:in `require_relative'
	from ./test/runner.rb:11:in `<main>'
```

Full log: https://buildd.debian.org/status/fetch.php?pkg=ruby3.0&arch=alpha&ver=3.0.3-1&stamp=1647549307&raw=0

The code in question is located in test/fiddle/helper.rb:

```
  # Handle musl libc
  libc_so, = Dir.glob(File.join(libdir, "libc.musl*.so*"))
  if libc_so
    libm_so = libc_so
  else
    # glibc
    libc_so = "libc.so.6"
    libm_so = "libm.so.6"
  end
```

On a machine running Linux on Alpha, the filename for the shared library is libc.so.6.1, the same applies for Itanium:

```
root@alpha-test-01:~# uname -a
Linux alpha-test-01 5.14.0-3-alpha-generic #1 Debian 5.14.12-1 (2021-10-14) alpha GNU/Linux
root@alpha-test-01:~# ls -l /lib/alpha-linux-gnu/libc.so*
-rw-r--r-- 1 root root 273 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so
lrwxrwxrwx 1 root root  12 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so.6.1 -> libc-2.33.so
root@alpha-test-01:~#
```

```
root@yttrium:~# uname -a
Linux yttrium 5.15.0-2-mckinley #1 SMP Debian 5.15.5-1 (2021-11-26) ia64 GNU/Linux
root@yttrium:~# ls -l /lib/ia64-linux-gnu/libc.so*
lrwxrwxrwx 1 root root 12 Jan 26 22:01 /lib/ia64-linux-gnu/libc.so.6.1 -> libc-2.33.so
root@yttrium:~#
```

The code in helper.rb should be modified to set the name for libc_so on Alpha and IA64 to "libc.so.6.1".



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

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

* [ruby-core:107988] [Ruby master Bug#18645] fiddle.rb assumes wrong file name for glibc shared object on Alpha
  2022-03-18  9:17 [ruby-core:107970] [Ruby master Bug#18645] fiddle.rb assumes wrong file name for glibc shared object on Alpha glaubitz (John Paul Adrian Glaubitz)
  2022-03-18 21:14 ` [ruby-core:107987] " kou (Kouhei Sutou)
@ 2022-03-19  3:26 ` nobu (Nobuyoshi Nakada)
  1 sibling, 0 replies; 3+ messages in thread
From: nobu (Nobuyoshi Nakada) @ 2022-03-19  3:26 UTC (permalink / raw
  To: ruby-core

Issue #18645 has been updated by nobu (Nobuyoshi Nakada).


I think the current hard code is a bad habit, and `ldd` should be primary.

----------------------------------------
Bug #18645: fiddle.rb assumes wrong file name for glibc shared object on Alpha
https://bugs.ruby-lang.org/issues/18645#change-96941

* Author: glaubitz (John Paul Adrian Glaubitz)
* Status: Third Party's Issue
* Priority: Normal
* Assignee: kou (Kouhei Sutou)
* ruby -v: 3.0.3
* Backport: 2.6: UNKNOWN, 2.7: UNKNOWN, 3.0: UNKNOWN, 3.1: UNKNOWN
----------------------------------------
On Alpha, the fiddle.rb test fails because the code in helper.rb assumes that the name for the libc shared object file is "libc.so.6" which is not correct for all architectures:

```
ruby -v: ruby 3.0.3p157 (2021-11-24 revision 3fb7d2cadc) [alpha-linux-gnu]
exec ./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems "./test/runner.rb" --ruby="./miniruby -I./lib -I. -I.ext/common  ./tool/runruby.rb --extout=.ext  -- --disable-gems" --excludes-dir=./test/excludes --name=!/memory_leak/ -v --excludes-dir=debian/tests/excludes/any/ --excludes-dir=debian/tests/excludes/alpha/
/<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `initialize': libc.so.6: cannot open shared object file: No such file or directory (Fiddle::DLError)
	from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `new'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle.rb:61:in `dlopen'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:86:in `block in dlload'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `collect'
	from /<<PKGBUILDDIR>>/.ext/common/fiddle/import.rb:77:in `dlload'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:12:in `<module:LIBC>'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:10:in `<module:Fiddle>'
	from /<<PKGBUILDDIR>>/test/fiddle/test_import.rb:9:in `<top (required)>'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `require'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1049:in `block in non_options'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `each'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1043:in `non_options'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:65:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:143:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1237:in `process_args'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1242:in `run'
	from /<<PKGBUILDDIR>>/tool/lib/test/unit.rb:1249:in `run'
	from /<<PKGBUILDDIR>>/tool/test/runner.rb:23:in `<top (required)>'
	from ./test/runner.rb:11:in `require_relative'
	from ./test/runner.rb:11:in `<main>'
```

Full log: https://buildd.debian.org/status/fetch.php?pkg=ruby3.0&arch=alpha&ver=3.0.3-1&stamp=1647549307&raw=0

The code in question is located in test/fiddle/helper.rb:

```
  # Handle musl libc
  libc_so, = Dir.glob(File.join(libdir, "libc.musl*.so*"))
  if libc_so
    libm_so = libc_so
  else
    # glibc
    libc_so = "libc.so.6"
    libm_so = "libm.so.6"
  end
```

On a machine running Linux on Alpha, the filename for the shared library is libc.so.6.1, the same applies for Itanium:

```
root@alpha-test-01:~# uname -a
Linux alpha-test-01 5.14.0-3-alpha-generic #1 Debian 5.14.12-1 (2021-10-14) alpha GNU/Linux
root@alpha-test-01:~# ls -l /lib/alpha-linux-gnu/libc.so*
-rw-r--r-- 1 root root 273 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so
lrwxrwxrwx 1 root root  12 Feb 21 09:47 /lib/alpha-linux-gnu/libc.so.6.1 -> libc-2.33.so
root@alpha-test-01:~#
```

```
root@yttrium:~# uname -a
Linux yttrium 5.15.0-2-mckinley #1 SMP Debian 5.15.5-1 (2021-11-26) ia64 GNU/Linux
root@yttrium:~# ls -l /lib/ia64-linux-gnu/libc.so*
lrwxrwxrwx 1 root root 12 Jan 26 22:01 /lib/ia64-linux-gnu/libc.so.6.1 -> libc-2.33.so
root@yttrium:~#
```

The code in helper.rb should be modified to set the name for libc_so on Alpha and IA64 to "libc.so.6.1".



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

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

end of thread, other threads:[~2022-03-19  3:26 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2022-03-18  9:17 [ruby-core:107970] [Ruby master Bug#18645] fiddle.rb assumes wrong file name for glibc shared object on Alpha glaubitz (John Paul Adrian Glaubitz)
2022-03-18 21:14 ` [ruby-core:107987] " kou (Kouhei Sutou)
2022-03-19  3:26 ` [ruby-core:107988] " nobu (Nobuyoshi Nakada)

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 read-only IMAP folder(s) and NNTP newsgroup(s).