[前][次][番号順一覧][スレッド一覧][生データ]

yarv-dev:1056

From: "M.Suzuki" <msuzuki syd.odn.ne.jp>
Date: Thu, 20 Jul 2006 11:42:00 +0900
Subject: [yarv-dev:1056] Re: open> ./miniruby a.shでSEGV

M.Suzukiと申します。

手元の環境でちょっと調べてみました。

./miniruby -v
ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [powerpc-darwin7.9.0]
YARVCore 0.4.1 Rev: 527 (2006-07-19) [opts: [direct threaded code]
[inline method cache] ]

結論から言うと、エラーメッセージを表示するために、
現在の実行位置を得ようとして落ちている様に見受けられます。

# eval.cのrb_frame_callee()でフレームポインタを無条件で+1してて
# それが未使用領域に掛かっている?

問題解決の手がかりになれば幸いです。

以下、確認内容です。

(gdb) run a.sh
Starting program: /Users/suzuki/src/Lang/Ruby/yarv-svn/miniruby a.sh
Reading symbols for shared libraries ... done
Reading symbols for shared libraries . done

Program received signal EXC_BAD_ACCESS, Could not access memory.
frame_func_id (cfp=0x4b6000) at eval.c:1827
1827        yarv_iseq_t *iseq = cfp->iseq;
(gdb) print cfp
$1 = (yarv_control_frame_t *) 0x4b6000
(gdb) bt
#0  frame_func_id (cfp=0x4b6000) at eval.c:1827
#1  0x00002a94 in error_pos () at eval_error.h:39
#2  0x00002d38 in error_print () at eval_error.h:100
#3  0x000032dc in error_handle (ex=909660) at eval_error.h:243
#4  0x00005710 in ruby_options (argc=2, argv=0xbffff9cc) at eval.c:149
#5  0x000028b4 in main (argc=2, argv=0xbffff9cc, envp=0x20000000) at main.c:45

(gdb) print cfp
$5 = (yarv_control_frame_t *) 0x4b6000
(gdb) print *cfp
Cannot access memory at address 0x4b6000
(gdb) print cfp-1
$6 = (yarv_control_frame_t *) 0x4b5fc0
(gdb) print *(cfp-1)
$7 = {
  pc = 0x0,
  sp = 0x436000,
  bp = 0x0,
  iseq = 0x0,
  magic = 0,
  self = 4,
  lfp = 0x436000,
  dfp = 0x436000,
  block_iseq = 0x0,
  proc = 0,
  callee_id = 0,
  method_id = 0,
  method_klass = 0,
  prof_time_self = 0,
  prof_time_chld = 0,
  dummy = 0
}
(gdb)

Thu, 20 Jul 2006 03:32:25 +0900 に SASADA Koichi <ko1 atdot.net> さんよ
り:

>  ささだです。

> 

>  VMware 上の Linux だと大丈夫だったんですよね。Mac 上で試さないとだめな

> のかしらん。

> 

> Kazuhiro NISHIYAMA wrote:

> > 西山和広です。

> > 

> > [yarv-dev-en:147]のprocess.cの方のexecvがErrno::EOPNOTSUPPに

> > なるというのを再現させていて、ruby.cの方のexecvだとどうだろうと

> > 思って試してみようとしたら、[BUG] Segmentation faultになりました。

> > 

> > 

> > Mac-mini:~/build/yarv-r525-build kazu$ ./miniruby -e'exec("/bin/ls")'

> > -e:1:in `exec': Operation not supported - /bin/ls (Errno::EOPNOTSUPP)

> >         from -e:1:in `<main>'

> > Mac-mini:~/build/yarv-r525-build kazu$ cat a.sh

> > #!/bin/sh

> > echo hoge

> > Mac-mini:~/build/yarv-r525-build kazu$ ./miniruby -v a.sh

> > ruby 2.0.0 (Base: Ruby 1.9.0 2006-04-08) [powerpc-darwin8.7.0]

> > YARVCore 0.4.1 Rev: 525 (2006-07-18) [opts: [direct threaded code] [inline method cache] ]

> > -- stack frame ------------

> > -- control frame ----------

> > c:0001 p:---- s:0000 b:-001 l:000000 d:000000 ------

> > ---------------------------

> > [BUG] Segmentation fault

> > ruby 2.0.0 (2006-04-08) [powerpc-darwin8.7.0]

> > 

> > Abort trap

> > Mac-mini:~/build/yarv-r525-build kazu$

> > 

> > 

> 

> 

> -- 

> // SASADA Koichi at atdot dot net

> 

> 

> --

> ML: yarv-dev quickml.atdot.net

> Info: http://www.atdot.net/~ko1/quickml



========================
鈴木正弘 Masahiro Suzuki
========================

[前][次][番号順一覧][スレッド一覧][生データ]

      1039 2006-07-19 02:44 [zn mbf.nifty.com    ] open> ./miniruby a.shでSEGV             
      1045 2006-07-20 03:32 ┗[ko1 atdot.net       ]                                       
->    1056 2006-07-20 11:42  ┗[msuzuki syd.odn.ne.j]