[#37679] [FEATURE:trunk] EncDet again — "Yugui (Yuki Sonoda)" <yugui@...>

Yuguiです。

23 messages 2009/01/03

[#37748] $LOAD_PATHとバージョンの運用の関係 — akira yamada / やまだあきら <akira@...>

1.9系でのバージョンの運用と$LOAD_PATHの値について質問です。

12 messages 2009/01/09
[#37758] Re: $LOAD_PATHとバージョンの運用の関係 — "NARUSE, Yui" <naruse@...> 2009/01/11

成瀬です。

[ruby-dev:37776] [BUG]1.8.7-p72 で例外でもないのに大域脱出みたいな動作をする

From: Tomoyuki Chikanaga <chikanag@...>
Date: 2009-01-16 10:29:31 UTC
List: ruby-dev #37776
日本コントロールシステムの近永と申します。

安定板 1.8.7-p72 で下記のスクリプトを実行すると想像と
違う動きをします。
うまく言えないのですが、例外が発生しているわけではないのに
例外で処理を抜けている時のように処理途中で抜けてしまいます。
安定板リリースのパッチレベルを遡っていくと、
1.8.7-p72, p71 では発生し、p22 では発生しませんでした。
とりあえず報告だけさせていただきます。

=== 再現スクリプト ここから ===
require 'monitor'

def meth1
  mon = Monitor.new
  begin
    raise "dummy" # これがないと発生しない
  rescue
  end
  begin
    puts("=== before synchronize ===")
    mon.synchronize do
      nil
    end
    puts("### after synchronize... OK ###")
  rescue Exception
    puts("caught exception {$!:class}:#{$!}")
  end
end

def main
  Thread.exit
ensure
  meth1
  puts "#### after meth1 ####"
  Kernel.exit!(1)
end

thr = Thread.new{ main() }
thr.join

# main が直に Kernel.exit! するので
# ここには来ないはず
puts "should not reach here!!"
=== 再現スクリプト ここまで ===

* 実行結果
chikanaga@cluster05% ~/env/bin/ruby-1.8.7-p72 -v test.rb
ruby 1.8.7 (2008-08-11 patchlevel 72) [i686-linux]
=== before synchronize ===
should not reach here!!

% ~/env/bin/ruby-1.8.7-p71 -v test.rb
ruby 1.8.7 (2008-08-08 patchlevel 71) [i686-linux]
=== before synchronize ===
should not reach here!!

% ~/env/bin/ruby-1.8.7-p22 -v test.rb
ruby 1.8.7 (2008-06-20 patchlevel 22) [i686-linux]
=== before synchronize ===
### after synchronize... OK ###
#### after meth1 ####

* 実行環境
% uname -a
Linux cluster05 2.4.21-47.ELsmp #1 SMP Wed Jul 5 20:38:41 EDT 2006 i686
i686 i386 GNU/Linux
% cat /etc/issue
Red Hat Enterprise Linux ES release 3 (Taroon Update 8)
Kernel \r on an \m

% gcc -v
/usr/local/lib/gcc/i686-pc-linux-gnu/3.4.6/specs から spec を読み込み中
コンフィグオプション: ./configure --program-suffix=-3.4.6
--disable-shared --disable-ada --disable-java --disable-objc :
(reconfigured) ./configure --program-suffix=-3.4.6 --disable-shared
--enable-languages=c,c++,fortran : (reconfigured) ./configure
--program-suffix=-3.4.6 --disable-shared
--enable-languages=c,c++,fortran : (reconfigured) ./configure
--program-suffix=-3.4.6 --disable-shared --enable-languages=c,c++,f77
スレッドモデル: posix
gcc バージョン 3.4.6

以上。

-- 
Chikanaga Tomoyuki
<chikanag@nippon-control-system.co.jp>


In This Thread

Prev Next