Project

General

Profile

Bug #5213

GC.stress=true で TestSH#test_commercial が Failure になる

Added by nagachika (Tomoyuki Chikanaga) almost 7 years ago. Updated almost 7 years ago.

Status:
Closed
Priority:
Normal
Target version:
ruby -v:
ruby 1.9.4dev (2011-08-21 trunk 33021) [x86_64-darwin10.8.0]
[ruby-dev:44409]

Description

make test-all TESTS="--gc-stress date/test_switch_hitter.rb -n test_commercial"
を実行すると

1) Failure:
test_commercial(TestSH) [/Users/nagachika/opt/ruby-trunk/src/ruby/test/date/test_switch_hitter.rb:176]:
<[2001, 2, 3, 4, 5, 6, (3/8)]> expected but was
<[2001, 2, 3, 4, 5, 6, (0/1)]>.

といったエラーになります。

date_zone_to_diff() でバッファを利用中の文字列(変数str)を上書きすることがあるためで、添付のパッチで現象は抑制できました。

date_parse.c.patch (435 Bytes) date_parse.c.patch nagachika (Tomoyuki Chikanaga), 08/22/2011 11:59 PM
date_parse.c.2.patch (1.25 KB) date_parse.c.2.patch nagachika (Tomoyuki Chikanaga), 08/23/2011 12:28 PM

Associated revisions

Revision a3e598f4
Added by nagachika (Tomoyuki Chikanaga) almost 7 years ago

  • backport r33106 from trunk.

  • ext/date/date_parse.c (date_zone_to_diff): keep a temporary string
    stored in variable while the contents buffer is beeing used.

  • ext/date/date_parse.c (date_zone_to_diff): get rid of out of bounds
    memory read. [Bug #5213]

git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/branches/ruby_1_9_3@33107 b2dd03c8-39d4-4d8f-98ff-823fe69b080e

History

#1 [ruby-dev:44411] Updated by nagachika (Tomoyuki Chikanaga) almost 7 years ago

すみません、valgrind で実行するとその他に str のバッファをはみだしてアクセスする場合があったのでその修正と、RB_GC_GUARD を使うようにしたのでパッチを更新します。

#2 [ruby-dev:44429] Updated by tadf (tadayoshi funaba) almost 7 years ago

コミットしておいて下さい。

#3 [ruby-dev:44437] Updated by nagachika (Tomoyuki Chikanaga) almost 7 years ago

  • Status changed from Open to Closed

r33106 でコミットしました。

Also available in: Atom PDF