[Ruby 1.9 - Bug #5363][Open] OpenSSL::ASN1.decode all の引数に PEM 形式の証明書を指定すると Segmentation fault が発生する

Issue #5363 has been reported by Hiroshi Y…


Bug #5363: OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation
fault が発生する
http://redmine.ruby-lang.org/issues/5363

Author: Hiroshi Y.
Status: Open
Priority: Normal
Assignee:
Category:
Target version:
ruby -v: ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

Ruby 1.9.3 rc1 で OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると
Segmentation fault が発生します。

== 環境

Ubuntu 11.04 64-bit
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

== 再現コード

-- coding: utf-8 --

require ‘openssl’

puts RUBY_DESCRIPTION
puts OpenSSL::OPENSSL_VERSION

pem =<<-EOF
-----BEGIN CERTIFICATE-----
MIICIDCCAYmgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJKUDEO
MAwGA1UECAwFVG9reW8xDTALBgNVBAcMBENodW8xCjAIBgNVBAoMAU8xCzAJBgNV
BAMMAkNBMB4XDTEwMDkyMDE1MDAwMFoXDTExMDgyMDE1MDAwMFowRTELMAkGA1UE
BhMCSlAxDjAMBgNVBAgMBVRva3lvMQ0wCwYDVQQHDARDaHVvMQowCAYDVQQKDAFP
MQswCQYDVQQDDAJDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvhBlVyo6
NnJCqnUcz3RgDeBSJ2SdW6WHK/b4tsplMwLjAEtEieSHeFtODVcyjDDzyXVBfA4+
LaIFBtLB34NHCT4Hza7YeLbURTewLQYgcRc6u/GhrhAQRS+dBVrxFsj0VsH2C4cC
qM2XSEclBrZGBBpmmqFm6eu8324YCqpAWLMCAwEAH6MgMB4wDwYDVR0TAQH/BAUw
AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEFBQADgYEACkYGYtUozBEO2J00
o2yFFRgs47BZboHRcuyOOJp5Ku99u5tkFDdIiqb327QLmU4NHUTWPT3o63hf/J7S
2iyfG6NVTLgT3U9DTC2yI24uspEd4sz+Vmz60LDil2QABm6tRc68BJemSX1nNr7V
jifehALJCTPKL52Y/4d1YbrZBwA=
-----END CERTIFICATE-----
EOF

OpenSSL::ASN1.decode_all(pem)

== 実行時の結果

example.rb は上記の再現コード

$ /opt/local/ruby/1.9.3/rc1/bin/ruby example.rb
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]
OpenSSL 1.0.0e 6 Sep 2011
example.rb:24: [BUG] Segmentation fault
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

– Control frame information

c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :decode_all
c:0003 p:0075 s:0007 b:0007 l:0014f8 d:0017e0 EVAL example.rb:24
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014f8 d:0014f8 TOP

– Ruby level backtrace information

example.rb:24:in <main>' example.rb:24:indecode_all’

– C level backtrace information

/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x52a5e7] vm_dump.c:796
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x577988] error.c:258
/opt/local/ruby/1.9.3/rc1/bin/ruby(rb_bug+0xb1) [0x578df1] error.c:277
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x4ba328] signal.c:609
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfc60) [0x7fc8c1c56c60]
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c63d)
[0x7fc8c060563d] ossl_asn1.c:882
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c2ba)
[0x7fc8c06052ba] ossl_asn1.c:866

– Other runtime information

  • Loaded script: example.rb

  • Loaded features:

0 enumerator.so
1 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
2
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
3 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/defaults.rb
4 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/rbconfig.rb
5 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/deprecate.rb
6 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/exceptions.rb
7 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/custom_require.rb
8 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems.rb
9 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
10 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/digest.rb
11
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
12 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/bn.rb
13 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/cipher.rb
14 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
15 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/config.rb
16 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/digest.rb
17
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/buffering.rb
18 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
19
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/ssl-internal.rb
20
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/x509-internal.rb
21 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl.rb

  • Process memory map:

