[#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:37792] Re: [BUG]1.8.7-p72 で例外でもないのに大域脱出みたいな動作をする

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

[ruby-dev:37776]で報告した件の続報ですが、
patchlevel で二分探索して、patchlevel 48 から patchlevel 49 の
間で動作が変化したことを確認しました。
ChangeLog によると
Mon Jul  7 15:02:13 2008  Nobuyoshi Nakada  <nobu@ruby-lang.org>
  * eval.c (rb_longjmp): duplicate the thrown exception to set backtrace
    if it was frozen.  clear all raised flags.

  * eval.c (stack_check): leave clearing flag to rb_longjmp.

  * eval.c (rb_thread_set_raised, rb_thread_reset_raised): use generic
    flags.
このへんが怪しような。
引き続き調査しますが、なにか見当はつきませんでしょうか。

以上。

Tomoyuki Chikanaga wrote:
> 日本コントロールシステムの近永と申します。
> 
> 安定板 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