Ruby Issue Tracking System: Issues
https://redmine.ruby-lang.org/
https://redmine.ruby-lang.org/favicon.ico?1711330511
2022-09-01T09:37:06Z
Ruby Issue Tracking System
Redmine
Ruby master - Bug #18989 (Closed): Backport f229b36087f1b387d77af8f3fa50f9bffd2fd44e to ruby_3_1
https://redmine.ruby-lang.org/issues/18989
2022-09-01T09:37:06Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This is a ticket for backport management.</p>
<p>f229b36087f1b387d77af8f3fa50f9bffd2fd44e should be backported into ruby_3_1.</p>
Ruby master - Bug #17095 (Closed): Backport c0b93267497d47858ea9539ef863be321bc1ddbf
https://redmine.ruby-lang.org/issues/17095
2020-07-31T06:25:53Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This is a ticket for backport management.</p>
<p>See <a href="https://github.com/ruby/ruby/pull/3364" class="external">https://github.com/ruby/ruby/pull/3364</a> too.</p>
Ruby master - Bug #15906 (Closed): a=a のような式をもつ条件分岐が意図しない挙動をする
https://redmine.ruby-lang.org/issues/15906
2019-06-07T05:20:46Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>[ruby-list:50781] から一部転載します。</p>
<pre><code>下記スクリプトの結果が期待と違います。なぜでしょうか?
a = a は不要ですが、なにもしないことを明示するために書いたものです。
なおOS付属の ruby 2.3.7p456 では期待通りの結果でした。
a = "aaa"
if a == "bbb" || a == "ccc" then
a = a
else
puts "OK"
end
puts "END"
実行結果
END
期待する結果
OK
END
動作環境
MacOS 10.13.6
ruby 2.6.3p62 (2019-04-16 revision 67580) [x86_64-darwin17]
macportsでインストール
</code></pre>
<p>r63870 から発生するようになっているようです。</p>
Ruby master - Bug #15205 (Closed): backport r64915 (check argument type.)
https://redmine.ruby-lang.org/issues/15205
2018-10-05T11:10:42Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This ticket is for backport management.</p>
Ruby master - Bug #12326 (Closed): Update rubygems to 2.5.2 in ruby_2_3
https://redmine.ruby-lang.org/issues/12326
2016-04-27T23:46:16Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This is a ticket for ruby_2_3 stable branch maintainance. Not about issues on trunk.</p>
<p>There's an issue about gem install package on rubygems 2.5.1.</p>
<p><a href="https://github.com/rubygems/rubygems/issues/1448" class="external">https://github.com/rubygems/rubygems/issues/1448</a></p>
<p>Upgrade rubygems to 2.5.2 in ruby_2_3 branch.</p>
Ruby master - Bug #12223 (Closed): Backport r54304 (SEGV in rb_str_format())
https://redmine.ruby-lang.org/issues/12223
2016-03-28T06:20:32Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用チケットです。<br>
r54304 は ruby_2_2, ruby_2_3 でも必要そうです。<br>
2.1.8 で <code>sprintf("%.600f", 600**~60)</code> を試してみたところ SEGV しなかったので一応 DONTNEED にしていますが、ソースコードは精査してはいません。</p>
Ruby master - Bug #12197 (Closed): Backport r54185 to ruby_2_3 (mark debug_buffer)
https://redmine.ruby-lang.org/issues/12197
2016-03-18T19:18:18Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用チケットです。<br>
struct parser_params::debug_buffer のマーク漏れ修正です。 2.3 から導入されたメンバなので 2.2 以前には不要です。</p>
Ruby master - Bug #12188 (Closed): Backport r54105 and r54136 (fix Marshal.load violation for inv...
https://redmine.ruby-lang.org/issues/12188
2016-03-17T13:33:49Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This is a ticket for backport management (as memorandum for stable maintainers). The original issues were already fixed on trunk.<br>
r54105 and r54136 fixes [BUG] of Marshal.load with invalid dump format strings.</p>
Ruby master - Bug #11834 (Closed): Backport r53168, r53169 (String#scrub, #encode infection)
https://redmine.ruby-lang.org/issues/11834
2015-12-17T17:50:32Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>このチケットはバックポート管理用です。</p>
<p>r53168, r53169 の修正は 2.1, 2.2 でも必要そうです。</p>
Ruby master - Bug #11823 (Closed): Backport r53083
https://redmine.ruby-lang.org/issues/11823
2015-12-15T17:38:43Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>このチケットはバックポート管理用です。<br>
r53083 (open の encoding オプションのバッファオーバフロー)をバックポートします。</p>
Ruby master - Bug #11775 (Closed): Backport r52892 (fix the argument order of ATOMIC_SIZE_CAS)
https://redmine.ruby-lang.org/issues/11775
2015-12-05T19:01:06Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>このチケットはバックポート管理用です。<br>
r52892 で修正されている InterlockedCompareExchange64() を使った ATOMIC_SIZE_CAS() の修正部分は 2.0.0〜2.2 も同様なのでバックポート必要そうです。</p>
Ruby master - Bug #11722 (Closed): Backport r52683 (Net::HTTP fix bug with "Expect: 100-continue"...
https://redmine.ruby-lang.org/issues/11722
2015-11-20T18:11:11Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用チケットです。</p>
<p>r52683 の net/http の修正部分は差分のところだけみると 2.0.0 から同様のようなのでバックポートが必要かもしれません。</p>
Ruby master - Bug #11497 (Closed): add Write Barrier in refined method entry move (fixed at r51728)
https://redmine.ruby-lang.org/issues/11497
2015-08-31T14:05:43Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>このチケットはバックポート管理用です。<br>
trunk では r51728 で write barrier が追加されました。</p>
<p>ruby_2_1, ruby_2_2 では trunk の move_refined_method() が変更されていて多少 conflict しますが、同じ問題があるように見受けられます。</p>
<p>また r50948 も同様に wite barrier 追加のように見えますが、me が T_IMEMO 型のオブジェクトになったためで、T_IMEMO 化されていない 2.1/2.2 では不要ではないかと思いますが、ささださん、どうでしょう?</p>
Ruby master - Bug #11433 (Closed): Backport r51532 (rb_ary_repeated_permutation: fix buffer size)
https://redmine.ruby-lang.org/issues/11433
2015-08-11T13:07:02Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This is a ticket for backport management.</p>
<p>r51532 fixed unnessesary large memory allocation in Array#repeated_permutation in trunk.</p>
Ruby master - Bug #11271 (Closed): TestObjSpace#test_trace_object_allocations_start_stop_clear oc...
https://redmine.ruby-lang.org/issues/11271
2015-06-16T18:52:15Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>手元の環境で ruby_2_2 ブランチ上で make test-all TESTS=objspace/test_objspace.rb と test_objspace.rb だけ指定して実施すると、以下のような 1 Failure になります。</p>
<pre><code> 1) Failure:
TestObjSpace#test_trace_object_allocations_start_stop_clear [/Users/nagachika/opt/ruby-2.2/src/ruby_2_2/test/objspace/test_objspace.rb:188]:
<nil> expected but was
<"/Users/nagachika/opt/ruby-2.2/src/ruby_2_2/test/lib/test/unit/assertions.rb">.
</code></pre>
<p>手元では trunk では再現せず、make test-all を全体で実行した時も発生しません。しかし以下のような理由でこれはたまたま発生してないだけなのではないかと推測します。</p>
<p>ObjectSpace.trace_object_allocations_stop でトレースが停止された後に作られた obj3 が全く関係ない test/lib/test/unit/assertions.rb で確保されたと報告されてしまっているのですが、これは</p>
<ol>
<li>ObjectSpace.trace_object_allocations_start でトレースが開始された後に test/lib/test/unit/assertions.rb でオブジェクト A が確保される(traceobj_arg::object_table に記録される)</li>
<li>ObjectSpace.trace_object_allocations_stop でトレースが停止される</li>
<li>オブジェクトA が GC で回収される。既にトレースが停止されているので freeobj_i() は実行されず traceobj_arg::object_table のエントリは残ったまま</li>
<li>オブジェクトA と同じ struct RVALUE に obj3 が確保される</li>
</ol>
<p>ということが起きているのではないかと想像して、2. と 3. の順序が入れ変わることを期待して以下のように ObjectSpace.trace_object_allocations_stop の前に GC.start を挿入してみると、発生しなくなりました。</p>
<pre><code>--- a/test/objspace/test_objspace.rb
+++ b/test/objspace/test_objspace.rb
@@ -187,6 +187,7 @@ class TestObjSpace < Test::Unit::TestCase
obj2 = Object.new
end
ensure
+ GC.start
ObjectSpace.trace_object_allocations_stop
obj3 = Object.new
end
</code></pre>
<p>そもそも ObjectSpace.trace_object_allocations_start と ObjectSpace.trace_object_allocations_stop で収集してる情報はそういうものなのかもしれないですが(オブジェクトが回収されても object_table には残すモードもあるようですし)、テストを修正するか、ObjectSpace.trace_object_allocations_stop で強制的に GC を走らせてこういう現象がおきにくくするのはどうでしょうか。<br>
ruby_2_2 向けですが GC を走らせる方針では以下のようなパッチでも再現しなくなりました。</p>
<pre><code>Index: ext/objspace/object_tracing.c
===================================================================
--- ext/objspace/object_tracing.c (revision 50922)
+++ ext/objspace/object_tracing.c (working copy)
@@ -206,6 +206,7 @@
}
if (arg->running == 0) {
+ rb_gc_start();
rb_tracepoint_disable(arg->newobj_trace);
rb_tracepoint_disable(arg->freeobj_trace);
arg->newobj_trace = 0;
</code></pre>
Ruby master - Bug #10953 (Closed): follow rubyspec repository changes (r49689, r49752, r49753)
https://redmine.ruby-lang.org/issues/10953
2015-03-09T13:26:56Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用です。</p>
<p>trunk では rubyspec のリポジトリ変更が変更されている(r49689)ので各安定版ブランチでも追随したほうがいいかと思います。<br>
また default.mspec の変更により make test-rubyspec が失敗するようになっているのでその関連した変更も (r49752, r49753)。</p>
Ruby master - Bug #10951 (Closed): insert WB in lep_svar_set() (r49898)
https://redmine.ruby-lang.org/issues/10951
2015-03-09T12:09:57Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用チケットです。</p>
<p>r49898 で lep_svar_set() に挿入された write barrier の部分は 2.1/2.2 にも同様の代入があるので必要ではないかと思います。</p>
Ruby master - Bug #10946 (Closed): need a WB for klass -> origin. (r49875)
https://redmine.ruby-lang.org/issues/10946
2015-03-06T20:02:46Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用です。</p>
<p>r49875 で挿入された RCLASS_ORIGIN(klass) の更新の WB は 2.1/2.2 でも必要ですよね?</p>
Ruby master - Bug #10839 (Closed): OpenSSL 1.0.2 does not allow wrap mode (fixed by r49525)
https://redmine.ruby-lang.org/issues/10839
2015-02-08T15:51:40Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用です。</p>
<p>r49525 の修正が RubyCI の Yosemite での 1F をなおしてくれそうです。</p>
Ruby master - Bug #10814 (Closed): SIGBUS by stack overflow on Funtoo (fixed at r49463)
https://redmine.ruby-lang.org/issues/10814
2015-02-01T17:56:49Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This ticket is only for backport management.</p>
<p>I didn't confirm this change can be backported into each branch, but this seems fix [BUG] in chkbuild on Funtoo.</p>
Ruby master - Bug #10813 (Closed): Fix intermittent SIGBUS on Linux (fixed at r49452)
https://redmine.ruby-lang.org/issues/10813
2015-02-01T17:52:19Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This ticket is only for backport management.</p>
<p>I didn't confirm this can be backported into each branch. But I'll fill <code>REQUIRED</code> in <code>Backport</code> field mainly for the health of RubyCI.</p>
<p>ref. <a href="https://github.com/ruby/ruby/pull/822" class="external">https://github.com/ruby/ruby/pull/822</a></p>
Ruby master - Bug #10692 (Closed): there is no response body with HEAD request (fixed at r49105)
https://redmine.ruby-lang.org/issues/10692
2015-01-02T15:52:43Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>See <a href="https://github.com/ruby/ruby/pull/520" class="external">https://github.com/ruby/ruby/pull/520</a></p>
<p>The issue was already fixed on trunk.<br>
This ticket is only for backport management.<br>
The related test was added at r49104.</p>
Ruby master - Bug #10688 (Closed): fix non-symbol keys hash. (fixed at r49088, 49089)
https://redmine.ruby-lang.org/issues/10688
2015-01-01T14:05:03Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>The issue was already fixed on trunk at r49088.<br>
This ticket is only for backport management.</p>
<p>I've confirmed that this isn't reproduced on 2.1.5 and 2.0.0-head.</p>
Ruby master - Bug #10662 (Closed): fix to invoke correct function of tcllib. (fixed at r49034)
https://redmine.ruby-lang.org/issues/10662
2014-12-27T13:16:31Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>see <a href="https://github.com/ruby/ruby/issues/787" class="external">https://github.com/ruby/ruby/issues/787</a><br>
This ticket is only for backport management.</p>
Ruby master - Bug #10649 (Closed): get rid of NameError in io/console (fixed at r48982)
https://redmine.ruby-lang.org/issues/10649
2014-12-25T13:43:18Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>IO.console raise NameError after IO.console.close.</p>
<pre><code>% ruby -rio/console -ve 'IO.console.close; IO.console'
ruby 2.1.5p272 (2014-11-06 revision 48302) [x86_64-darwin13.0]
-e:1:in `console': `console' is not allowed as a constant name (NameError)
from -e:1:in `<main>'
</code></pre>
<p>It was fixed at r48982 in trunk/2.2. This ticket is for backport management.</p>
Backport21 - Backport #10515 (Closed): merge "Newer Root CA for rubygems.org" for rubygems 2.2 bu...
https://redmine.ruby-lang.org/issues/10515
2014-11-15T18:05:16Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>rubygems bundled CA Root files perhaps have to be updated.</p>
<p>related issue: <a href="https://github.com/rubygems/rubygems/issues/1050" class="external">https://github.com/rubygems/rubygems/issues/1050</a></p>
<p>The patch for rubygems 2.2 branch is here: <a href="https://github.com/rubygems/rubygems/commit/17d8922966051864a0c4bf768623e9d0c854de26" class="external">https://github.com/rubygems/rubygems/commit/17d8922966051864a0c4bf768623e9d0c854de26</a></p>
<p>The related commit for trunk: <a href="http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48389&view=revision" class="external">http://svn.ruby-lang.org/cgi-bin/viewvc.cgi?revision=48389&view=revision</a></p>
Backport21 - Backport #10448 (Closed): Backport r48186 (Kernel#load with non-ASCII path cause Loa...
https://redmine.ruby-lang.org/issues/10448
2014-10-29T13:50:34Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>[ruby-list:49994] に報告のあった Kernel#load がエンコーディングを変換していない不具合修正のバックポート管理用チケットです。</p>
Ruby master - Bug #10434 (Closed): fix TestBugReporter#test_bug_reporter_add failure on Yosemite ...
https://redmine.ruby-lang.org/issues/10434
2014-10-27T12:08:26Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>バックポート管理用のチケットです。<br>
Yosemite で DignosticReport ディレクトリに .plist ファイルを作らなくなったことに対応するテストの修正です。</p>
Ruby master - Bug #10373 (Closed): add RB_GC_GUARD in rb_mod_define_method() (r47891)
https://redmine.ruby-lang.org/issues/10373
2014-10-12T13:46:52Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>This ticket is for backport management.</p>
<p>r47891 added RB_GC_GUARD() in rb_mod_define_method() to protect method entry (VALUE body which can be derived from rb_block_lambda()) from unexpected GC.<br>
It seemsd <code>ruby_2_1</code> and <code>ruby_2_0_0</code> have similar potential problem.</p>
Ruby master - Bug #10281 (Closed): r47683 (add GC guard in rb_ary_splice())
https://redmine.ruby-lang.org/issues/10281
2014-09-22T14:03:39Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Ruby master - Bug #10242 (Closed): Backport r47591 (Pathname#relative_path_from crash)
https://redmine.ruby-lang.org/issues/10242
2014-09-15T13:22:23Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r47591 で修正された pathname.rb の当該箇所は 2.0.0 と 2.1 でも同様で、Encodingが異なる文字列でString#casecmpがnilを返す点も同じなので同様の問題があると思います。</p>
<p>バックポート管理用チケットなのでClosed状態で作成します。</p>
Backport21 - Backport #10140 (Closed): Backport r47191 (don't pass a non-VALUE argument to RB_OBJ...
https://redmine.ruby-lang.org/issues/10140
2014-08-15T14:03:23Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>In commit message:</p>
<pre><code>Should not insert write barrier from
non-RVALUE data (to non-RVALUE data, of course).
Ruby 2.1 also has a same problem.
</code></pre>
Backport21 - Backport #10139 (Closed): Backport r47190 (use RBASIC_SET_CLASS_RAW in setup_fake_st...
https://redmine.ruby-lang.org/issues/10139
2014-08-15T13:57:26Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>From commit message</p>
<pre><code>fake strings should not set class by
RBASIC_SET_CLASS() because it insert write barriers to fake
(non-RVALUE) structure.
It can cause unexpected behaviour.
Ruby 2.1 also have a same problem (setup_fake_str() in parse.y).
</code></pre>
Backport21 - Backport #10005 (Closed): Backport r46649 (Fix --dump=parsetree segfault on required...
https://redmine.ruby-lang.org/issues/10005
2014-07-02T15:38:52Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Backport r46649. it fixes "--dump=parsetree segfault on required keyword argument"</p>
Ruby master - Bug #9991 (Closed): fd leak on WEBrick::Utils#create_listeners (fixed at r46598)
https://redmine.ruby-lang.org/issues/9991
2014-06-28T16:33:35Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>WEBrick::Utils#create_listeners での socket close 漏れの修正<br>
バックポート管理用にチケット化します。</p>
Backport21 - Backport #9911 (Closed): Backport r45540 to introduce OpenSSL::OPENSSL_LIBRARY_VERSION
https://redmine.ruby-lang.org/issues/9911
2014-06-06T16:05:58Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Let's backport r45540.<br>
It introduces OpenSSL::OPENSSL_LIBRARY_VERSION. It's a new feature and marked as [EXPERIMENTAL]. So usually it shouldn't be backported to stable branches.<br>
But it's convenient to check linked OpenSSL runtime version, and valuable to confirm openssl security fixes are applied.<br>
A changeset is quite simple.</p>
Backport21 - Backport #9896 (Closed): r46313 (add write barriers for refinements)
https://redmine.ruby-lang.org/issues/9896
2014-06-02T14:03:25Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r46313 で RGenGC が有効な時に Module#using の write barrier 漏れを修正しているので、バックポートが必要ではないかと思います。</p>
Backport21 - Backport #9668 (Closed): Backport r45393 (Fix up default GC params)
https://redmine.ruby-lang.org/issues/9668
2014-03-24T13:17:02Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Please backport r45393.<br>
See <a href="https://github.com/ruby/ruby/pull/556" class="external">https://github.com/ruby/ruby/pull/556</a></p>
Backport21 - Backport #9621 (Closed): backport r45308 (Check fptr before trying to dump FILE obje...
https://redmine.ruby-lang.org/issues/9621
2014-03-11T14:14:22Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r45308</p>
<p>See also <a href="https://github.com/ruby/ruby/pull/562" class="external">https://github.com/ruby/ruby/pull/562</a></p>
Backport200 - Backport #9466 (Closed): backport r44758, r44759 and r44760 (preserve class name/me...
https://redmine.ruby-lang.org/issues/9466
2014-01-30T15:21:33Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>I didn't confirm it is required on 2_0_0 yet. Just for memorandum.</p>
Backport200 - Backport #9465 (Closed): backport r44756 (support GNU make on FreeBSD/DragonflyBSD)
https://redmine.ruby-lang.org/issues/9465
2014-01-30T15:17:02Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>see <a href="https://github.com/sstephenson/ruby-build/issues/496" class="external">https://github.com/sstephenson/ruby-build/issues/496</a></p>
Backport200 - Backport #9460 (Closed): backport r44402 (Declare `OP_MSIE_SSLV2_RSA_PADDING` only ...
https://redmine.ruby-lang.org/issues/9460
2014-01-29T09:04:15Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>see. <a href="https://github.com/ruby/ruby/pull/488" class="external">https://github.com/ruby/ruby/pull/488</a> and [Backport <a class="issue tracker-4 status-5 priority-4 priority-default closed" title="Backport: backport r44402 (Closed)" href="https://redmine.ruby-lang.org/issues/9301">#9301</a>]</p>
Ruby master - Feature #9147 (Closed): CSV.new option skip_lines should escape String before conve...
https://redmine.ruby-lang.org/issues/9147
2013-11-24T23:41:59Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>After r43823, the following script ignore all lines.</p>
<p>== test_csv.rb ==</p>
<pre><code>require "csv"
csv = CSV.new(<<-EOL, skip_lines: ".")
1,foo
.2,bar
3,baz
EOL
p csv.each.to_a # => []
</code></pre>
<p>I think String value for skip_lines option should be escaped before convert to Regexp.</p>
<pre><code>diff --git a/lib/csv.rb b/lib/csv.rb
index a4d8e3d..3e067f2 100644
--- a/lib/csv.rb
+++ b/lib/csv.rb
@@ -2127,7 +2127,7 @@ class CSV
# See also CSV.new
def init_comments(options)
@skip_lines = options.delete(:skip_lines)
- @skip_lines = Regexp.new(@skip_lines) if @skip_lines.is_a? String
+ @skip_lines = Regexp.new(Regexp.escape(@skip_lines)) if @skip_lines.is_a? String
if @skip_lines and not @skip_lines.respond_to?(:match)
raise ArgumentError, ":skip_lines has to respond to matches"
end
</code></pre>
Backport200 - Backport #9033 (Closed): backport r43328 (fix memory leak at a non-absolute home ex...
https://redmine.ruby-lang.org/issues/9033
2013-10-17T23:41:14Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8969 (Closed): backport r43092 (call gc_rest_sweep on GC.disable)
https://redmine.ruby-lang.org/issues/8969
2013-09-30T23:57:30Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r43092 は 2.0.0 でも必要でしょうか? 少なくとも無害でしょうか。<br>
なんとなく GC を止めているところで LazySweep に絡んでいそうな問題の回避策になる気もするので、無害そうなら入れてみようかと思います。</p>
Backport200 - Backport #8927 (Closed): backport r42980 (fix source_location of lambda)
https://redmine.ruby-lang.org/issues/8927
2013-09-20T02:13:16Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>lambda/->() で作った Proc の source_location の行番号をブロック先頭の位置に修正。<br>
1.9.3 との互換性のため 2.0.0 も修正したほうが良いかと思います。</p>
Backport200 - Backport #8926 (Rejected): Backport r42977 (fix an accidental bug at r16716)
https://redmine.ruby-lang.org/issues/8926
2013-09-20T02:10:54Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8902 (Closed): backport r42782(super(*args) in define_method)
https://redmine.ruby-lang.org/issues/8902
2013-09-13T01:51:06Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>[ruby-list:49575] で報告された不具合修正です。</p>
Backport200 - Backport #8900 (Closed): Update RubyGems 2.0.8 on 2.0.0
https://redmine.ruby-lang.org/issues/8900
2013-09-12T12:06:40Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Hello, Eric (drbrain)</p>
<p>Could you please provide a patch for upgrade RubyGems on ruby_2_0_0 to 2.0.8?</p>
<p>Thank you in advance.</p>
Backport200 - Backport #8873 (Closed): backport r42867 (fatal error class name)
https://redmine.ruby-lang.org/issues/8873
2013-09-08T00:22:10Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r42867 の fatal の例外クラス名の修正は 2.0.0 にもバックポートが必要でした。</p>
Backport200 - Backport #8633 (Closed): backport r41853 (fix File.chmod error in :verbose mode)
https://redmine.ruby-lang.org/issues/8633
2013-07-13T23:29:15Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8604 (Closed): backport r41781 (fix unexpected character class range in F...
https://redmine.ruby-lang.org/issues/8604
2013-07-05T20:23:40Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8562 (Rejected): backport r41560 (fix potential segv in etc extlib)
https://redmine.ruby-lang.org/issues/8562
2013-06-22T23:08:40Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8561 (Closed): r41558 (use PRIsVALUE in format string in etc extlib)
https://redmine.ruby-lang.org/issues/8561
2013-06-22T23:07:53Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8558 (Closed): backport r41076 (update to RubyGems 2.0.3)
https://redmine.ruby-lang.org/issues/8558
2013-06-22T00:53:48Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Update to RubyGems 2.0.3</p>
Backport200 - Backport #8533 (Closed): Fix DESTDIR related 'make' issue when DESTDIR specified
https://redmine.ruby-lang.org/issues/8533
2013-06-17T01:42:03Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>See the pull request.</p>
<p><a href="https://github.com/ruby/ruby/pull/327" class="external">https://github.com/ruby/ruby/pull/327</a></p>
Backport200 - Backport #8504 (Closed): backport r41175 (clear inline cache when included Module h...
https://redmine.ruby-lang.org/issues/8504
2013-06-09T01:00:26Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8451 (Closed): backport r40925 (bug fix of File.fnmatch with multi-byte c...
https://redmine.ruby-lang.org/issues/8451
2013-05-25T22:37:27Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8450 (Closed): backport r40920 (string.c (rb_str_quote_unprintable): chec...
https://redmine.ruby-lang.org/issues/8450
2013-05-25T21:51:58Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8448 (Closed): backport r40915 (fix a SEGV when Module#private_constant w...
https://redmine.ruby-lang.org/issues/8448
2013-05-25T01:15:19Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8440 (Closed): backport r40900 (fix invalid read by index underflow.)
https://redmine.ruby-lang.org/issues/8440
2013-05-23T23:14:32Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>よく確認していませんがバックポートが必要な気がします。<br>
なお r40900 だけだと conflict してすんなり merge できない模様。</p>
Backport200 - Backport #8424 (Closed): backport r40806 (fix infinite loop when stack overflow wit...
https://redmine.ruby-lang.org/issues/8424
2013-05-19T01:54:36Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r40806 で TH_PUSH_TAG() で push した rb_vm_tag の途中でスタックがあふれた時に無限ループに陥るという現象が修正されているのでバックポートが必要です。 1.9.3 も?<br>
なお conflict を避けるために r40791 も必要と思われます。</p>
Backport200 - Backport #8413 (Closed): backport r40783 (partially, fix a typo of win32/Makefile.s...
https://redmine.ruby-lang.org/issues/8413
2013-05-16T23:04:35Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>忘れないようにチケット化</p>
<p>r40783 のうち config.status の生成での変数名の typo は 2.0.0 にも存在しているので、その部分は明かにバックポートしたほうが良さそうです。<br>
前半の hunk は verconf.h の生成にまつわる一連の変更の一部なので別途。</p>
Backport200 - Backport #8403 (Closed): backport r39491 (lazily check credential permission)
https://redmine.ruby-lang.org/issues/8403
2013-05-14T20:19:10Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r39491 fixed a RubyGems issue (<a href="https://github.com/rubygems/rubygems/pull/511" class="external">https://github.com/rubygems/rubygems/pull/511</a>).<br>
I'll backport it for the coming release.</p>
Backport200 - Backport #8380 (Closed): backport r40208 (refactor overflow check of integer multip...
https://redmine.ruby-lang.org/issues/8380
2013-05-08T01:17:15Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>rubyci.org にて OS X Mountain Lion(m64-o0) の時に TestThread#test_stack_size がタイムアウトするという現象が起きており、<br>
r40600 で待ち時間を 10sec -> 50sec に伸ばしたのですが、それでもタイムアウトしていました。</p>
<p><a href="http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-2.0.0-m64-o0/log/20130507T133423Z.log.html.gz" class="external">http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-2.0.0-m64-o0/log/20130507T133423Z.log.html.gz</a></p>
<p>手元の類似の環境(x86_64-darwin12.3.0)で同じ configure オプションで追試したものの再現には至りませんでした。</p>
<p>rubyci のログを調べてみたところ trunk でも同じようなエラーは起きていて、<br>
<a href="http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-trunk-m64-o0/log/20130409T131941Z.diff.html.gz" class="external">http://a.mrkn.jp/~mrkn/chkbuild/mountain_lion/ruby-trunk-m64-o0/log/20130409T131941Z.diff.html.gz</a><br>
で直ったようです(znz さんに調査して頂きました。ありがとうございます)。</p>
<p>この間 r40204 から r40208 で、関係しそうなのは r40208 くらいで、これもどう関係するのかはっきりしませんが、バックポートして様子をみてみたいと思います。</p>
Backport200 - Backport #8360 (Closed): backport r39939 (fix SEGV when Thread#join timeout argumen...
https://redmine.ruby-lang.org/issues/8360
2013-05-02T23:39:01Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r39939 Thread#join のタイムアウト値に Float::INFINITY を渡した時に SEGV する不具合が修正されていました。</p>
Backport200 - Backport #8334 (Closed): backport r40478 (fix a compilation error on platform seek...
https://redmine.ruby-lang.org/issues/8334
2013-04-26T23:56:28Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>seekdir(3) がない環境では r40478 が必要です。</p>
Backport200 - Backport #8333 (Rejected): backport r40479 (fix a compilation error on platform see...
https://redmine.ruby-lang.org/issues/8333
2013-04-26T23:54:57Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>seekdir(3) がない環境では r40479 が必要です。</p>
Backport200 - Backport #8332 (Closed): backport r40476 (fix compilation error on cross compile fo...
https://redmine.ruby-lang.org/issues/8332
2013-04-26T23:48:17Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>手元で再現させていませんが IS_STACK_DIR_UPPER() は(プラットフォームによっては) STACK_GROW_DIR_DETECTION による変数宣言が必要なので r40476 の必要性は自明と思います。</p>
Backport200 - Backport #8311 (Closed): backport r40182 (fix a curses test failure with EIO)
https://redmine.ruby-lang.org/issues/8311
2013-04-23T10:13:31Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>rubyci でエラーになっているのが直るはず。</p>
Backport200 - Backport #8260 (Closed): backport r40260 (non-symbol key is not a keyword argument)
https://redmine.ruby-lang.org/issues/8260
2013-04-12T20:46:49Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>It is a bug fix about keyword arguments.</p>
Ruby master - Bug #8166 (Rejected): Since r39628 rspec-mock's and_call_original fail with SystemS...
https://redmine.ruby-lang.org/issues/8166
2013-03-27T02:47:35Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Hello,</p>
<p>By r39628 [Feature 8035], Module#ancestors for a singleton class contains singleton class itself.<br>
It introduce a compatibility problem with rspec-mock's RSpec::Mocks::MessageExpectation#and_call_original.</p>
<p>and_call_original uses Module#ancestors to find the original method overridden by a singleton method. Because ancestors contains singleton class itself, `original_method' return stub method and fall into infinite recursive call.</p>
<p>I think hiding singleton class from ancestors is better even when a modules is pretended.</p>
Backport200 - Backport #8141 (Closed): backport r39856
https://redmine.ruby-lang.org/issues/8141
2013-03-22T01:20:47Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r39856 fixes a potential memory leak.</p>
Backport200 - Backport #8118 (Closed): backport r39806
https://redmine.ruby-lang.org/issues/8118
2013-03-19T01:41:08Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8068 (Closed): backport r39677
https://redmine.ruby-lang.org/issues/8068
2013-03-10T22:57:14Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
Backport200 - Backport #8057 (Closed): backport r39353.
https://redmine.ruby-lang.org/issues/8057
2013-03-09T21:21:34Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r39353 fixes potential problem.</p>
Backport200 - Backport #8033 (Closed): backport r39614
https://redmine.ruby-lang.org/issues/8033
2013-03-06T22:09:11Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>2.0.0 で必要か調べます。</p>
<p>ref. <a href="https://twitter.com/mrkn/status/309209790284984320" class="external">https://twitter.com/mrkn/status/309209790284984320</a><br>
"--with-rubylibprefix=/usr/lib64/ruby-dbg すると verconf.h の RUBY_LIB_PREFIX が壊れます"</p>
Backport200 - Backport #8032 (Closed): backport r39297
https://redmine.ruby-lang.org/issues/8032
2013-03-06T21:34:37Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r39297 seems necessary to make snapshot.</p>
Backport200 - Backport #8011 (Closed): backport r39329
https://redmine.ruby-lang.org/issues/8011
2013-03-05T00:48:46Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>It fixed unexpected warnings with Enumerator::Lazy#zip, #take, #drop, #drop_while.</p>
Backport200 - Backport #8007 (Closed): backport r39282
https://redmine.ruby-lang.org/issues/8007
2013-03-03T02:44:08Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>r39282 seems fix a potential bug.</p>
Backport200 - Backport #7826 (Closed): test_setsid rarely fails with Errno::ESRCH at Process.gets...
https://redmine.ruby-lang.org/issues/7826
2013-02-11T21:59:59Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>I've just encountered the following fault in make test-all.</p>
<p>[ 8077/13116] TestProcess#test_setsid = 0.06 s<br>
2) Error:<br>
test_setsid(TestProcess):<br>
Errno::ESRCH: No such process<br>
/Users/nagachika/opt/ruby-trunk/src/ruby/test/ruby/test_process.rb:1592:in <code>getsid' /Users/nagachika/opt/ruby-trunk/src/ruby/test/ruby/test_process.rb:1592:in </code>block in test_setsid'<br>
/Users/nagachika/opt/ruby-trunk/src/ruby/test/ruby/test_process.rb:1581:in <code>popen' /Users/nagachika/opt/ruby-trunk/src/ruby/test/ruby/test_process.rb:1581:in </code>test_setsid'</p>
<p>I think child process could terminate before calling Process.getsid for its pid.<br>
how about the following patch? Process.kill in in ensure-clause guarantee the child process will be terminated.</p>
<p>diff --git a/test/ruby/test_process.rb b/test/ruby/test_process.rb<br>
index 96335c2..3a69580 100644<br>
--- a/test/ruby/test_process.rb<br>
+++ b/test/ruby/test_process.rb<br>
@@ -1583,6 +1583,7 @@ class TestProcess < Test::Unit::TestCase<br>
newsid = Process.setsid<br>
Marshal.dump(newsid, STDOUT)<br>
STDOUT.flush</p>
<ul>
<li>sleep<br>
EOS<br>
begin<br>
# test Process.getsid() w/o arg</li>
</ul>
Ruby master - Bug #7570 (Closed): rb_fatal() in Fiber don't terminate process
https://redmine.ruby-lang.org/issues/7570
2012-12-16T02:01:46Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>rb_fatal() (C function) should terminate whole script.</p>
<p>Thread.start{<br>
rb_fatal() # a extension library method calling rb_fatal()<br>
}.resume<br>
p :ng # => never reached here</p>
<p>But rb_fatal() inside Fiber could be ignored.</p>
<p>Fiber.start{<br>
rb_fatal()<br>
}.resume<br>
p :ng # => reached here!</p>
<p>I think it's because TAG_FATAL is ignored in rb_vm_make_jump_tag_but_local_jump().<br>
I'll attach a patch with a testcase.</p>
Ruby master - Feature #7075 (Rejected): const_get でトップレベルの定数を参照する時に警告
https://redmine.ruby-lang.org/issues/7075
2012-09-27T13:51:22Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>class C; end<br>
A = 42<br>
C::A # => warning: toplevel constant A referenced by C::A<br>
C.const_get(:A)</p>
<p>のように C::A でトップレベルの(Object直下の)定数を参照する時には警告メッセージが<br>
出力されますが、Module#const_get で参照する時は警告が出力されません。<br>
同じように警告が出たほうがよいと考えますがどうでしょう。</p>
Ruby master - Bug #6660 (Closed): prepend したクラスの instance_methods(false)が空になる
https://redmine.ruby-lang.org/issues/6660
2012-06-28T03:42:45Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Module#prepend を実行したクラスの instance_methods(false)を実行すると結果が常に空になってしまうようです。</p>
<p>パッチを添付します。</p>
Ruby master - Bug #6428 (Closed): lazy版take/dropに2度forceを呼んだ時の挙動
https://redmine.ruby-lang.org/issues/6428
2012-05-13T01:52:17Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>Enumerator::Lazy#take が返す Enumerator::Lazy に繰り返し force/to_a メソッドを呼ぶと、<br>
2度目以降は全ての要素を返しています。</p>
<p>$ cat lazy_take_recycle.rb<br>
lazy_take = (1..5).lazy.take(3)</p>
<p>p lazy_take.force<br>
p lazy_take.force</p>
<p>$ ruby lazy_take_recycle.rb<br>
[1, 2, 3]<br>
[1, 2, 3, 4, 5]</p>
<p>同じ Enumerator::Lazy に force を複数回呼ぶのがよい使いかたではないのかもしれませんが、<br>
なんとなく何度呼んでも先頭の要素を返してくれるのが嬉しいのではないかと思います。<br>
2度目以降も同じ個数になるようにするパッチを添付します。<br>
ただし実用的なユースケースがあるわけではありません。</p>
Ruby master - Bug #6382 (Closed): test_tracing_with_set_trace_func で RuntimeError "continuation c...
https://redmine.ruby-lang.org/issues/6382
2012-04-30T23:04:49Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>make test-all を -j2 オプションつきで実行しているとごく稀に<br>
test_tracing_with_set_trace_func で "continuation called across threads" という RuntimeError 例外が発生していました。</p>
<p>set_trace_func に設定した lambda から Continuation を呼んでいて、別 Thread がそれを呼んでしまっていたようです。<br>
このテストは r32597 で [Feature <a class="issue tracker-2 status-5 priority-4 priority-default closed" title="Feature: Tracing cannot be re-enabled after callcc [patch] (Closed)" href="https://redmine.ruby-lang.org/issues/4347">#4347</a>] のために追加されたもので、別 Thread からの呼び出しについては元々特に考慮していないようでしたので、呼び出したスレッドをチェックするような変更をすればいいと思います。</p>
<p>diff --git a/test/ruby/test_continuation.rb b/test/ruby/test_continuation.rb<br>
index 64390d8..5e5b78c 100644<br>
--- a/test/ruby/test_continuation.rb<br>
+++ b/test/ruby/test_continuation.rb<br>
@@ -78,10 +78,13 @@ class TestContinuation < Test::Unit::TestCase<br>
end</p>
<p>def tracing_with_set_trace_func</p>
<ul>
<li>orig_thread = Thread.current<br>
cont = nil<br>
func = lambda do |*args|</li>
</ul>
<ul>
<li>
<pre><code> @memo += 1
</code></pre>
</li>
<li>
<pre><code> cont.call(nil)
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> if orig_thread == Thread.current
</code></pre>
</li>
<li>
<pre><code> @memo += 1
</code></pre>
</li>
<li>
<pre><code> cont.call(nil)
</code></pre>
</li>
<li>
<pre><code> end
</code></pre>
end<br>
cont = callcc { |cc| cc }<br>
if cont</li>
</ul>
<p>稀にというか実際には一度しか発生していないので効果は確認できていないのですが、<br>
エラーにはなってないので入れてしまいます。</p>
Ruby master - Bug #5993 (Closed): Thread.new{ Fiber.new { Thread.exit }.resume }.join で例外
https://redmine.ruby-lang.org/issues/5993
2012-02-10T01:59:08Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>以下のように Fiber 内で Thread.exit するとメッセージが空の RuntimeError が発生します。</p>
<p>Thread.new{ Fiber.new { Thread.exit }.resume }.join #=> RuntimeError:</p>
<p>rb_fiber_start() で Thread.exit 時の TAG_FATAL での TAG_JUMP を想定していないためだと思います。とりあえず以下のようにすると例外にならなくなります。<br>
あと th->errinfo は空を Qnil としているのに th->thrown_errinfo は 0 (Qfalse)を空であることを示すのに使っているので、その食い違いで thrown_errinfo に Qnil を入れてしまっていた(rb_vm_make_jump_tag_but_local_jump() の結果が Qnil の時)のが原因のようなので、そちらをなんとかすべきかもしれません。全体的に thrown_errinfo も空を意味するために Qnil を使うようにそろえるとか?</p>
<p>--- a/cont.c<br>
+++ b/cont.c<br>
@@ -1152,6 +1152,9 @@ rb_fiber_start(void)<br>
if (state == TAG_RAISE) {<br>
th->thrown_errinfo = th->errinfo;<br>
}</p>
<ul>
<li>
<pre><code> else if (state == TAG_FATAL && th->errinfo == INT2FIX(TAG_FATAL)) {
</code></pre>
</li>
<li>
<pre><code> /* terminating */
</code></pre>
</li>
<li>
<pre><code> }
else {
th->thrown_errinfo =
rb_vm_make_jump_tag_but_local_jump(state, th->errinfo);
</code></pre>
</li>
</ul>
Ruby master - Feature #5785 (Closed): Readline に pre_input_hook, insert_text, redisplay を追加
https://redmine.ruby-lang.org/issues/5785
2011-12-21T18:39:30Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>拡張ライブラリ readline で補完時の処理をカスタマイズするため rl_pre_input_hook, rl_insert_text, rl_redisplay をサポートして欲しいです。<br>
叩き台としてパッチを添付します。</p>
Ruby master - Feature #5784 (Closed): Readline.special_prefixes の追加
https://redmine.ruby-lang.org/issues/5784
2011-12-21T18:39:10Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>拡張ライブラリ readline で rl_special_prefixes のセットをサポートして欲しいです。<br>
叩き台としてパッチを添付します。</p>
Ruby master - Bug #5343 (Closed): Unexpected blocking behavior when interrupt Socket#accept
https://redmine.ruby-lang.org/issues/5343
2011-09-20T14:48:13Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>In CentOS release 5.6 (Kernel: 2.6.18-238.12.1.el5, glibc 2.5),<br>
the following sample script rarely (about once every 1000) blocks at Thread#join with 1.9.3-head.</p>
<p>require "socket"<br>
require "thread"</p>
<p>queue = Queue.new</p>
<p>th = Thread.start {<br>
s = TCPServer.new(10000)<br>
queue.push(nil)<br>
cli = s.accept<br>
}</p>
<p>queue.pop<br>
th.kill.join</p>
<p>Backtrace:<br>
thread-1:<br>
#0 0x0000003a3500aee9 in pthread_cond_wait@@GLIBC_2.3.2 ()<br>
from /lib64/libpthread.so.0<br>
#1 0x000000000052d81b in native_cond_wait (th=0x19551550, timeout_tv=0x0)<br>
at ../ruby-1.9.3/thread_pthread.c:307<br>
#2 native_sleep (th=0x19551550, timeout_tv=0x0)<br>
at ../ruby-1.9.3/thread_pthread.c:908<br>
#3 0x000000000052f9ab in sleep_forever (th=0x19551550, deadlockable=1)<br>
at ../ruby-1.9.3/thread.c:855<br>
#4 0x000000000052fa4d in thread_join_sleep (arg=140733838958496)<br>
at ../ruby-1.9.3/thread.c:688<br>
#5 0x0000000000417abb in rb_ensure (b_proc=0x52fa00 <thread_join_sleep>,<br>
data1=140733838958496, e_proc=0x5288e0 <remove_from_join_list>,<br>
data2=140733838958496) at ../ruby-1.9.3/eval.c:736<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed behind-schedule" title="Bug: sprintf() of %f on Windows(MSVCRT) (Closed)" href="https://redmine.ruby-lang.org/issues/6">#6</a> 0x000000000052a78e in thread_join (argc=,<br>
argv=, self=)<br>
at ../ruby-1.9.3/thread.c:721<br>
#7 thread_join_m (argc=, argv=,<br>
self=) at ../ruby-1.9.3/thread.c:802<br>
#8 0x0000000000524b0d in vm_call_cfunc (th=0x19551550, cfp=0x2b38cc37df08,<br>
num=, blockptr=,<br>
flag=, id=, me=0x196663c0,<br>
recv=427644560) at ../ruby-1.9.3/vm_insnhelper.c:404<br>
#9 vm_call_method (th=0x19551550, cfp=0x2b38cc37df08,<br>
num=, blockptr=,<br>
flag=, id=, me=0x196663c0,<br>
recv=427644560) at ../ruby-1.9.3/vm_insnhelper.c:530<br>
#10 0x000000000051908d in vm_exec_core (th=0x19551550,<br>
initial=) at ../ruby-1.9.3/insns.def:1015<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: prelude.c compilation problem on mswin32 (Closed)" href="https://redmine.ruby-lang.org/issues/11">#11</a> 0x000000000051ed7e in vm_exec (th=0x19551550) at ../ruby-1.9.3/vm.c:1220<br>
#12 0x0000000000525f9f in rb_iseq_eval_main (iseqval=427473840)<br>
at ../ruby-1.9.3/vm.c:1461<br>
#13 0x0000000000414c22 in ruby_exec_internal (n=0x197abbb0)<br>
at ../ruby-1.9.3/eval.c:204<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: test issue for ruby-1.9 (Closed)" href="https://redmine.ruby-lang.org/issues/14">#14</a> 0x00000000004172d4 in ruby_exec_node (n=)<br>
at ../ruby-1.9.3/eval.c:251<br>
#15 ruby_run_node (n=) at ../ruby-1.9.3/eval.c:244<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: example issue for ruby-1.8 (Closed)" href="https://redmine.ruby-lang.org/issues/16">#16</a> 0x0000000000414689 in main (argc=2, argv=0x7fff267aa588)<br>
at ../ruby-1.9.3/main.c:38</p>
<p>thread-2:<br>
#0 0x0000003a344cb696 in poll () from /lib64/libc.so.6<br>
#1 0x00000000005301ba in ppoll (fd=,<br>
events=, tv=0x0) at ../ruby-1.9.3/thread.c:2820<br>
#2 rb_wait_for_single_fd (fd=,<br>
events=, tv=0x0) at ../ruby-1.9.3/thread.c:2849<br>
#3 0x000000000053052c in rb_thread_wait_fd_rw (fd=5)<br>
at ../ruby-1.9.3/thread.c:2686<br>
#4 rb_thread_wait_fd (fd=5) at ../ruby-1.9.3/thread.c:2699<br>
#5 0x00002aaaab0b7b6f in rsock_s_accept (klass=427743720, fd=5,<br>
sockaddr=, len=0x40473a3c)<br>
at ../../../ruby-1.9.3/ext/socket/init.c:499<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed behind-schedule" title="Bug: sprintf() of %f on Windows(MSVCRT) (Closed)" href="https://redmine.ruby-lang.org/issues/6">#6</a> 0x00002aaaab0c3310 in tcp_accept (sock=)<br>
at ../../../ruby-1.9.3/ext/socket/tcpserver.c:55<br>
#7 0x0000000000524b0d in vm_call_cfunc (th=0x197ffe90, cfp=0x2aaaab3d3f08,<br>
num=, blockptr=,<br>
flag=, id=, me=0x1980ba70,<br>
recv=427644480) at ../ruby-1.9.3/vm_insnhelper.c:404<br>
#8 vm_call_method (th=0x197ffe90, cfp=0x2aaaab3d3f08,<br>
num=, blockptr=,<br>
flag=, id=, me=0x1980ba70,<br>
recv=427644480) at ../ruby-1.9.3/vm_insnhelper.c:530<br>
#9 0x000000000051908d in vm_exec_core (th=0x197ffe90,<br>
initial=) at ../ruby-1.9.3/insns.def:1015<br>
#10 0x000000000051ed7e in vm_exec (th=0x197ffe90) at ../ruby-1.9.3/vm.c:1220<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: prelude.c compilation problem on mswin32 (Closed)" href="https://redmine.ruby-lang.org/issues/11">#11</a> 0x000000000051fad5 in invoke_block_from_c (th=0x197ffe90,<br>
block=, self=, argc=0,<br>
argv=, blockptr=, cref=0x0)<br>
at ../ruby-1.9.3/vm.c:624<br>
#12 0x000000000052026f in rb_vm_invoke_proc (th=0x197ffe90, proc=0x196d72a0,<br>
self=425420560, argc=0, argv=0x197d56c8, blockptr=0x0)<br>
at ../ruby-1.9.3/vm.c:670<br>
#13 0x000000000052f5c1 in thread_start_func_2 (th=0x197ffe90,<br>
stack_start=) at ../ruby-1.9.3/thread.c:453<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: test issue for ruby-1.9 (Closed)" href="https://redmine.ruby-lang.org/issues/14">#14</a> 0x000000000052f75e in thread_start_func_1 (th_ptr=0x197ffe90)<br>
at ../ruby-1.9.3/thread_pthread.c:656<br>
#15 0x0000003a3500673d in start_thread () from /lib64/libpthread.so.0<br>
<a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: example issue for ruby-1.8 (Closed)" href="https://redmine.ruby-lang.org/issues/16">#16</a> 0x0000003a344d44bd in clone () from /lib64/libc.so.6</p>
Ruby master - Bug #5139 (Closed): sigsegv のスタックオーバフロー
https://redmine.ruby-lang.org/issues/5139
2011-08-02T09:57:07Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>現在の trunk が Linux で test_segv_test(TestRubyOptions) が Failure になります。</p>
<p>$ ruby -e 'Process.kill :SEGV, $$'</p>
<p>のように実行すると表示されるはずのバックトレースや LOADED FEATURES の情報が表示されないためです。</p>
<p>おそらく r32751 からだと思うのですが、手元の環境(Ubuntu 10.4, Kernel 2.6.32-33-generic, gcc 4.4.3) では<br>
どうやら sigsegv() から呼ばれている rb_vm_bugreport() で sigaltstack で設定したシグナルハンドラ用スタックを<br>
オーバフローして、シグナルハンドラ内で再度 SEGV していると思います。</p>
<p>以下 gdb での実行の抜粋<br>
(gdb) run -e 'Process.kill 11, $$'<br>
Program received signal SIGSEGV, Segmentation fault.<br>
0x0012d422 in __kernel_vsyscall ()<br>
(gdb) c<br>
Continuing.<br>
-e:1: [BUG] Segmentation fault<br>
ruby 1.9.4dev (2011-08-01 trunk 32793) [i686-linux]<br>
------------ snip -----------</p>
<ul>
<li>Loaded features:</li>
</ul>
<p>Program received signal SIGSEGV, Segmentation fault.<br>
0x08150864 in rb_vm_bugreport () at ../ruby/vm_dump.c:834<br>
834 for (i=0; i<RARRAY_LEN(vm->loaded_features); i++) {<br>
(gdb) p ruby_current_thread->altstack<br>
$5 = (void *) 0x8221ab8<br>
(gdb) p $esp<br>
$6 = (void *) 0x8220560<br>
(gdb) p $esp - ruby_current_thread->altstack<br>
$7 = -5464<br>
(gdb) up<br>
#1 0x08187095 in report_bug (file=0x82480b0 "-e", line=1,<br>
fmt=0x81c3bcb "Segmentation fault", args=0x8222714 "\263\063")<br>
at ../ruby/error.c:265<br>
265 rb_vm_bugreport();<br>
(gdb) p (char *)$esp - (char *)ruby_current_thread->altstack<br>
$15 = -5144<br>
(gdb) up<br>
#2 0x08187121 in rb_bug (fmt=0x81c3bcb "Segmentation fault")<br>
at ../ruby/error.c:284<br>
284 report_bug(file, line, fmt, args);<br>
(gdb) p (char *)$esp - (char *)ruby_current_thread->altstack<br>
$16 = 3112</p>
<p>$esp と ruby_current_thread->altstack の関係をみてオーバフローではないかと思ったのですがどうでしょう。<br>
なお sigaltstack に渡しているスタックサイズは 4096 です。</p>
Ruby master - Bug #5104 (Closed): test_rinda.rb の GC保護もれ
https://redmine.ruby-lang.org/issues/5104
2011-07-27T12:34:52Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>make test-all TESTS="--gc-stress -vq rinda/test_rinda.rb -n test_remote_array_and_hash"<br>
と GC.stress = true で rinda のテストを通すと環境によって以下のように失敗します。</p>
<p>Rinda::TupleSpaceProxyTest#test_remote_array_and_hash = 4.62 s = E</p>
<p>Finished tests in 4.626161s, 0.2162 tests/s, 0.0000 assertions/s.</p>
<ol>
<li>Error:<br>
test_remote_array_and_hash(Rinda::TupleSpaceProxyTest):<br>
NoMethodError: undefined method <code>size' for nil:NilClass /home/chikanaga/opt/ruby-trunk/src/ruby/test/rinda/test_rinda.rb:542:in </code>test_remote_array_and_hash'<br>
../ruby/test/runner.rb:15:in `'</li>
</ol>
<p>1 tests, 0 assertions, 0 failures, 1 errors, 0 skips</p>
<p>これはおそらくテストが悪くて、DRbObject は渡されたオブジェクトへの参照を保持せず object_id だけ持つので<br>
参照されるオブジェクトが GC されないようにしないといけないと思います。どうでしょうか。<br>
以下のようにローカル変数に格納して保護すれば OK になりました。</p>
<p>diff --git a/test/rinda/test_rinda.rb b/test/rinda/test_rinda.rb<br>
index b69b63a..f113777 100644<br>
--- a/test/rinda/test_rinda.rb<br>
+++ b/test/rinda/test_rinda.rb<br>
@@ -539,9 +539,11 @@ class TupleSpaceProxyTest < Test::Unit::TestCase<br>
end</p>
<p>def test_remote_array_and_hash</p>
<ul>
<li>@ts.write(DRbObject.new([1, 2, 3]))</li>
</ul>
<ul>
<li>ary = [1, 2, 3]</li>
<li>@ts.write(DRbObject.new(ary))<br>
assert_equal([1, 2, 3], @ts.take([1, 2, 3], 0))</li>
</ul>
<ul>
<li>@ts.write(DRbObject.new({'head' => 1, 'tail' => 2}))</li>
</ul>
<ul>
<li>hsh = {'head' => 1, 'tail' => 2}</li>
<li>@ts.write(DRbObject.new(hsh))<br>
assert_equal({'head' => 1, 'tail' => 2},<br>
@ts.take({'head' => 1, 'tail' => 2}, 0))<br>
end</li>
</ul>
Ruby master - Bug #4855 (Closed): rb_context_t::saved_thread::machine_stack_(start|end) should be...
https://redmine.ruby-lang.org/issues/4855
2011-06-08T23:58:56Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>近永と申します。英語で説明するのが難しいのでruby-devで失礼します。</p>
<p><a class="issue tracker-1 status-5 priority-4 priority-default closed" title="Bug: meke test-all TESTS="-j2 test/ruby/test_fiber.rb" on Mac crash sometimes (Closed)" href="https://redmine.ruby-lang.org/issues/4827">#4827</a> の調査の途上で再現スクリプトを valgrind つきで実行すると以下のように<br>
不正な領域を machine stack として mark しようとしているようなメッセージが出ました。<br>
(ただし FIBER_USE_NATIVE=0 にした場合です)。</p>
<p>==27771== Invalid read of size 4<br>
==27771== at 0x809AC1E: mark_locations_array (gc.c:1373)<br>
==27771== by 0x809ACED: gc_mark_locations (gc.c:1389)<br>
==27771== by 0x809D018: rb_gc_mark_machine_stack (gc.c:2498)<br>
==27771== by 0x819684E: rb_thread_mark (vm.c:1700)<br>
==27771== by 0x819FC05: cont_mark (cont.c:141)<br>
==27771== by 0x819FE09: fiber_mark (cont.c:268)<br>
==27771== by 0x809B6FF: gc_mark_children (gc.c:1813)<br>
==27771== by 0x809B27C: gc_mark (gc.c:1605)<br>
==27771== by 0x809B2B6: rb_gc_mark (gc.c:1611)<br>
==27771== by 0x8196790: rb_thread_mark (vm.c:1690)<br>
==27771== by 0x809B6FF: gc_mark_children (gc.c:1813)<br>
==27771== by 0x809B27C: gc_mark (gc.c:1605)<br>
==27771== by 0x809B2B6: rb_gc_mark (gc.c:1611)<br>
==27771== by 0x819620E: vm_mark_each_thread_func (vm.c:1493)<br>
==27771== by 0x8136FD9: st_foreach (st.c:747)<br>
==27771== by 0x819627B: rb_vm_mark (vm.c:1516)<br>
==27771== by 0x809B6FF: gc_mark_children (gc.c:1813)<br>
==27771== by 0x809B27C: gc_mark (gc.c:1605)<br>
==27771== by 0x809B2B6: rb_gc_mark (gc.c:1611)<br>
==27771== by 0x809CC23: gc_marks (gc.c:2423)<br>
==27771== by 0x809CE98: garbage_collect (gc.c:2474)<br>
==27771== by 0x8099C08: garbage_collect_with_gvl (gc.c:689)<br>
==27771== by 0x8099CB6: vm_malloc_prepare (gc.c:719)<br>
==27771== by 0x8099CE9: vm_xmalloc (gc.c:751)<br>
==27771== by 0x8099EBB: ruby_xmalloc2 (gc.c:831)<br>
==27771== by 0x81A005C: cont_save_machine_stack (cont.c:350)<br>
==27771== by 0x81A0E70: fiber_store (cont.c:1187)<br>
==27771== by 0x81A10D5: fiber_switch (cont.c:1277)<br>
==27771== by 0x81A113A: rb_fiber_transfer (cont.c:1292)<br>
==27771== by 0x81A11E4: rb_fiber_yield (cont.c:1311)<br>
==27771== by 0x81A1293: rb_fiber_s_yield (cont.c:1389)<br>
==27771== by 0x8185238: call_cfunc (vm_insnhelper.c:317)<br>
==27771== by 0x8185B7C: vm_call_cfunc (vm_insnhelper.c:404)<br>
==27771== by 0x8186091: vm_call_method (vm_insnhelper.c:526)<br>
==27771== by 0x818A6C7: vm_exec_core (insns.def:1012)<br>
==27771== by 0x8195705: vm_exec (vm.c:1163)<br>
==27771== by 0x8194404: invoke_block_from_c (vm.c:574)<br>
==27771== by 0x81945BE: rb_vm_invoke_proc (vm.c:620)<br>
==27771== by 0x81A0C93: rb_fiber_start (cont.c:1121)<br>
==27771== by 0x808AF19: ruby_exec_internal (eval.c:213)<br>
==27771== by 0x808AFF9: ruby_exec_node (eval.c:260)<br>
==27771== by 0x808AFD3: ruby_run_node (eval.c:253)<br>
==27771== by 0x805B1CD: main (main.c:38)<br>
==27771== Address 0xbed8aa48 is not stack'd, malloc'd or (recently) free'd</p>
<p>これは rb_context_t::saved_thread に thread の情報を格納した後<br>
すぐに machine_stack_(start|end) を 0 クリアせず、そのまま vm stack の確保のために GC が走る<br>
可能性があり、その時に saved_thread->machine_stack_end に保存されているアドレスが<br>
現在のスタック末尾よりも伸びている場合に余分な領域まで mark してしまうようです。<br>
一度は実際にそこまで machine stack が伸長していたわけなので、不正メモリアクセスエラーになる<br>
危険はないかもしれませんが、無駄な mark を省くために修正したいと思います。</p>
<p>そこで saved_thread にコピーする時は常にすぐ machine_stack_(start|end) をクリアするようにしました。<br>
また _<em>ia64 では machine_register_stack</em>(start|end) というメンバもありこれも同様にしてみました。<br>
ただ IA64 環境が使えないので動作は未確認です。</p>
<p>saved_thread.machine_stack_(start|end) の用途については cont.c を読んで以下のように<br>
理解しているのでこれで良いと思っていますが、かなり込み入っているので<br>
ささださんや現在の Fiber 実装された芝さんにチェックしていただきたいと思いパッチ投稿します。</p>
<ul>
<li>
<p>FIBER_USE_NATIVE=0 の時(setjmp/longjmp 利用時)<br>
saved_thread.machine_stack_(start|end) は利用しない。常に 0 で良い。</p>
</li>
<li>
<p>FIBER_USE_NATIVE=1 の時<br>
saved_thread.machine_stack_end は利用しない。常に 0 で良い。<br>
saved_thread.machine_stack_start は Thread の実行中の Fiber でない間は<br>
ucontext_t::uc_stack のスタックを指しておく。<br>
saved_thread に格納した後で 0 クリアしても fiber_setcontext() で改めて<br>
保存されるので大丈夫。</p>
</li>
</ul>
Ruby master - Bug #4558 (Closed): TestSocket#test_closed_read fails after r31230
https://redmine.ruby-lang.org/issues/4558
2011-04-07T00:53:54Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>=begin<br>
After r31230, make test-all reports a failure in test_socket.rb @Mac OS X 10.6.6</p>
<p>% make test-all TESTS=../ruby/test/socket/test_socket.rb<br>
./miniruby -I../ruby/lib -I. -I.ext/common ../ruby/tool/runruby.rb --extout=.ext -- "../ruby/test/runner.rb" --ruby="./miniruby -I../ruby/lib -I. -I.ext/common ../ruby/tool/runruby.rb --extout=.ext --" ../ruby/test/socket/test_socket.rb<br>
Run options: "--ruby=./miniruby -I../ruby/lib -I. -I.ext/common ../ruby/tool/runruby.rb --extout=.ext --"</p>
<a name="Running-tests"></a>
<h1 >Running tests:<a href="#Running-tests" class="wiki-anchor">¶</a></h1>
<p>....F.................</p>
<p>Finished tests in 1.611761s, 13.6497 tests/s, 40.9490 assertions/s.</p>
<ol>
<li>Failure:<br>
test_closed_read(TestSocket) [/ruby/test/socket/test_socket.rb:428]:<br>
<a href="/issues/4390">[ruby-core:35203]</a><br>
[IOError] exception expected, not<br>
Class: <a href="Errno::EBADF" class="external">Errno::EBADF</a><br>
Message: <"Bad file descriptor"><br>
---Backtrace---<br>
/ruby/test/socket/test_socket.rb:422:in <code>readline' /ruby/test/socket/test_socket.rb:422:in </code>block in test_closed_read'</li>
</ol>
<hr>
<p>22 tests, 66 assertions, 1 failures, 0 errors, 0 skips<br>
make: *** [yes-test-all] Error 1</p>
<p>=end</p>
Ruby master - Feature #4468 (Closed): String() should call to_str before to_s
https://redmine.ruby-lang.org/issues/4468
2011-03-05T21:43:14Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>=begin<br>
Integer() と Array() というカーネルメソッドはまず to_int/to_ary という<br>
「暗黙の変換」のためのメソッドを呼び、それが失敗すると to_i/to_a を<br>
呼んで変換するという仕様になっています。</p>
<p>しかし String() は最初から to_s を呼ぶようになっています。<br>
統一感という意味ではまず to_str -> to_s の順に呼ぶことにしたほうが<br>
良いのではないでしょうか。<br>
to_str と to_s が異なる文字列を返すようなケースは思い浮ばないので、<br>
実際にこれで結果が変化することはないのではないかと推測します。<br>
=end</p>
Ruby master - Feature #4362 (Closed): Process.kill should accept -SIGXXX with implicit conversion
https://redmine.ruby-lang.org/issues/4362
2011-02-03T22:43:44Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>=begin<br>
Process.kill の第一引数は Fixnum か Symbol、String でシグナルの種類を指定し、<br>
文字列の時は先頭に - をつけることでプロセスグループへシグナル送信するようになっています。<br>
実際には Fixnum, Symbol, String 以外のオブジェクトを渡すと to_str で文字列への<br>
暗黙の変換が行なわれるようになっているのですが、この時に先頭の - を認識しません。<br>
またシンボルの時も先頭の - が解釈されません。</p>
<blockquote>
<p>Process.kill(:"-SIGTERM", $$)<br>
ArgumentError: unsupported name <code>SIG-SIGTERM' Process.kill(:"-TERM", $$) ArgumentError: unsupported name </code>SIG-TERM'</p>
</blockquote>
<p>マニュアルには特に String 以外の時のことは書かれていませんが、Symbol や暗黙の変換が行なわれた時にも<br>
先頭の - が解釈されるようにしたほうが良いのではないかと思うのですがいかがでしょうか?</p>
<p>diff --git a/signal.c b/signal.c<br>
index 27d90ac..5343108 100644<br>
--- a/signal.c<br>
+++ b/signal.c<br>
@@ -359,6 +359,7 @@ rb_f_kill(int argc, VALUE *argv)<br>
int negative = 0;<br>
int sig;<br>
int i;</p>
<ul>
<li>
<p>volatile VALUE str;<br>
const char *s;</p>
<p>rb_secure(2);<br>
@@ -376,11 +377,11 @@ rb_f_kill(int argc, VALUE *argv)</p>
<p>case T_STRING:<br>
s = RSTRING_PTR(argv[0]);</p>
</li>
<li>
<pre><code> str_signal:
</code></pre>
<p>if (s[0] == '-') {<br>
negative++;<br>
s++;<br>
}</p>
</li>
</ul>
<ul>
<li>
<pre><code> str_signal:
</code></pre>
<p>if (strncmp("SIG", s, 3) == 0)<br>
s += 3;<br>
if((sig = signm2signo(s)) == 0)<br>
@@ -391,9 +392,6 @@ rb_f_kill(int argc, VALUE *argv)<br>
break;</p>
<pre><code> default:
</code></pre>
</li>
<li>
<pre><code> {
</code></pre>
</li>
<li>
<pre><code> VALUE str;
</code></pre>
</li>
<li>
<pre><code> str = rb_check_string_type(argv[0]);
if (!NIL_P(str)) {
s = RSTRING_PTR(str);
</code></pre>
</li>
</ul>
<p>@@ -401,7 +399,6 @@ rb_f_kill(int argc, VALUE *argv)<br>
}<br>
rb_raise(rb_eArgError, "bad signal type %s",<br>
rb_obj_classname(argv[0]));</p>
<ul>
<li>}<br>
break;<br>
}<br>
=end</li>
</ul>
Ruby master - Bug #4287 (Closed): test_europe_lisbon(TestTimeTZ) Failure
https://redmine.ruby-lang.org/issues/4287
2011-01-18T14:09:38Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>=begin<br>
先日(r30550 以降)から Linux 上で make test-all の faiure が 1つ増えています。</p>
<ol>
<li>Failure:<br>
test_europe_lisbon(TestTimeTZ) [/opt/ruby-trunk/src/ruby/test/ruby/test_time_tz.rb:140]:<br>
<"LMT"> expected but was<br>
<"CET">.</li>
</ol>
<p>少し gdb で追いかけてみたところ、なぜか NEGATIVE_TIME_T の定義の有無が変化していて<br>
time_init()<br>
time_init_1()<br>
timelocalw()<br>
localtimew()<br>
guess_local_offset()<br>
で 1515 行目の localtime_with_gmtoff_zone() の呼び出しが有効になっていないので変化しているようです。<br>
=end</p>
Ruby master - Feature #4204 (Closed): IO#advise should raise error for unknown symbol
https://redmine.ruby-lang.org/issues/4204
2010-12-25T23:32:17Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>=begin<br>
r30299 で導入された IO#advise メソッドは、引数に Symbol であれば何でも受け付けて、<br>
対応していない Symbol が渡されても特にエラーにはなりません。</p>
<p>プラットフォームの対応状況の違いで未サポートなものは無言のままで良いと思いますが、<br>
うっかりタイプミスなどで間違った Symbol を渡した時に気が付くことができないので、<br>
IO#advise がどのプラットフォームでも対応していないような Symbol については<br>
例外を発生させるようにならないでしょうか。<br>
=end</p>
Ruby master - Bug #3720 (Closed): test_marshal_dump_extra_iv doesn't check as intended
https://redmine.ruby-lang.org/issues/3720
2010-08-19T19:19:16Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>=begin<br>
test/ruby/test_marshal.rb の test_marshal_dump_extra_iv は<br>
おそらく意図したチェックをしていないと思います。<br>
以下の間違いでないでしょうか。</p>
<a name="Index-testrubytest_marshalrb"></a>
<h1 >Index: test/ruby/test_marshal.rb<a href="#Index-testrubytest_marshalrb" class="wiki-anchor">¶</a></h1>
<p>--- test/ruby/test_marshal.rb (revision 29048)<br>
+++ test/ruby/test_marshal.rb (working copy)<br>
@@ -431,7 +431,7 @@<br>
m = Marshal.dump(o)<br>
}<br>
o2 = Marshal.load(m)</p>
<ul>
<li>assert_equal(STDIN, o.stdin)</li>
</ul>
<ul>
<li>assert_equal(STDIN, o2.stdin)<br>
end</li>
</ul>
<pre><code>def test_marshal_string_encoding
</code></pre>
<p>=end</p>
Ruby master - Bug #3236 (Closed): ISeq.load で [BUG] iseq_set_sequence: ic_index overflow が発生
https://redmine.ruby-lang.org/issues/3236
2010-05-03T00:09:54Z
nagachika (Tomoyuki Chikanaga)
nagachika00@gmail.com
<p>=begin<br>
RubyGems の iseq ライブラリを利用して、定数やインスタンス変数の参照を含むスクリプトをコンパイルしたものを load しようとすると以下のようなメッセージでエラーになります。</p>
<p>$ cat iseq_load.rb<br>
require "iseq"</p>
<p>iseq = ISeq.compile("@a[0]")<br>
puts iseq.disasm<br>
ISeq.load(iseq.to_a)</p>
<p>$ ruby-trunk -v iseq_load.rb<br>
ruby 1.9.2dev (2010-05-02 trunk 27590) [x86_64-darwin10.3.0]<br>
== disasm: <RubyVM::InstructionSequence:@>==========<br>
0000 trace 1 ( 1)<br>
0002 getinstancevariable :@a, <a href="ic:0" class="external">ic:0</a><br>
0005 putobject 0<br>
0007 opt_aref <a href="ic:2" class="external">ic:2</a><br>
0009 leave<br>
iseq_load.rb:5: [BUG] iseq_set_sequence: ic_index overflow: index: 2, size: 0<br>
ruby 1.9.2dev (2010-05-02 trunk 27590) [x86_64-darwin10.3.0]</p>
<h2>-- control frame ----------<br>
c:0004 p:---- s:0011 b:0011 l:000010 d:000010 CFUNC :load<br>
c:0003 p:0075 s:0007 b:0007 l:0014a8 d:000bc0 EVAL iseq_load.rb:5<br>
c:0002 p:---- s:0004 b:0004 l:000003 d:000003 FINISH<br>
c:0001 p:0000 s:0002 b:0002 l:0014a8 d:0014a8 TOP</h2>
<p>-- Ruby level backtrace information ----------------------------------------<br>
iseq_load.rb:5:in <code><main>' iseq_load.rb:5:in </code>load'</p>
<p>-- C level backtrace information -------------------------------------------<br>
0 ruby-trunk 0x0000000100177acb rb_vm_bugreport + 120<br>
1 ruby-trunk 0x0000000100034f90 report_bug + 313<br>
2 ruby-trunk 0x00000001000350b5 rb_bug + 241<br>
3 ruby-trunk 0x000000010014a328 iseq_set_sequence + 2456<br>
4 ruby-trunk 0x0000000100148f1c iseq_setup + 118<br>
5 ruby-trunk 0x00000001001590e5 iseq_build_body + 2250<br>
6 ruby-trunk 0x000000010015989f rb_iseq_build_from_ary + 1789<br>
7 ruby-trunk 0x000000010015bbe3 iseq_load + 1788<br>
8 ruby-trunk 0x000000010015bcb2 rb_iseq_load + 47<br>
9 iseq.bundle 0x0000000100540eb5 iseq_s_load + 53<br>
10 ruby-trunk 0x000000010016b040 call_cfunc + 282<br>
11 ruby-trunk 0x000000010016aea7 vm_call_cfunc + 284<br>
12 ruby-trunk 0x000000010016a07c vm_call_method + 373<br>
13 ruby-trunk 0x0000000100164cae vm_exec_core + 11207<br>
14 ruby-trunk 0x00000001001745e9 vm_exec + 147<br>
15 ruby-trunk 0x0000000100174fca rb_iseq_eval_main + 45<br>
16 ruby-trunk 0x0000000100039cd9 ruby_exec_internal + 193<br>
17 ruby-trunk 0x0000000100039dfd ruby_exec_node + 30<br>
18 ruby-trunk 0x0000000100039dd0 ruby_run_node + 56<br>
19 ruby-trunk 0x0000000100000dcb main + 79<br>
20 ruby-trunk 0x0000000100000d74 start + 52<br>
21 ??? 0x0000000000000003 0x0 + 3</p>
<p>[NOTE]<br>
You may have encountered a bug in the Ruby interpreter or extension libraries.<br>
Bug reports are welcome.<br>
For details: <a href="http://www.ruby-lang.org/bugreport.html" class="external">http://www.ruby-lang.org/bugreport.html</a></p>
<p>配列から iseq を構築する時にインラインキャッシュのサイズ(ic_size)を復元していない為のようです。以下の修正で、make check でエラーが増えないことと、標準添付のライブラリ($prefix/lib/ruby/1.9.1/**/*.rb)が全て ISeq.load できることを確認しました。<br>
ついでに、上記でひっかかっている ic_index と ic_size のチェックには等号が抜けているようでしたのでそれも追加しています。</p>
<a name="Index-compilec"></a>
<h1 >Index: compile.c<a href="#Index-compilec" class="wiki-anchor">¶</a></h1>
<p>--- compile.c (revision 27590)<br>
+++ compile.c (working copy)<br>
@@ -1434,7 +1434,7 @@<br>
{<br>
int ic_index = FIX2INT(operands[j]);<br>
IC ic = &iseq->ic_entries[ic_index];</p>
<ul>
<li>
<pre><code> if (UNLIKELY(ic_index > iseq->ic_size)) {
</code></pre>
</li>
</ul>
<ul>
<li>
<pre><code> if (UNLIKELY(ic_index >= iseq->ic_size)) {
rb_bug("iseq_set_sequence: ic_index overflow: index: %d, size: %d",
ic_index, iseq->ic_size);
}
</code></pre>
</li>
</ul>
<p>@@ -5269,6 +5269,8 @@<br>
break;<br>
case TS_IC:<br>
argv[j] = op;</p>
<ul>
<li>
<pre><code> if (NUM2INT(op) >= iseq->ic_size)
</code></pre>
</li>
<li>
<pre><code> iseq->ic_size = NUM2INT(op) + 1;
break;
case TS_ID:
argv[j] = rb_convert_type(op, T_SYMBOL,
</code></pre>
</li>
</ul>
<p>=end</p>