[#44469] [Ruby 1.9 - Bug #5279][Open] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある — Shota Fukumori <sorah@...>

21 messages 2011/09/06
[#44471] [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある — Shota Fukumori <sorah@...> 2011/09/06

[#44472] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある — "NARUSE, Yui" <naruse@...> 2011/09/06

2011年9月6日11:02 Shota Fukumori <sorah@tubusu.net>:

[#44473] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある — "Shota Fukumori (sora_h)" <sorah@...> 2011/09/06

じゃぁ,大丈夫かな.

[#44474] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある — Kazuhiko <kazuhiko@...> 2011/09/06

On 06/09/2011 06:10, Shota Fukumori (sora_h) wrote:

[#44541] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある — Kazuhiko <kazuhiko@...> 2011/09/24

かずひこです。

[#44549] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある — KOSAKI Motohiro <kosaki.motohiro@...> 2011/09/26

> かずひこです。

[#44491] [Ruby 1.9 - Feature #5314][Open] パッケージマネージャをコアリリースに含めて欲しい — Taro MURAOKA <koron.kaoriya@...>

13 messages 2011/09/13

[#44506] [Ruby 1.9 - Feature #5317][Open] rubyのヘッダファイルを使った拡張を行う際にuid_tの宣言回避をする事が出来ない。 — Yasuhiro Matsumoto <mattn.jp@...>

9 messages 2011/09/13

[#44520] [Ruby 1.9 - Bug #5350][Open] WeakRef で謎の NoMethodError — Makoto Kishimoto <redmine@...>

20 messages 2011/09/21

[#44542] [Ruby 1.9 - Bug #5363][Open] OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation fault が発生する — Hiroshi Yoshida <hexa.diary@...>

8 messages 2011/09/25

[#44546] [Ruby 1.9 - Bug #5368][Open] ensure節でsleepするようなThreadがあるとインタプリタが終了しない — Masaki Matsushita <glass.saga@...>

22 messages 2011/09/26

[ruby-dev:44457] [Ruby 1.9 - Bug #5258] SizedQueueにBug #5195と同様のバグ

From: Tomoyuki Chikanaga <nagachika00@...>
Date: 2011-09-03 11:08:53 UTC
List: ruby-dev #44457
Issue #5258 has been updated by Tomoyuki Chikanaga.

File queue.patch added

別件の修正中にパッチを書いていたのですが、このチケットと同じ問題だと気がつきました。
#5195 のぶんも同じですがパッチを添付します。
wakeup や例外で抜けた時に @waiting に残ってしまうと次の Queue#push の時に意図せず Thread#wakeup が呼ばれてしまったり、実際に待っている Thread に wakeup が呼ばれなくなったりするので、残さないようにしたほうが良いと思います。
----------------------------------------
Bug #5258: SizedQueueにBug #5195と同様のバグ
http://redmine.ruby-lang.org/issues/5258

Author: Masaki Matsushita
Status: Assigned
Priority: Normal
Assignee: Motohiro KOSAKI
Category: lib
Target version: 1.9.x
ruby -v: ruby 1.9.4dev (2011-09-01 trunk 33157) [x86_64-linux]


=begin
[Bug #5195][ruby-dev:44400]と同様ですが、SizedQueue#pushでsleepしているthreadをwakeupさせると、SizedQueueの@queue_waitにそのthreadがpushされてしまいます。

 require 'thread'
 
 sq = SizedQueue.new(1)
 sq.push(0)
 
 t1 = Thread.start { sq.push(1) ; sleep }
 
 nil until t1.stop?
 t1.wakeup
 nil until t1.stop?
 
 t2 = Thread.start { sq.push(2) }
 
 nil until t1.stop? && t2.stop?
 
 p t1, t2
 sq.instance_eval{ p @queue_wait }
 
 3.times{ sq.pop }
 
 t2.join

上記のコードを実行すると、

 #<Thread:0x00000000b1a198 sleep>
 #<Thread:0x00000000b1a120 sleep>
 [#<Thread:0x00000000b1a198 sleep>, #<Thread:0x00000000b1a198 sleep>, #<Thread:0x00000000b1a120 sleep>]
 /usr/local/lib/ruby/1.9.1/thread.rb:185:in `sleep': deadlock detected (fatal)
        from /usr/local/lib/ruby/1.9.1/thread.rb:185:in `block in pop'
        from <internal:prelude>:10:in `synchronize'
        from /usr/local/lib/ruby/1.9.1/thread.rb:180:in `pop'
        from /usr/local/lib/ruby/1.9.1/thread.rb:324:in `pop'
        from sized_queue.rb:19:in `block in <main>'
        from sized_queue.rb:19:in `times'
        from sized_queue.rb:19:in `<main>'

となります。
場当たり的なものですが[Bug #5195][ruby-dev:44400]の時と同様なpatchを添付します。適用後もtest/thread/test_queue.rbをパスします。
 
=end


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

In This Thread