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]