[#44448] [Ruby 1.9 - Bug #5258][Open] SizedQueueにBug #5195と同様のバグ — Masaki Matsushita <glass.saga@...>
8 messages
2011/09/01
[#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:
[#44475] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある
— "Shota Fukumori (sora_h)" <sorah@...>
2011/09/06
sora_h です。
[#44478] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある
— KOSAKI Motohiro <kosaki.motohiro@...>
2011/09/06
2011年9月6日19:14 Shota Fukumori (sora_h) <sorah@tubusu.net>:
[#44480] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある
— "Shota Fukumori (sora_h)" <sorah@...>
2011/09/06
あれれ,ほんとだ.失礼.
[#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
> かずひこです。
[#44554] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある
— Shugo Maeda <shugo@...>
2011/09/26
前田です。
[#44560] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある
— Kazuhiko <kazuhiko@...>
2011/09/28
かずひこです。
[#44575] Re: [Ruby 1.9 - Bug #5279] $SAFEが3以上の時にString#encodeがSecurityErrorを発生させるケースがある
— Kazuhiko <kazuhiko@...>
2011/10/04
On 28/09/2011 14:15, Kazuhiko wrote:
[#44491] [Ruby 1.9 - Feature #5314][Open] パッケージマネージャをコアリリースに含めて欲しい — Taro MURAOKA <koron.kaoriya@...>
13 messages
2011/09/13
[#44500] [Ruby 1.9 - Feature #5315][Open] config.hからコンパイラのバージョンチェックを外して欲しい — Taro MURAOKA <koron.kaoriya@...>
6 messages
2011/09/13
[#44520] [Ruby 1.9 - Bug #5350][Open] WeakRef で謎の NoMethodError — Makoto Kishimoto <redmine@...>
20 messages
2011/09/21
[#44532] [Ruby 1.9 - Bug #5350] WeakRef で謎の NoMethodError
— Shota Fukumori <sorah@...>
2011/09/24
[#44534] Re: [ruby-dev:44532] [Ruby 1.9 - Bug #5350] WeakRef で謎の NoMethodError
— SASADA Koichi <ko1@...>
2011/09/24
(2011/09/23 17:44), Shota Fukumori wrote:
[#44535] Re: [ruby-dev:44534] Re: [ruby-dev:44532] [Ruby 1.9 - Bug #5350] WeakRef で謎の NoMethodError
— "Shota Fukumori (sora_h)" <sorah@...>
2011/09/24
ふむ.やはりダメか.そうだよなぁ.
[#44536] Re: [ruby-dev:44535] Re: [ruby-dev:44534] Re: [ruby-dev:44532] [Ruby 1.9 - Bug #5350] WeakRef で謎の NoMethodError
— SASADA Koichi <ko1@...>
2011/09/24
ささだです.
[#44537] Re: [ruby-dev:44536] Re: [ruby-dev:44535] Re: [ruby-dev:44534] Re: [ruby-dev:44532] [Ruby 1.9 - Bug #5350] WeakRef で謎の NoMethodError
— SASADA Koichi <ko1@...>
2011/09/24
(2011/09/23 18:58), SASADA Koichi wrote:
[#44542] [Ruby 1.9 - Bug #5363][Open] OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation fault が発生する — Hiroshi Yoshida <hexa.diary@...>
8 messages
2011/09/25
[#44553] [Ruby 1.9 - Bug #5363] OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation fault が発生する
— Hiroshi Yoshida <hexa.diary@...>
2011/09/26
[#44556] Re: [Ruby 1.9 - Bug #5363] OpenSSL::ASN1.decode_all の引数に PEM 形式の証明書を指定すると Segmentation fault が発生する
— Martin Bo煬et <martin.bosslet@...>
2011/09/27
2011/9/26 Hiroshi Yoshida <hexa.diary@gmail.com>:
[#44546] [Ruby 1.9 - Bug #5368][Open] ensure節でsleepするようなThreadがあるとインタプリタが終了しない — Masaki Matsushita <glass.saga@...>
22 messages
2011/09/26
[#44547] Re: [ruby-dev:44546] [Ruby 1.9 - Bug #5368][Open] ensure節でsleepするようなThreadがあるとインタプリタが終了しない
— SASADA Koichi <ko1@...>
2011/09/26
(2011/09/25 21:51), Masaki Matsushita wrote:
[#44551] Re: [Ruby 1.9 - Bug #5368][Open] ensure節でsleepするようなThreadがあるとインタプリタが終了しない
— m_takao <threewayhandshake@...>
2011/09/26
高尾と申します。
[ruby-dev:44440] [Ruby 1.9 - Bug #5254][Assigned] class オブジェクトの開放時に segv
From:
Motohiro KOSAKI <kosaki.motohiro@...>
Date:
2011-09-01 00:15:41 UTC
List:
ruby-dev #44440
Issue #5254 has been updated by Motohiro KOSAKI.
Subject changed from ] class オブジェクトの開放時に segv to class オブジェクトの開放時に segv
Category set to core
Status changed from Open to Assigned
Assignee set to Narihiro Nakamura
Target version set to 1.9.x
チケット化
----------------------------------------
Bug #5254: class オブジェクトの開放時に segv
http://redmine.ruby-lang.org/issues/5254
Author: Anonymous
Status: Assigned
Priority: Normal
Assignee: Narihiro Nakamura
Category: core
Target version: 1.9.x
ruby -v: -
芝と申します。
次のようなコードを実行すると、gc の sweep フェーズで segv します。
# 再現コード
####################################
class BasicObject
def singleton_method_added(mid)
raise
end
end
b = proc {}
class << b; end
b.clone
####################################
b.clone では、class.c 内の rb_singleton_class_clone を呼び出し、class オ
ブジェクトの複製をします。このとき、class_alloc を呼び出して生の class
オブジェクトを割り当てるんですが、メソッドテーブルの割り当てを行う前に
singleton_method_added のコールバックを呼び出しています。このため、
singleton_method_added のコールバックで例外を吐いたときに、メソッドテー
ブルの割り当てが行われていない class オブジェクトが出来てしまっています。
obj_free では、class オブジェクトの開放時に、メソッドテーブルが割り当て
られているかどうかのチェック無しに、rb_free_m_table(RCLASS_M_TBL(obj));
とし、メソッドテーブルを開放しようとします。rb_free_m_table は、引数とし
てわたってくるハッシュテーブルが NULL ではないものとして処理を進めている
ため、上に記述したような、メソッドテーブルの割り当てが行われていない
class オブジェクトを開放しようとしたときに、segv を吐いてしまうようです。
obj_free からの呼び出し関係と segv の位置は次のような感じです。
obj_free
rb_free_m_table
st_foreach
if (table->entries_packed) { <= ここで segv
これに対する対処としては、rb_singleton_class_clone のメソッドテーブル初
期化の位置をずらすか、obj_free でメソッドテーブルの解放前にメソッドテー
ブルが割り当てられているかどうかのチェックをするかの2つがあります。
rb_singleton_class_clone のように、class オブジェクトの初期化とコール
バックの呼び出しを共に行うような処理が他に無いとも限らないので、obj_free
側に手を加えるのがいいと思います。本メール末尾にそのようなパッチを添付し
ておきます。
参考にしていただければ幸いです。
よろしくお願いいたします。
# パッチ
Index: gc.c
===================================================================
--- gc.c (revision 33101)
+++ gc.c (working copy)
@@ -2273,7 +2273,9 @@
case T_MODULE:
case T_CLASS:
rb_clear_cache_by_class((VALUE)obj);
- rb_free_m_table(RCLASS_M_TBL(obj));
+ if (RCLASS_M_TBL(obj)) {
+ rb_free_m_table(RCLASS_M_TBL(obj));
+ }
if (RCLASS_IV_TBL(obj)) {
st_free_table(RCLASS_IV_TBL(obj));
}
--
http://redmine.ruby-lang.org