00400000-0062b000 r-xp 00000000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082b000-0082c000 r–p 0022b000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082c000-0082e000 rw-p 0022c000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082e000-0084b000 rw-p 00000000 00:00 0
011aa000-01534000 rw-p 00000000 00:00 0
[heap]
7fc8bf7b3000-7fc8bf7c8000 r-xp 00000000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf7c8000-7fc8bf9c7000 —p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c7000-7fc8bf9c8000 r–p 00014000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c8000-7fc8bf9c9000 rw-p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c9000-7fc8bf9ca000 r-xp 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bf9ca000-7fc8bfbc9000 —p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbc9000-7fc8bfbca000 r–p 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbca000-7fc8bfbcb000 rw-p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbcb000-7fc8bfbd2000 r-xp 00000000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfbd2000-7fc8bfdd1000 —p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd1000-7fc8bfdd2000 r–p 00006000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd2000-7fc8bfdd3000 rw-p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd3000-7fc8bfdd6000 r-xp 00000000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bfdd6000-7fc8bffd6000 —p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd6000-7fc8bffd7000 r–p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd7000-7fc8bffd8000 rw-p 00004000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd8000-7fc8c0166000 r-xp 00000000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0166000-7fc8c0366000 —p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0366000-7fc8c037f000 r–p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c037f000-7fc8c0389000 rw-p 001a7000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0389000-7fc8c038d000 rw-p 00000000 00:00 0
7fc8c038d000-7fc8c03e1000 r-xp 00000000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c03e1000-7fc8c05e1000 —p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e1000-7fc8c05e4000 r–p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e4000-7fc8c05e9000 rw-p 00057000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e9000-7fc8c0635000 r-xp 00000000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0635000-7fc8c0835000 —p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0835000-7fc8c0836000 r–p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0836000-7fc8c0838000 rw-p 0004d000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0838000-7fc8c0839000 rw-p 00000000 00:00 0
7fc8c0839000-7fc8c083b000 r-xp 00000000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c083b000-7fc8c0a3b000 —p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3b000-7fc8c0a3c000 r–p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3c000-7fc8c0a3d000 rw-p 00003000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3d000-7fc8c0a3f000 r-xp 00000000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0a3f000-7fc8c0c3e000 —p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3e000-7fc8c0c3f000 r–p 00001000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3f000-7fc8c0c40000 rw-p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c40000-7fc8c0c41000 —p 00000000 00:00 0
7fc8c0c41000-7fc8c0d45000 rw-p 00000000 00:00 0
7fc8c0d45000-7fc8c0fe9000 r–p 00000000 fb:00 5248223
/usr/lib/locale/locale-archive
7fc8c0fe9000-7fc8c1173000 r-xp 00000000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1173000-7fc8c1372000 —p 0018a000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1372000-7fc8c1376000 r–p 00189000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1376000-7fc8c1377000 rw-p 0018d000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1377000-7fc8c137d000 rw-p 00000000 00:00 0
7fc8c137d000-7fc8c1401000 r-xp 00000000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1401000-7fc8c1600000 —p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1600000-7fc8c1601000 r–p 00083000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1601000-7fc8c1602000 rw-p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1602000-7fc8c160b000 r-xp 00000000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c160b000-7fc8c180b000 —p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180b000-7fc8c180c000 r–p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180c000-7fc8c180d000 rw-p 0000a000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180d000-7fc8c183b000 rw-p 00000000 00:00 0
7fc8c183b000-7fc8c183d000 r-xp 00000000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c183d000-7fc8c1a3d000 —p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3d000-7fc8c1a3e000 r–p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3e000-7fc8c1a3f000 rw-p 00003000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3f000-7fc8c1a46000 r-xp 00000000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1a46000-7fc8c1c45000 —p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c45000-7fc8c1c46000 r–p 00006000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c46000-7fc8c1c47000 rw-p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c47000-7fc8c1c5f000 r-xp 00000000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1c5f000-7fc8c1e5f000 —p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e5f000-7fc8c1e60000 r–p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e60000-7fc8c1e61000 rw-p 00019000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e61000-7fc8c1e65000 rw-p 00000000 00:00 0
7fc8c1e65000-7fc8c1e86000 r-xp 00000000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2075000-7fc8c207a000 rw-p 00000000 00:00 0
7fc8c2082000-7fc8c2085000 rw-p 00000000 00:00 0
7fc8c2085000-7fc8c2086000 r–p 00020000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2086000-7fc8c2088000 rw-p 00021000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fff4233d000-7fff4235e000 rw-p 00000000 00:00 0
[stack]
7fff4236e000-7fff4236f000 r-xp 00000000 00:00 0
[vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension
libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted

Issue #5363 has been updated by Tomoyuki C…

Category set to ext
Target version set to 1.9.3

ruby 1.9.4dev (2011-09-23 trunk 33318) [x86_64-darwin10.8.0] および
ruby 1.9.3dev (2011-09-24 revision 33322) [x86_64-darwin10.8.0]
でも再現しました。

また 1.9.2 の HEAD で試したところ

ruby 1.9.2p312 (2011-08-11 revision 32926) [x86_64-darwin10.8.0]
OpenSSL 0.9.8n 24 Mar 2010
example.rb:24:in decode_all': too long (OpenSSL::ASN1::ASN1Error) from example.rb:24:in

となり SEGV にはなりませんでした。つまり 1.9.3 からの不具合です。

また https://gist.github.com/1239801 のパッチを適用してみると(すみません勝手に引用して)

ruby 1.9.3dev (2011-09-24 revision 33322) [x86_64-darwin10.8.0]
OpenSSL 0.9.8n 24 Mar 2010
example.rb:24:in decode_all': Type mismatch. Bytes read: 73 Bytes available: 47 (OpenSSL::ASN1::ASN1Error) from example.rb:24:in

と SEGV は起きなくなるのを確認しました。


Bug #5363: OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation
fault が発生する
http://redmine.ruby-lang.org/issues/5363

Author: Hiroshi Y.
Status: Open
Priority: Normal
Assignee:
Category: ext
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

Ruby 1.9.3 rc1 で OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると
Segmentation fault が発生します。

== 環境

Ubuntu 11.04 64-bit
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

== 再現コード

-- coding: utf-8 --

require ‘openssl’

puts RUBY_DESCRIPTION
puts OpenSSL::OPENSSL_VERSION

pem =<<-EOF
-----BEGIN CERTIFICATE-----
MIICIDCCAYmgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJKUDEO
MAwGA1UECAwFVG9reW8xDTALBgNVBAcMBENodW8xCjAIBgNVBAoMAU8xCzAJBgNV
BAMMAkNBMB4XDTEwMDkyMDE1MDAwMFoXDTExMDgyMDE1MDAwMFowRTELMAkGA1UE
BhMCSlAxDjAMBgNVBAgMBVRva3lvMQ0wCwYDVQQHDARDaHVvMQowCAYDVQQKDAFP
MQswCQYDVQQDDAJDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvhBlVyo6
NnJCqnUcz3RgDeBSJ2SdW6WHK/b4tsplMwLjAEtEieSHeFtODVcyjDDzyXVBfA4+
LaIFBtLB34NHCT4Hza7YeLbURTewLQYgcRc6u/GhrhAQRS+dBVrxFsj0VsH2C4cC
qM2XSEclBrZGBBpmmqFm6eu8324YCqpAWLMCAwEAH6MgMB4wDwYDVR0TAQH/BAUw
AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEFBQADgYEACkYGYtUozBEO2J00
o2yFFRgs47BZboHRcuyOOJp5Ku99u5tkFDdIiqb327QLmU4NHUTWPT3o63hf/J7S
2iyfG6NVTLgT3U9DTC2yI24uspEd4sz+Vmz60LDil2QABm6tRc68BJemSX1nNr7V
jifehALJCTPKL52Y/4d1YbrZBwA=
-----END CERTIFICATE-----
EOF

OpenSSL::ASN1.decode_all(pem)

== 実行時の結果

example.rb は上記の再現コード

$ /opt/local/ruby/1.9.3/rc1/bin/ruby example.rb
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]
OpenSSL 1.0.0e 6 Sep 2011
example.rb:24: [BUG] Segmentation fault
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

