[#21338] $SAFE=4 での autoload — Hidetoshi NAGAI <nagai@...>

永井@知能.九工大です.

21 messages 2003/09/04
[#21346] Re: $SAFE=4 での autoload — nobu.nakada@... 2003/09/04

なかだです。

[#21359] Re: $SAFE=4 での autoload — Hidetoshi NAGAI <nagai@...> 2003/09/05

永井@知能.九工大です.

[#21419] Makefile.inのlex.c — Kazuhiro NISHIYAMA <zn@...>

西山和広です。

15 messages 2003/09/28

[ruby-dev:21386] Re: LocalJumpError -> ThreadError

From: Masatoshi Seki <m_seki@...>
Date: 2003-09-16 20:48:24 UTC
List: ruby-dev #21386
咳といいます。

> |数日前からCVS版のruby-1.8でdRubyのユニットテストが通らなくなりました。
> |ユニットテストでは、breakの検査でエラーとなっていて、従来LocalJumpError
> |だったと思われるところで
> |
> |  break jump can't across threads (ThreadError)
> |
> |といった例外が出ているようです。
> |
> |また、動作しなくなってしまったdRubyのアプリケーションでは次のような
> |例外が出ていました。
> |
> |  return jump can't across threads (ThreadError)
> |
> |まだちゃんと追えていないのですが、LocalJumpErrorからThreadErrorへ
> |変わっていくのでしょうか。
>
> もともとThread内部でのreturnにはThreadErrorをあげていたはず
> です(だから仕様変更のつもりではない)。たぶんどこかで微妙に動
> 作が違ってしまったのでしょう。再現スクリプトはありますか?

後者(return)はまだ準備できていませんが、前者(break)はdrbのrunit/test_drb.rbです。
irbではこんな感じです。

[Terminal-1]
% irb -r drb
 >> DRb.start_service(nil, {})
 >> DRb.uri
=> "druby://snow.local.:51600"

[Terminal-2]
% irb -r drb
 >> DRb.start_service()
 >> hash = DRbObject.new_with_uri("druby://snow.local.:51600")
 >> hash[1] = 1
 >> hash[2] = 2
 >> hash.each {|k, v| p k; break}
ThreadError: break jump can't across threads
         from (druby://snow.local.:51601) (irb):7
         from (druby://snow.local.:51601) (irb):7:in `call'
         from (druby://snow.local.:51600) 
/usr/local/lib/ruby/1.8/drb/invokemethod.rb:7:in `block_yield'
         from (druby://snow.local.:51600) 
/usr/local/lib/ruby/1.8/drb/invokemethod.rb:14:in `perform_with_block'
         from (druby://snow.local.:51600) 
/usr/local/lib/ruby/1.8/drb/invokemethod.rb:11:in `each'
         from (irb):7


rubyだけで再現させるスクリプトはまだ挑戦してません。
今夜やってみよう。


In This Thread