[prev in list] [next in list] [prev in thread] [next in thread]
List: ruby-core
Subject: [ ruby-Bugs-1251 ] backtrace lost when throwing exceptions from procs defined in extensions
From: noreply () rubyforge ! org
Date: 2004-12-23 19:57:12
Message-ID: 200412231955.iBNJtTRA006407 () rubyforge ! org
[Download RAW message or body]
Bugs item #1251, was opened at 2004-12-23 14:55
You can respond by visiting:
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1251&group_id=426
Category: Core
Group: None
Status: Open
Resolution: None
Priority: 5
Submitted By: Paul Brannan (cout)
Assigned to: Nobody (None)
Summary: backtrace lost when throwing exceptions from procs defined in extensions
Initial Comment:
If I have an extension like this:
[pbrannan@zaphod ext]$ cat test.c
#include <ruby.h>
VALUE p = Qnil;
VALUE foo(VALUE self)
{
VALUE args[] = { rb_str_new2("foo") };
rb_funcall3(p, rb_intern("call"), 1, args);
}
VALUE myproc(VALUE arg, VALUE data, VALUE self)
{
Check_Type(Qnil, T_ARRAY); /* throw an exception */
}
void Init_test()
{
p = rb_proc_new(myproc, Qnil);
rb_define_method(rb_cObject, "foo", foo, 0);
}
I would expect to get a usable stack trace from the following ruby script (showing \
that test.rb:11 called baz called bar called foo): [pbrannan@zaphod ext]$ cat test.rb
require 'test.so'
def bar
foo()
end
def baz
bar()
end
baz()
But I do not:
[pbrannan@zaphod ext]$ ruby -v test.rb
ruby 1.8.2 (2004-12-22) [i686-linux]
./test.so: wrong argument type nil (expected Array) (TypeError)
In more complex programs I have seen this bug cause ruby to show that an exception \
that's raised in one place in my program as if it were raised in a completely \
different place.
This bug occurs on both 1.8.1 and 1.8.2preview4.
----------------------------------------------------------------------
You can respond by visiting:
http://rubyforge.org/tracker/?func=detail&atid=1698&aid=1251&group_id=426
[prev in list] [next in list] [prev in thread] [next in thread]
Configure |
About |
News |
Add a list |
Sponsored by KoreLogic