– Control frame information

c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :decode_all
c:0003 p:0075 s:0007 b:0007 l:0014f8 d:0017e0 EVAL example.rb:24
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014f8 d:0014f8 TOP

– Ruby level backtrace information

example.rb:24:in <main>' example.rb:24:indecode_all’

– C level backtrace information

/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x52a5e7] vm_dump.c:796
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x577988] error.c:258
/opt/local/ruby/1.9.3/rc1/bin/ruby(rb_bug+0xb1) [0x578df1] error.c:277
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x4ba328] signal.c:609
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfc60) [0x7fc8c1c56c60]
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c63d)
[0x7fc8c060563d] ossl_asn1.c:882
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c2ba)
[0x7fc8c06052ba] ossl_asn1.c:866

– Other runtime information

  • Loaded script: example.rb

  • Loaded features:

0 enumerator.so
1 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
2
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
3 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/defaults.rb
4 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/rbconfig.rb
5 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/deprecate.rb
6 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/exceptions.rb
7 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/custom_require.rb
8 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems.rb
9 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
10 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/digest.rb
11
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
12 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/bn.rb
13 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/cipher.rb
14 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
15 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/config.rb
16 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/digest.rb
17
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/buffering.rb
18 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
19
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/ssl-internal.rb
20
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/x509-internal.rb
21 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl.rb

  • Process memory map:

00400000-0062b000 r-xp 00000000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082b000-0082c000 r–p 0022b000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082c000-0082e000 rw-p 0022c000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082e000-0084b000 rw-p 00000000 00:00 0
011aa000-01534000 rw-p 00000000 00:00 0
[heap]
7fc8bf7b3000-7fc8bf7c8000 r-xp 00000000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf7c8000-7fc8bf9c7000 —p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c7000-7fc8bf9c8000 r–p 00014000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c8000-7fc8bf9c9000 rw-p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c9000-7fc8bf9ca000 r-xp 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bf9ca000-7fc8bfbc9000 —p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbc9000-7fc8bfbca000 r–p 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbca000-7fc8bfbcb000 rw-p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbcb000-7fc8bfbd2000 r-xp 00000000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfbd2000-7fc8bfdd1000 —p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd1000-7fc8bfdd2000 r–p 00006000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd2000-7fc8bfdd3000 rw-p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd3000-7fc8bfdd6000 r-xp 00000000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bfdd6000-7fc8bffd6000 —p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd6000-7fc8bffd7000 r–p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd7000-7fc8bffd8000 rw-p 00004000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd8000-7fc8c0166000 r-xp 00000000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0166000-7fc8c0366000 —p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0366000-7fc8c037f000 r–p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c037f000-7fc8c0389000 rw-p 001a7000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0389000-7fc8c038d000 rw-p 00000000 00:00 0
7fc8c038d000-7fc8c03e1000 r-xp 00000000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c03e1000-7fc8c05e1000 —p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e1000-7fc8c05e4000 r–p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e4000-7fc8c05e9000 rw-p 00057000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e9000-7fc8c0635000 r-xp 00000000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0635000-7fc8c0835000 —p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0835000-7fc8c0836000 r–p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0836000-7fc8c0838000 rw-p 0004d000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0838000-7fc8c0839000 rw-p 00000000 00:00 0
7fc8c0839000-7fc8c083b000 r-xp 00000000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c083b000-7fc8c0a3b000 —p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3b000-7fc8c0a3c000 r–p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3c000-7fc8c0a3d000 rw-p 00003000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3d000-7fc8c0a3f000 r-xp 00000000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0a3f000-7fc8c0c3e000 —p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3e000-7fc8c0c3f000 r–p 00001000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3f000-7fc8c0c40000 rw-p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c40000-7fc8c0c41000 —p 00000000 00:00 0
7fc8c0c41000-7fc8c0d45000 rw-p 00000000 00:00 0
7fc8c0d45000-7fc8c0fe9000 r–p 00000000 fb:00 5248223
/usr/lib/locale/locale-archive
7fc8c0fe9000-7fc8c1173000 r-xp 00000000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1173000-7fc8c1372000 —p 0018a000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1372000-7fc8c1376000 r–p 00189000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1376000-7fc8c1377000 rw-p 0018d000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1377000-7fc8c137d000 rw-p 00000000 00:00 0
7fc8c137d000-7fc8c1401000 r-xp 00000000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1401000-7fc8c1600000 —p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1600000-7fc8c1601000 r–p 00083000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1601000-7fc8c1602000 rw-p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1602000-7fc8c160b000 r-xp 00000000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c160b000-7fc8c180b000 —p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180b000-7fc8c180c000 r–p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180c000-7fc8c180d000 rw-p 0000a000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180d000-7fc8c183b000 rw-p 00000000 00:00 0
7fc8c183b000-7fc8c183d000 r-xp 00000000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c183d000-7fc8c1a3d000 —p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3d000-7fc8c1a3e000 r–p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3e000-7fc8c1a3f000 rw-p 00003000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3f000-7fc8c1a46000 r-xp 00000000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1a46000-7fc8c1c45000 —p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c45000-7fc8c1c46000 r–p 00006000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c46000-7fc8c1c47000 rw-p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c47000-7fc8c1c5f000 r-xp 00000000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1c5f000-7fc8c1e5f000 —p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e5f000-7fc8c1e60000 r–p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e60000-7fc8c1e61000 rw-p 00019000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e61000-7fc8c1e65000 rw-p 00000000 00:00 0
7fc8c1e65000-7fc8c1e86000 r-xp 00000000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2075000-7fc8c207a000 rw-p 00000000 00:00 0
7fc8c2082000-7fc8c2085000 rw-p 00000000 00:00 0
7fc8c2085000-7fc8c2086000 r–p 00020000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2086000-7fc8c2088000 rw-p 00021000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fff4233d000-7fff4235e000 rw-p 00000000 00:00 0
[stack]
7fff4236e000-7fff4236f000 r-xp 00000000 00:00 0
[vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension
libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted

Issue #5363 has been updated by Martin Bosslet.

Status changed from Closed to Feedback

Yui NARUSE wrote:

Chikanaga says this is a regression from 1.9.3 and
https://gist.github.com/1239801 fixes this.

Yes, thanks Tomoyuki for investigating this and pointing me
in the right direction. Unfortunately this fix would have
broken another test in test_asn1.rb.
I looked at the code and tried to untangle the problem-causing
part, first to fix the problem, but also to make it a bit
better to read and maintain.

I committed this on trunk and it fixes the problem that Hiroshi
Yoshida reported for me, and I also added a test case (using
one of our self-signed certificates, of course) for this.

Could you please verify that this fix works?

If it does then it could be backported to 1.9.3. I would have
done so already, but I’m awaiting your permission first (with the
code freeze in effect).

Regards,
Martin


Bug #5363: OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation
fault が発生する
http://redmine.ruby-lang.org/issues/5363

Author: Hiroshi Y.
Status: Feedback
Priority: Normal
Assignee: Martin Bosslet
Category: ext
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

Ruby 1.9.3 rc1 で OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると
Segmentation fault が発生します。

== 環境

Ubuntu 11.04 64-bit
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

== 再現コード

-- coding: utf-8 --

require ‘openssl’

puts RUBY_DESCRIPTION
puts OpenSSL::OPENSSL_VERSION

pem =<<-EOF
-----BEGIN CERTIFICATE-----
MIICIDCCAYmgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJKUDEO
MAwGA1UECAwFVG9reW8xDTALBgNVBAcMBENodW8xCjAIBgNVBAoMAU8xCzAJBgNV
BAMMAkNBMB4XDTEwMDkyMDE1MDAwMFoXDTExMDgyMDE1MDAwMFowRTELMAkGA1UE
BhMCSlAxDjAMBgNVBAgMBVRva3lvMQ0wCwYDVQQHDARDaHVvMQowCAYDVQQKDAFP
MQswCQYDVQQDDAJDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvhBlVyo6
NnJCqnUcz3RgDeBSJ2SdW6WHK/b4tsplMwLjAEtEieSHeFtODVcyjDDzyXVBfA4+
LaIFBtLB34NHCT4Hza7YeLbURTewLQYgcRc6u/GhrhAQRS+dBVrxFsj0VsH2C4cC
qM2XSEclBrZGBBpmmqFm6eu8324YCqpAWLMCAwEAH6MgMB4wDwYDVR0TAQH/BAUw
AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEFBQADgYEACkYGYtUozBEO2J00
o2yFFRgs47BZboHRcuyOOJp5Ku99u5tkFDdIiqb327QLmU4NHUTWPT3o63hf/J7S
2iyfG6NVTLgT3U9DTC2yI24uspEd4sz+Vmz60LDil2QABm6tRc68BJemSX1nNr7V
jifehALJCTPKL52Y/4d1YbrZBwA=
-----END CERTIFICATE-----
EOF

OpenSSL::ASN1.decode_all(pem)

== 実行時の結果

example.rb は上記の再現コード

$ /opt/local/ruby/1.9.3/rc1/bin/ruby example.rb
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]
OpenSSL 1.0.0e 6 Sep 2011
example.rb:24: [BUG] Segmentation fault
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

