[#41916] Proposal: Bitmap Marking GC — Narihiro Nakamura <authornari@...>

Hi.

18 messages 2012/01/05

[#41941] [ruby-trunk - Bug #5851][Open] make check fails when compiling with GCC 4.7 - *** longjmp causes uninitialized stack frame *** — Vit Ondruch <v.ondruch@...>

12 messages 2012/01/06

[#41979] [ruby-trunk - Bug #5865][Open] Exception#== should return false if the classes differ — Hiro Asari <asari.ruby@...>

10 messages 2012/01/08

[#42003] [ruby-trunk - Bug #5871][Open] regexp \W matches some word characters when inside a case-insensitive character class — Gareth Adams <gareth@...>

14 messages 2012/01/09

[#42016] [ruby-trunk - Feature #5873][Open] Adopt FFI over DL — Heesob Park <phasis@...>

15 messages 2012/01/10

[#42149] [ruby-trunk - Feature #5899][Open] chaining comparsions. — Ondrej Bilka <neleai@...>

12 messages 2012/01/16

[#42164] [ruby-trunk - Feature #5903][Open] Optimize st_table (take 2) — Yura Sokolov <funny.falcon@...>

18 messages 2012/01/17

[ruby-core:42117] [ruby-trunk - Bug #5888] JSON unittest fails

From: Bohuslav Kabrda <bkabrda@...>
Date: 2012-01-13 14:41:54 UTC
List: ruby-core #42117
Issue #5888 has been updated by Bohuslav Kabrda.


After few hours of debugging, it seems that the flaw may actually be in the json_string_unescape function (in the same file, deeper in the callstack).
When compiled with -O0, it shows nothing suspicious, but with -O2, it shows some possible problems:

1344	                        unescape_len = convert_UTF32_to_UTF8(buf, ch);
convert_UTF32_to_UTF8 (ch=0, buf=0x7fffffffdd00 "\270", <incomplete sequence \343\225>) at parser.c:46

-- The incomplete sequence is the thing that is weird. The "ch" variable is created using some byte shifting in the json_string_unescape function, which may be the cause (if the optimization does something with the byte shifting).
----------------------------------------
Bug #5888: JSON unittest fails
https://bugs.ruby-lang.org/issues/5888

Author: Vit Ondruch
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 
ruby -v: ruby 1.9.3p0 (2011-10-30) [x86_64-linux]


Hello,

When building Ruby 1.9.3 (as well as 2.0.0), the make check spits following errors:

  1) Failure:
test_parse_values(TC_JSON) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json.rb:174]:
<["\"\b\n\r\t\u0000\u001F"]> expected but was
<["\"\b\n\r\t\xA8\xA8"]>.
  2) Failure:
test_parser_reset(TC_JSON) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json.rb:291]:
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\u0000\u001F",
 "h"=>1000.0,
 "i"=>0.001}> expected but was
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\xA0\xA0",
 "h"=>1000.0,
 "i"=>0.001}>.
  3) Failure:
test_fast_generate(TC_JSONGenerate) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json_generate.rb:78]:
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\u0000\u001F",
 "h"=>1000.0,
 "i"=>0.001}> expected but was
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\xA0\xA0",
 "h"=>1000.0,
 "i"=>0.001}>.
  4) Failure:
test_generate(TC_JSONGenerate) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json_generate.rb:47]:
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\u0000\u001F",
 "h"=>1000.0,
 "i"=>0.001}> expected but was
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\xA0\xA0",
 "h"=>1000.0,
 "i"=>0.001}>.
  5) Failure:
test_generate_pretty(TC_JSONGenerate) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json_generate.rb:61]:
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\u0000\u001F",
 "h"=>1000.0,
 "i"=>0.001}> expected but was
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\xA0\xA0",
 "h"=>1000.0,
 "i"=>0.001}>.
  6) Failure:
test_own_state(TC_JSONGenerate) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json_generate.rb:92]:
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\u0000\u001F",
 "h"=>1000.0,
 "i"=>0.001}> expected but was
<{"a"=>2,
 "b"=>3.141,
 "c"=>"c",
 "d"=>[1, "b", 3.14],
 "e"=>{"foo"=>"bar"},
 "g"=>"\"\xA0\xA0",
 "h"=>1000.0,
 "i"=>0.001}>.
  7) Failure:
test_chars(TC_JSONUnicode) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json_unicode.rb:57]:
<"\x00"> expected but was
<"\xA0">.
  8) Failure:
test_unicode(TC_JSONUnicode) [/builddir/build/BUILD/ruby-1.9.3-p0/test/json/test_json_unicode.rb:20]:
<["\u00A9 \u2260 \u20AC! \u0001"]> expected but was
<["\u00A9 \u2260 \u20AC! \xD8"]>.


Please note that I am building Ruby using GCC 4.7 on Fedora Rawhide. I have not seen this errors before with GCC 4.6


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

In This Thread