[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