– Control frame information

c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :decode_all
c:0003 p:0075 s:0007 b:0007 l:0014f8 d:0017e0 EVAL example.rb:24
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014f8 d:0014f8 TOP

– Ruby level backtrace information

example.rb:24:in <main>' example.rb:24:indecode_all’

– C level backtrace information

/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x52a5e7] vm_dump.c:796
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x577988] error.c:258
/opt/local/ruby/1.9.3/rc1/bin/ruby(rb_bug+0xb1) [0x578df1] error.c:277
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x4ba328] signal.c:609
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfc60) [0x7fc8c1c56c60]
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c63d)
[0x7fc8c060563d] ossl_asn1.c:882
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c2ba)
[0x7fc8c06052ba] ossl_asn1.c:866

– Other runtime information

  • Loaded script: example.rb

  • Loaded features:

0 enumerator.so
1 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
2
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
3 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/defaults.rb
4 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/rbconfig.rb
5 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/deprecate.rb
6 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/exceptions.rb
7 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/custom_require.rb
8 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems.rb
9 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
10 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/digest.rb
11
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
12 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/bn.rb
13 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/cipher.rb
14 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
15 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/config.rb
16 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/digest.rb
17
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/buffering.rb
18 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
19
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/ssl-internal.rb
20
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/x509-internal.rb
21 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl.rb

  • Process memory map:

