[#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 <[email protected]>:

[#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:44550] Re: [Ruby 1.9 - Bug #5368][Open] ensure節でsleepするようなThreadがあるとインタプリタが終了しない

From: KOSAKI Motohiro <kosaki.motohiro@...>
Date: 2011-09-26 13:40:19 UTC
List: ruby-dev #44550
2011年9月26日14:24 SASADA Koichi <[email protected]>:
> (2011/09/25 21:51), Masaki Matsushita wrote:
>> 次のコードを実行するとCPU使用率が跳ね上がった状態になりインタプリタが終了しません。
>>
>>  Thread.new do
>>    begin
>>      sleep
>>    ensure
>>      sleep
>>    end
>>  end
>>
>> 現在のrb_thread_terminate_allでは最初に1回だけ生きているスレッドに対してterminate_iを実行していますが、ensure節でsleepするようなThreadがあると、そのThreadは寝たままになってしまいwhile(!rb_thread_alone())が無限ループになってしまいます。
>
>  ここで,バグとは何でしょうか.
>
> (1) CPU 使用率がはねあがる
> (2) プロセスが死なない
>
>  (1) が問題というのは理解できます.あまり文句がないんで放置している部分
> です.直そうと思えば,正しく他のスレッドを待ち合わせをすればできると思っ
> ています.
>
>  (2) については仕様です.ご提案の修正方法では,とにかく生きていたら殺
> す,ということをしていますが,例えば他のスレッドで何か時間のかかる終了処
> 理をしていた場合(例えば,終了時にネットワークで外部に情報を送る,という
> ようなことをしている場合),それを強制的に止めてしまうため,まずいことに
> なります.
>
>  ということで,これに関しては,現状だと仕様かな,と思いますが,もっと良
> い仕様があれば,ご提案頂けと助かります.

C言語だってat_exit()でsleep()したら死なないし、C++だってデストラクタでsleep()したら
死なないしねえ。
プログラミング言語はアホなコードにたいしてアホな振る舞いをするのはそういうものという気がします。個人的には。

ensureにsleepを書くことが避けることが不可能。という話になるとまたちょっと話が変わってくるかと
思いますが、そういう例は思いつきませんでした。

In This Thread