Bug #7828
closedinvalid glibcver in test_m17n_comb.rb:test_str_crypt fails 2.17 system
Description
On my Arch 3.7.6 32bit system with a 2.17 libc, the following line in test_m17n_comb.rb:test_str_crypt
causes the test to fail
glibcver = #{RbConfig::CONFIG["libdir"]}/libc.so.6
[/\AGNU C Library.*version ([0-9.]+)/, 1].split('.').map(&:to_i)
because libc.so.6 doesn't exist in RbConfig::CONFIG["libdir"]
. As such, invalid salt values aren't skipped and String#crypt
fails due to an invalid "__" (underscore underscore) salt value.
Details of the failure are shown below (ignore the line numbers as I instrumented the test), but the following are the libc locations for my systems of interest:
Ubuntu Server 12.10 32bit:
/lib/i386-linux-gnu/libc.so.6 (v2.15)
Arch 3.7.6 32bit:
/usr/lib/libc.so.6 (v2.17)
Ubuntu Server 12.10 64bit:
/lib/x86_64-linux-gnu/libc.so.6 (v2.15)
Failure details¶
[jon@archee build]$ uname -a
Linux archee 3.7.6-1-ARCH #1 SMP PREEMPT Mon Feb 4 10:21:12 CET 2013 i686 GNU/Linux
[jon@archee build]$ /usr/lib/libc.so.6 | head -1
GNU C Library (GNU libc) stable release version 2.17, by Roland McGrath et al.
[jon@archee build]$ ruby -rrbconfig -v -e 'puts RbConfig::CONFIG["libdir"]'
ruby 2.0.0dev (2013-02-12 trunk 39207) [i686-linux]
/usr/local/lib
[jon@archee build]$ make test-all TESTS="ruby/test_m17n_comb.rb"
CC = gcc
LD = ld
LDSHARED = gcc -shared
CFLAGS = -O3 -fno-fast-math -ggdb3 -Wall -Wextra -Wno-unused-parameter -Wno-parentheses -Wno-long-long -Wno-missing-field-initializers -Wunused-variable -Werror=pointer-arith -Werror=write-strings -Werror=declaration-after-statement -Werror=implicit-function-declaration -ansi -std=iso9899:199409 -fPIC
XCFLAGS = -include ruby/config.h -include ruby/missing.h -D_FORTIFY_SOURCE=2 -fstack-protector -fno-strict-overflow -fvisibility=hidden -DRUBY_EXPORT
CPPFLAGS = -I. -I.ext/include/i686-linux -I../include -I..
DLDFLAGS = -Wl,-soname,libruby.so.2.0 -fstack-protector
SOLIBS = -lpthread -lrt -ldl -lcrypt -lm
./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" ruby/test_m17n_comb.rb
Run options: "--ruby=./miniruby -I../lib -I. -I.ext/common ../tool/runruby.rb --extout=.ext -- --disable-gems"
Running tests:¶
[27/77] TestM17NComb#test_str_crypt
RbConfig::CONFIG['libdir'] = /usr/local/lib
glibcver = , strict_crypt =
salt_orig = ¡¡, salt_orig.length = 1
salt = ¡¡, salt.length = 2
= 0.01 s
- Error:
test_str_crypt(TestM17NComb):
Errno::EINVAL: Invalid argument - crypt
/home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:744:incrypt' /home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:744:in
block in test_str_crypt'
/home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:83:inblock in each' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:75:in
block in each_index'
/home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:46:inblock in make_large_block' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:26:in
block (2 levels) in make_basic_block'
/home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:21:intimes' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:21:in
block in make_basic_block'
/home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:20:intimes' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:20:in
make_basic_block'
/home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:45:inmake_large_block' /home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:71:in
each_index'
/home/jon/rubydev/ruby-svn/test/ruby/allpairs.rb:82:ineach' /home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:60:in
combination'
/home/jon/rubydev/ruby-svn/test/ruby/test_m17n_comb.rb:730:in `test_str_crypt'
Finished tests in 7.171895s, 10.7364 tests/s, 29005.8640 assertions/s.
77 tests, 208027 assertions, 0 failures, 1 errors, 0 skips
ruby -v: ruby 2.0.0dev (2013-02-12 trunk 39207) [i686-linux]
[jon@archee build]$ ripl
''.crypt('__')
Errno::EINVAL: Invalid argument - crypt
(ripl):2:incrypt' (ripl):2:in
'
Updated by naruse (Yui NARUSE) over 11 years ago
- Status changed from Open to Closed
- % Done changed from 0 to 100
This issue was solved with changeset r39209.
Jon, thank you for reporting this issue.
Your contribution to Ruby is greatly appreciated.
May Ruby be with you.
Get libc's path by ldd [Bug #7828] [ruby-core:52129]