00400000-0062b000 r-xp 00000000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082b000-0082c000 r–p 0022b000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082c000-0082e000 rw-p 0022c000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082e000-0084b000 rw-p 00000000 00:00 0
011aa000-01534000 rw-p 00000000 00:00 0
[heap]
7fc8bf7b3000-7fc8bf7c8000 r-xp 00000000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf7c8000-7fc8bf9c7000 —p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c7000-7fc8bf9c8000 r–p 00014000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c8000-7fc8bf9c9000 rw-p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c9000-7fc8bf9ca000 r-xp 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bf9ca000-7fc8bfbc9000 —p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbc9000-7fc8bfbca000 r–p 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbca000-7fc8bfbcb000 rw-p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbcb000-7fc8bfbd2000 r-xp 00000000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfbd2000-7fc8bfdd1000 —p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd1000-7fc8bfdd2000 r–p 00006000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd2000-7fc8bfdd3000 rw-p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd3000-7fc8bfdd6000 r-xp 00000000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bfdd6000-7fc8bffd6000 —p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd6000-7fc8bffd7000 r–p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd7000-7fc8bffd8000 rw-p 00004000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd8000-7fc8c0166000 r-xp 00000000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0166000-7fc8c0366000 —p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0366000-7fc8c037f000 r–p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c037f000-7fc8c0389000 rw-p 001a7000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0389000-7fc8c038d000 rw-p 00000000 00:00 0
7fc8c038d000-7fc8c03e1000 r-xp 00000000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c03e1000-7fc8c05e1000 —p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e1000-7fc8c05e4000 r–p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e4000-7fc8c05e9000 rw-p 00057000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e9000-7fc8c0635000 r-xp 00000000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0635000-7fc8c0835000 —p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0835000-7fc8c0836000 r–p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0836000-7fc8c0838000 rw-p 0004d000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0838000-7fc8c0839000 rw-p 00000000 00:00 0
7fc8c0839000-7fc8c083b000 r-xp 00000000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c083b000-7fc8c0a3b000 —p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3b000-7fc8c0a3c000 r–p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3c000-7fc8c0a3d000 rw-p 00003000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3d000-7fc8c0a3f000 r-xp 00000000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0a3f000-7fc8c0c3e000 —p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3e000-7fc8c0c3f000 r–p 00001000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3f000-7fc8c0c40000 rw-p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c40000-7fc8c0c41000 —p 00000000 00:00 0
7fc8c0c41000-7fc8c0d45000 rw-p 00000000 00:00 0
7fc8c0d45000-7fc8c0fe9000 r–p 00000000 fb:00 5248223
/usr/lib/locale/locale-archive
7fc8c0fe9000-7fc8c1173000 r-xp 00000000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1173000-7fc8c1372000 —p 0018a000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1372000-7fc8c1376000 r–p 00189000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1376000-7fc8c1377000 rw-p 0018d000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1377000-7fc8c137d000 rw-p 00000000 00:00 0
7fc8c137d000-7fc8c1401000 r-xp 00000000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1401000-7fc8c1600000 —p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1600000-7fc8c1601000 r–p 00083000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1601000-7fc8c1602000 rw-p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1602000-7fc8c160b000 r-xp 00000000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c160b000-7fc8c180b000 —p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180b000-7fc8c180c000 r–p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180c000-7fc8c180d000 rw-p 0000a000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180d000-7fc8c183b000 rw-p 00000000 00:00 0
7fc8c183b000-7fc8c183d000 r-xp 00000000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c183d000-7fc8c1a3d000 —p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3d000-7fc8c1a3e000 r–p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3e000-7fc8c1a3f000 rw-p 00003000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3f000-7fc8c1a46000 r-xp 00000000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1a46000-7fc8c1c45000 —p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c45000-7fc8c1c46000 r–p 00006000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c46000-7fc8c1c47000 rw-p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c47000-7fc8c1c5f000 r-xp 00000000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1c5f000-7fc8c1e5f000 —p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e5f000-7fc8c1e60000 r–p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e60000-7fc8c1e61000 rw-p 00019000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e61000-7fc8c1e65000 rw-p 00000000 00:00 0
7fc8c1e65000-7fc8c1e86000 r-xp 00000000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2075000-7fc8c207a000 rw-p 00000000 00:00 0
7fc8c2082000-7fc8c2085000 rw-p 00000000 00:00 0
7fc8c2085000-7fc8c2086000 r–p 00020000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2086000-7fc8c2088000 rw-p 00021000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fff4233d000-7fff4235e000 rw-p 00000000 00:00 0
[stack]
7fff4236e000-7fff4236f000 r-xp 00000000 00:00 0
[vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension
libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted

Issue #5363 has been updated by Yui NARUSE.

Status changed from Open to Assigned
Assignee set to Martin Bosslet

Chikanaga says this is a regression from 1.9.3 and
https://gist.github.com/1239801 fixes this.

Bug #5363: OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation
fault が発生する
http://redmine.ruby-lang.org/issues/5363

Author: Hiroshi Y.
Status: Assigned
Priority: Normal
Assignee: Martin Bosslet
Category: ext
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

Ruby 1.9.3 rc1 で OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると
Segmentation fault が発生します。

== 環境

Ubuntu 11.04 64-bit
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

== 再現コード

-- coding: utf-8 --

require ‘openssl’

puts RUBY_DESCRIPTION
puts OpenSSL::OPENSSL_VERSION

pem =<<-EOF
-----BEGIN CERTIFICATE-----
MIICIDCCAYmgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJKUDEO
MAwGA1UECAwFVG9reW8xDTALBgNVBAcMBENodW8xCjAIBgNVBAoMAU8xCzAJBgNV
BAMMAkNBMB4XDTEwMDkyMDE1MDAwMFoXDTExMDgyMDE1MDAwMFowRTELMAkGA1UE
BhMCSlAxDjAMBgNVBAgMBVRva3lvMQ0wCwYDVQQHDARDaHVvMQowCAYDVQQKDAFP
MQswCQYDVQQDDAJDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvhBlVyo6
NnJCqnUcz3RgDeBSJ2SdW6WHK/b4tsplMwLjAEtEieSHeFtODVcyjDDzyXVBfA4+
LaIFBtLB34NHCT4Hza7YeLbURTewLQYgcRc6u/GhrhAQRS+dBVrxFsj0VsH2C4cC
qM2XSEclBrZGBBpmmqFm6eu8324YCqpAWLMCAwEAH6MgMB4wDwYDVR0TAQH/BAUw
AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEFBQADgYEACkYGYtUozBEO2J00
o2yFFRgs47BZboHRcuyOOJp5Ku99u5tkFDdIiqb327QLmU4NHUTWPT3o63hf/J7S
2iyfG6NVTLgT3U9DTC2yI24uspEd4sz+Vmz60LDil2QABm6tRc68BJemSX1nNr7V
jifehALJCTPKL52Y/4d1YbrZBwA=
-----END CERTIFICATE-----
EOF

OpenSSL::ASN1.decode_all(pem)

== 実行時の結果

example.rb は上記の再現コード

$ /opt/local/ruby/1.9.3/rc1/bin/ruby example.rb
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]
OpenSSL 1.0.0e 6 Sep 2011
example.rb:24: [BUG] Segmentation fault
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

– Control frame information

c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :decode_all
c:0003 p:0075 s:0007 b:0007 l:0014f8 d:0017e0 EVAL example.rb:24
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014f8 d:0014f8 TOP

– Ruby level backtrace information

example.rb:24:in <main>' example.rb:24:indecode_all’

– C level backtrace information

