Issue #11684 has been updated by ngoto (Naohisa Goto).

Status changed from Closed to Open

The bug is also observed with Oracle Developer Studio 12.5 (the next version of Oracle Solaris Studio 12.4).

----------------------------------------
Bug #11684: Pack#unpack test failure on Solaris 10 with Oracle Solaris Studio 12.4
https://bugs.ruby-lang.org/issues/11684#change-64233

* Author: ngoto (Naohisa Goto)
* Status: Open
* Priority: Normal
* Assignee: 
* Target version: 
* ruby -v: ruby 2.3.0dev (2015-11-12) [sparc64-solaris2.10]
* Backport: 2.0.0: UNKNOWN, 2.1: UNKNOWN, 2.2: UNKNOWN
----------------------------------------
On Solaris 10, when compiling ruby with Oracle Solaris Studio 12.4 with -xO4 optimization option, the following test failure is observed during make test-all. (tested with r52550)

~~~
  1) Failure:
TestPack#test_pack_unpack_atmark [XXXXX/test/ruby/test_pack.rb:548]:
<[nil]> expected but was
<[]>.

  2) Failure:
TestPack#test_short_string [/XXXXX/test/ruby/test_pack.rb:735]:
<[1, nil]> expected but was
<[1]>.

15885 tests, 2225854 assertions, 2 failures, 0 errors, 50 skips
~~~

It seems that String#unpack is incorrectly compiled with Oracle Solaris Studio 12.4 with -xO4.

~~~
$ irb
irb(main):001:0> [1,2].pack('i2')
=> "\x00\x00\x00\x01\x00\x00\x00\x02" ###<== OK
irb(main):002:0> "\x00\x00\x00\x01\x00\x00\x00\x02".unpack('i3')
=> [1, 2] ###<== [1, 2, nil] is expected
~~~

It seems that PACK_ITEM_ADJUST() is wiped out by wrong optimization.
I think this is a bug of Oracle Solaris Studio 12.4.

The failure is not observed with -xO3 or lower optimization option.
It is also not observed by using Oracle Solaris Studio 12.3, even speficying -xO4 optimization option.




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

Unsubscribe: <mailto:ruby-core-request / ruby-lang.org?subject=unsubscribe>
<http://lists.ruby-lang.org/cgi-bin/mailman/options/ruby-core>