/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x52a5e7] vm_dump.c:796
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x577988] error.c:258
/opt/local/ruby/1.9.3/rc1/bin/ruby(rb_bug+0xb1) [0x578df1] error.c:277
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x4ba328] signal.c:609
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfc60) [0x7fc8c1c56c60]
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c63d)
[0x7fc8c060563d] ossl_asn1.c:882
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c2ba)
[0x7fc8c06052ba] ossl_asn1.c:866

– Other runtime information

  • Loaded script: example.rb

  • Loaded features:

0 enumerator.so
1 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
2
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
3 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/defaults.rb
4 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/rbconfig.rb
5 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/deprecate.rb
6 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/exceptions.rb
7 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/custom_require.rb
8 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems.rb
9 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
10 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/digest.rb
11
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
12 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/bn.rb
13 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/cipher.rb
14 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
15 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/config.rb
16 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/digest.rb
17
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/buffering.rb
18 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
19
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/ssl-internal.rb
20
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/x509-internal.rb
21 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl.rb

  • Process memory map:

00400000-0062b000 r-xp 00000000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082b000-0082c000 r–p 0022b000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082c000-0082e000 rw-p 0022c000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082e000-0084b000 rw-p 00000000 00:00 0
011aa000-01534000 rw-p 00000000 00:00 0
[heap]
7fc8bf7b3000-7fc8bf7c8000 r-xp 00000000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf7c8000-7fc8bf9c7000 —p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c7000-7fc8bf9c8000 r–p 00014000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c8000-7fc8bf9c9000 rw-p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c9000-7fc8bf9ca000 r-xp 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bf9ca000-7fc8bfbc9000 —p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbc9000-7fc8bfbca000 r–p 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbca000-7fc8bfbcb000 rw-p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbcb000-7fc8bfbd2000 r-xp 00000000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfbd2000-7fc8bfdd1000 —p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd1000-7fc8bfdd2000 r–p 00006000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd2000-7fc8bfdd3000 rw-p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd3000-7fc8bfdd6000 r-xp 00000000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bfdd6000-7fc8bffd6000 —p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd6000-7fc8bffd7000 r–p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd7000-7fc8bffd8000 rw-p 00004000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd8000-7fc8c0166000 r-xp 00000000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0166000-7fc8c0366000 —p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0366000-7fc8c037f000 r–p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c037f000-7fc8c0389000 rw-p 001a7000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0389000-7fc8c038d000 rw-p 00000000 00:00 0
7fc8c038d000-7fc8c03e1000 r-xp 00000000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c03e1000-7fc8c05e1000 —p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e1000-7fc8c05e4000 r–p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e4000-7fc8c05e9000 rw-p 00057000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e9000-7fc8c0635000 r-xp 00000000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0635000-7fc8c0835000 —p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0835000-7fc8c0836000 r–p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0836000-7fc8c0838000 rw-p 0004d000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0838000-7fc8c0839000 rw-p 00000000 00:00 0
7fc8c0839000-7fc8c083b000 r-xp 00000000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c083b000-7fc8c0a3b000 —p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3b000-7fc8c0a3c000 r–p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3c000-7fc8c0a3d000 rw-p 00003000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3d000-7fc8c0a3f000 r-xp 00000000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0a3f000-7fc8c0c3e000 —p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3e000-7fc8c0c3f000 r–p 00001000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3f000-7fc8c0c40000 rw-p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c40000-7fc8c0c41000 —p 00000000 00:00 0
7fc8c0c41000-7fc8c0d45000 rw-p 00000000 00:00 0
7fc8c0d45000-7fc8c0fe9000 r–p 00000000 fb:00 5248223
/usr/lib/locale/locale-archive
7fc8c0fe9000-7fc8c1173000 r-xp 00000000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1173000-7fc8c1372000 —p 0018a000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1372000-7fc8c1376000 r–p 00189000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1376000-7fc8c1377000 rw-p 0018d000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1377000-7fc8c137d000 rw-p 00000000 00:00 0
7fc8c137d000-7fc8c1401000 r-xp 00000000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1401000-7fc8c1600000 —p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1600000-7fc8c1601000 r–p 00083000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1601000-7fc8c1602000 rw-p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1602000-7fc8c160b000 r-xp 00000000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c160b000-7fc8c180b000 —p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180b000-7fc8c180c000 r–p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180c000-7fc8c180d000 rw-p 0000a000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180d000-7fc8c183b000 rw-p 00000000 00:00 0
7fc8c183b000-7fc8c183d000 r-xp 00000000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c183d000-7fc8c1a3d000 —p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3d000-7fc8c1a3e000 r–p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3e000-7fc8c1a3f000 rw-p 00003000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3f000-7fc8c1a46000 r-xp 00000000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1a46000-7fc8c1c45000 —p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c45000-7fc8c1c46000 r–p 00006000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c46000-7fc8c1c47000 rw-p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c47000-7fc8c1c5f000 r-xp 00000000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1c5f000-7fc8c1e5f000 —p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e5f000-7fc8c1e60000 r–p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e60000-7fc8c1e61000 rw-p 00019000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e61000-7fc8c1e65000 rw-p 00000000 00:00 0
7fc8c1e65000-7fc8c1e86000 r-xp 00000000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2075000-7fc8c207a000 rw-p 00000000 00:00 0
7fc8c2082000-7fc8c2085000 rw-p 00000000 00:00 0
7fc8c2085000-7fc8c2086000 r–p 00020000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2086000-7fc8c2088000 rw-p 00021000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fff4233d000-7fff4235e000 rw-p 00000000 00:00 0
[stack]
7fff4236e000-7fff4236f000 r-xp 00000000 00:00 0
[vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension
libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted

Issue #5363 has been updated by Hiroshi Y…

I confirmed that the expected results.


ruby example.rb

ruby 1.9.4dev (2011-09-26 trunk 33339) [x86_64-linux]
OpenSSL 1.0.0e 6 Sep 2011
example.rb:24:in decode_all': invalid non-infinite tag (OpenSSL::ASN1::ASN1Error) from example.rb:24:in

Thank you.

Bug #5363: OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation
fault が発生する
http://redmine.ruby-lang.org/issues/5363

Author: Hiroshi Y.
Status: Feedback
Priority: Normal
Assignee: Martin Bosslet
Category: ext
Target version: 1.9.3
ruby -v: ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

Ruby 1.9.3 rc1 で OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると
Segmentation fault が発生します。

== 環境

Ubuntu 11.04 64-bit
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

== 再現コード

-- coding: utf-8 --

require ‘openssl’

puts RUBY_DESCRIPTION
puts OpenSSL::OPENSSL_VERSION

pem =<<-EOF
-----BEGIN CERTIFICATE-----
MIICIDCCAYmgAwIBAgIBATANBgkqhkiG9w0BAQUFADBFMQswCQYDVQQGEwJKUDEO
MAwGA1UECAwFVG9reW8xDTALBgNVBAcMBENodW8xCjAIBgNVBAoMAU8xCzAJBgNV
BAMMAkNBMB4XDTEwMDkyMDE1MDAwMFoXDTExMDgyMDE1MDAwMFowRTELMAkGA1UE
BhMCSlAxDjAMBgNVBAgMBVRva3lvMQ0wCwYDVQQHDARDaHVvMQowCAYDVQQKDAFP
MQswCQYDVQQDDAJDQTCBnzANBgkqhkiG9w0BAQEFAAOBjQAwgYkCgYEAvhBlVyo6
NnJCqnUcz3RgDeBSJ2SdW6WHK/b4tsplMwLjAEtEieSHeFtODVcyjDDzyXVBfA4+
LaIFBtLB34NHCT4Hza7YeLbURTewLQYgcRc6u/GhrhAQRS+dBVrxFsj0VsH2C4cC
qM2XSEclBrZGBBpmmqFm6eu8324YCqpAWLMCAwEAH6MgMB4wDwYDVR0TAQH/BAUw
AwEB/zALBgNVHQ8EBAMCAQYwDQYJKoZIhvcNAQEFBQADgYEACkYGYtUozBEO2J00
o2yFFRgs47BZboHRcuyOOJp5Ku99u5tkFDdIiqb327QLmU4NHUTWPT3o63hf/J7S
2iyfG6NVTLgT3U9DTC2yI24uspEd4sz+Vmz60LDil2QABm6tRc68BJemSX1nNr7V
jifehALJCTPKL52Y/4d1YbrZBwA=
-----END CERTIFICATE-----
EOF

OpenSSL::ASN1.decode_all(pem)

== 実行時の結果

example.rb は上記の再現コード

$ /opt/local/ruby/1.9.3/rc1/bin/ruby example.rb
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]
OpenSSL 1.0.0e 6 Sep 2011
example.rb:24: [BUG] Segmentation fault
ruby 1.9.3dev (2011-09-23 revision 33323) [x86_64-linux]

– Control frame information

c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :decode_all
c:0003 p:0075 s:0007 b:0007 l:0014f8 d:0017e0 EVAL example.rb:24
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH
c:0001 p:0000 s:0002 b:0002 l:0014f8 d:0014f8 TOP

– Ruby level backtrace information

example.rb:24:in <main>' example.rb:24:indecode_all’

– C level backtrace information

/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x52a5e7] vm_dump.c:796
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x577988] error.c:258
/opt/local/ruby/1.9.3/rc1/bin/ruby(rb_bug+0xb1) [0x578df1] error.c:277
/opt/local/ruby/1.9.3/rc1/bin/ruby() [0x4ba328] signal.c:609
/lib/x86_64-linux-gnu/libpthread.so.0(+0xfc60) [0x7fc8c1c56c60]
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c63d)
[0x7fc8c060563d] ossl_asn1.c:882
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so(+0x1c2ba)
[0x7fc8c06052ba] ossl_asn1.c:866

– Other runtime information

  • Loaded script: example.rb

  • Loaded features:

0 enumerator.so
1 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
2
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
3 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/defaults.rb
4 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/rbconfig.rb
5 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/deprecate.rb
6 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/exceptions.rb
7 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems/custom_require.rb
8 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/rubygems.rb
9 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
10 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/digest.rb
11
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
12 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/bn.rb
13 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/cipher.rb
14 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
15 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/config.rb
16 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/digest.rb
17
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/buffering.rb
18 /opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
19
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/ssl-internal.rb
20
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl/x509-internal.rb
21 /opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/openssl.rb

  • Process memory map:

00400000-0062b000 r-xp 00000000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082b000-0082c000 r–p 0022b000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082c000-0082e000 rw-p 0022c000 fb:00 8793890
/opt/local/ruby/1.9.3/rc1/bin/ruby
0082e000-0084b000 rw-p 00000000 00:00 0
011aa000-01534000 rw-p 00000000 00:00 0
[heap]
7fc8bf7b3000-7fc8bf7c8000 r-xp 00000000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf7c8000-7fc8bf9c7000 —p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c7000-7fc8bf9c8000 r–p 00014000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c8000-7fc8bf9c9000 rw-p 00015000 fb:00 7864364
/lib/x86_64-linux-gnu/libgcc_s.so.1
7fc8bf9c9000-7fc8bf9ca000 r-xp 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bf9ca000-7fc8bfbc9000 —p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbc9000-7fc8bfbca000 r–p 00000000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbca000-7fc8bfbcb000 rw-p 00001000 fb:00 8793987
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/fcntl.so
7fc8bfbcb000-7fc8bfbd2000 r-xp 00000000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfbd2000-7fc8bfdd1000 —p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd1000-7fc8bfdd2000 r–p 00006000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd2000-7fc8bfdd3000 rw-p 00007000 fb:00 8793977
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/stringio.so
7fc8bfdd3000-7fc8bfdd6000 r-xp 00000000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bfdd6000-7fc8bffd6000 —p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd6000-7fc8bffd7000 r–p 00003000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd7000-7fc8bffd8000 rw-p 00004000 fb:00 8793989
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/digest.so
7fc8bffd8000-7fc8c0166000 r-xp 00000000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0166000-7fc8c0366000 —p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0366000-7fc8c037f000 r–p 0018e000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c037f000-7fc8c0389000 rw-p 001a7000 fb:00 8915953
/opt/local/openssl/1.0.0e/lib/libcrypto.so.1.0.0
7fc8c0389000-7fc8c038d000 rw-p 00000000 00:00 0
7fc8c038d000-7fc8c03e1000 r-xp 00000000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c03e1000-7fc8c05e1000 —p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e1000-7fc8c05e4000 r–p 00054000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e4000-7fc8c05e9000 rw-p 00057000 fb:00 8915956
/opt/local/openssl/1.0.0e/lib/libssl.so.1.0.0
7fc8c05e9000-7fc8c0635000 r-xp 00000000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0635000-7fc8c0835000 —p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0835000-7fc8c0836000 r–p 0004c000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0836000-7fc8c0838000 rw-p 0004d000 fb:00 8796840
/opt/local/ruby/1.9.3/rc1/lib/ruby/site_ruby/1.9.1/x86_64-linux/openssl.so
7fc8c0838000-7fc8c0839000 rw-p 00000000 00:00 0
7fc8c0839000-7fc8c083b000 r-xp 00000000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c083b000-7fc8c0a3b000 —p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3b000-7fc8c0a3c000 r–p 00002000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3c000-7fc8c0a3d000 rw-p 00003000 fb:00 8793940
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/trans/transdb.so
7fc8c0a3d000-7fc8c0a3f000 r-xp 00000000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0a3f000-7fc8c0c3e000 —p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3e000-7fc8c0c3f000 r–p 00001000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c3f000-7fc8c0c40000 rw-p 00002000 fb:00 8793956
/opt/local/ruby/1.9.3/rc1/lib/ruby/1.9.1/x86_64-linux/enc/encdb.so
7fc8c0c40000-7fc8c0c41000 —p 00000000 00:00 0
7fc8c0c41000-7fc8c0d45000 rw-p 00000000 00:00 0
7fc8c0d45000-7fc8c0fe9000 r–p 00000000 fb:00 5248223
/usr/lib/locale/locale-archive
7fc8c0fe9000-7fc8c1173000 r-xp 00000000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1173000-7fc8c1372000 —p 0018a000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1372000-7fc8c1376000 r–p 00189000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1376000-7fc8c1377000 rw-p 0018d000 fb:00 7864339
/lib/x86_64-linux-gnu/libc-2.13.so
7fc8c1377000-7fc8c137d000 rw-p 00000000 00:00 0
7fc8c137d000-7fc8c1401000 r-xp 00000000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1401000-7fc8c1600000 —p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1600000-7fc8c1601000 r–p 00083000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1601000-7fc8c1602000 rw-p 00084000 fb:00 7864347
/lib/x86_64-linux-gnu/libm-2.13.so
7fc8c1602000-7fc8c160b000 r-xp 00000000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c160b000-7fc8c180b000 —p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180b000-7fc8c180c000 r–p 00009000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180c000-7fc8c180d000 rw-p 0000a000 fb:00 7864345
/lib/x86_64-linux-gnu/libcrypt-2.13.so
7fc8c180d000-7fc8c183b000 rw-p 00000000 00:00 0
7fc8c183b000-7fc8c183d000 r-xp 00000000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c183d000-7fc8c1a3d000 —p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3d000-7fc8c1a3e000 r–p 00002000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3e000-7fc8c1a3f000 rw-p 00003000 fb:00 7864346
/lib/x86_64-linux-gnu/libdl-2.13.so
7fc8c1a3f000-7fc8c1a46000 r-xp 00000000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1a46000-7fc8c1c45000 —p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c45000-7fc8c1c46000 r–p 00006000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c46000-7fc8c1c47000 rw-p 00007000 fb:00 7864359
/lib/x86_64-linux-gnu/librt-2.13.so
7fc8c1c47000-7fc8c1c5f000 r-xp 00000000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1c5f000-7fc8c1e5f000 —p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e5f000-7fc8c1e60000 r–p 00018000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e60000-7fc8c1e61000 rw-p 00019000 fb:00 7864357
/lib/x86_64-linux-gnu/libpthread-2.13.so
7fc8c1e61000-7fc8c1e65000 rw-p 00000000 00:00 0
7fc8c1e65000-7fc8c1e86000 r-xp 00000000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2075000-7fc8c207a000 rw-p 00000000 00:00 0
7fc8c2082000-7fc8c2085000 rw-p 00000000 00:00 0
7fc8c2085000-7fc8c2086000 r–p 00020000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fc8c2086000-7fc8c2088000 rw-p 00021000 fb:00 7864336
/lib/x86_64-linux-gnu/ld-2.13.so
7fff4233d000-7fff4235e000 rw-p 00000000 00:00 0
[stack]
7fff4236e000-7fff4236f000 r-xp 00000000 00:00 0
[vdso]
ffffffffff600000-ffffffffff601000 r-xp 00000000 00:00 0
[vsyscall]

[NOTE]
You may have encountered a bug in the Ruby interpreter or extension
libraries.
Bug reports are welcome.
For details: http://www.ruby-lang.org/bugreport.html

Aborted

2011/9/27 Martin B. [email protected]:

I currently don’t have proper internet access, I have
to abuse the burger joint next door’s wifi just to type this :slight_smile:

So I’m afraid I couldn’t really backport this to 1.9.3 this week -
could somebody please take over for me in case this
patch is to be applied in 1.9.3?

Done. r33347.

2011/9/27 KOSAKI Motohiro [email protected]:

So I’m afraid I couldn’t really backport this to 1.9.3 this week -
could somebody please take over for me in case this
patch is to be applied in 1.9.3?

Done. r33347.

Super, thank you!

2011/9/26 Hiroshi Y. [email protected]:

Issue #5363 has been updated by Hiroshi Y…

I confirmed that the expected results.

Great, thank you, Hiroshi!

I currently don’t have proper internet access, I have
to abuse the burger joint next door’s wifi just to type this :slight_smile:

So I’m afraid I couldn’t really backport this to 1.9.3 this week -
could somebody please take over for me in case this
patch is to be applied in 1.9.3?

Regards,
Martin