[#53072] [ruby-trunk - Feature #7994][Open] Make iterators pass an implicit named parameter `iteration` to the executed block — "alexeymuranov (Alexey Muranov)" <redmine@...>

10 messages 2013/03/01

[#53097] [ruby-trunk - Bug #8000][Open] "require 'tk'" segfaults on 64-bit linux with Tk 8.6 — "edmccard (Ed McCardell)" <edmccard@...>

25 messages 2013/03/02

[#53137] [ruby-trunk - Bug #8017][Open] Got segmentation fault on attempt to install ruby 2.0.0-p0 on Mac 10.6.8 via RVM — "adantel (Alex Filatau)" <filatau@...>

9 messages 2013/03/05

[#53168] [ruby-trunk - Bug #8034][Open] File.expand_path('something', '~') do not include home path — "rap-kasta (Pavel Manylov)" <rapkasta@...>

12 messages 2013/03/06

[#53199] [ruby-trunk - Bug #8040][Open] Unexpect behavior when using keyword arguments — "pabloh (Pablo Herrero)" <pablodherrero@...>

11 messages 2013/03/07

[#53203] [ruby-trunk - Feature #8042][Open] Add Addrinfo#socket to create a socket that is not connected or bound — "drbrain (Eric Hodel)" <[email protected]>

12 messages 2013/03/07

[#53248] Github commit log should not be used as references on redmine — Marc-Andre Lafortune <ruby-core-mailing-list@...>

Github commit log should not be used as references on redmine. E.g:

10 messages 2013/03/09

[#53386] [CommonRuby - Feature #8088][Open] Method#parameters (and friends) should provide useful information about core methods — "headius (Charles Nutter)" <headius@...>

14 messages 2013/03/13

[#53412] [CommonRuby - Feature #8096][Open] introduce Time.current_timestamp — "vipulnsward (Vipul Amler)" <vipulnsward@...>

34 messages 2013/03/14

[#53439] [ruby-trunk - Bug #8100][Open] Segfault in ruby-2.0.0p0 — "judofyr (Magnus Holm)" <judofyr@...>

22 messages 2013/03/15

[#53478] [ruby-trunk - Feature #8107][Open] [patch] runtime flag to track object allocation metadata — "tmm1 (Aman Gupta)" <[email protected]>

20 messages 2013/03/16

[#53498] [ruby-trunk - Feature #8110][Open] Regex methods not changing global variables — "prijutme4ty (Ilya Vorontsov)" <prijutme4ty@...>

21 messages 2013/03/18

[#53502] [ruby-trunk - Bug #8115][Open] make install DESTDIR=/my/install/path fails — "vo.x (Vit Ondruch)" <v.ondruch@...>

11 messages 2013/03/18

[#53688] [ruby-trunk - Feature #8158][Open] lightweight structure for loaded features index — "funny_falcon (Yura Sokolov)" <funny.falcon@...>

27 messages 2013/03/24

[#53692] [ruby-trunk - Bug #8159][Open] Build failure introduced by Rinda changes — "luislavena (Luis Lavena)" <luislavena@...>

22 messages 2013/03/24

[#53733] [ruby-trunk - Bug #8165][Open] Problems with require — "Krugloff (Alexandr Kruglov)" <mr.krugloff@...>

12 messages 2013/03/26

[#53742] [ruby-trunk - Bug #8168][Open] Feature request: support for (single) statement lambda syntax/definition — "garysweaver (Gary Weaver)" <garysweaver@...>

9 messages 2013/03/26

[#53765] [ruby-trunk - Bug #8174][Open] AIX header file conflict with rb_hook_list_struct — "edelsohn (David Edelsohn)" <dje.gcc@...>

11 messages 2013/03/27

[#53808] [ruby-trunk - Feature #8181][Open] New flag for strftime that supports adding ordinal suffixes to numbers — "tkellen (Tyler Kellen)" <tyler@...>

10 messages 2013/03/28

[#53811] [ruby-trunk - Bug #8182][Open] XMLRPC request fails with "Wrong size. Was 31564, should be 1501" — "tsagadar (Marcel Mueller)" <marcel.mueller@...>

28 messages 2013/03/28

[#53849] [ruby-trunk - Feature #8191][Open] Short-hand syntax for duck-typing — "wardrop (Tom Wardrop)" <tom@...>

48 messages 2013/03/31

[#53850] An evaluation of 2.0.0 release — Yusuke Endoh <mame@...>

Let's look back at 2.0.0 release so that we can do better next time.

12 messages 2013/03/31

[ruby-core:53448] [CommonRuby - Feature #7895] Exception#backtrace_locations to go with Thread#backtrace_locations and Kernel#caller_locations

From: "headius (Charles Nutter)" <headius@...>
Date: 2013-03-15 17:12:03 UTC
List: ruby-core #53448
Issue #7895 has been updated by headius (Charles Nutter).


kallistec (Daniel DeLeo) wrote:
> Hi, I work on Opscode's Chef, a server configuration framework. I have an interest in both parts of this topic. In Chef, we use set_backtrace but we also parse backtrace lines to find relevant code in our error messages. 
> 
> When we use set_backtrace, it is because we are catching an exception and then re-raising as either the same exception class or as a different exception class. Our goal here is to add context to exceptions that would otherwise be very difficult for the end user to understand.

So, as long as you'd be happy with Thread::Backtrace::Location's elements, it should just be a matter of creating a new Array of Location objects and passing it to an hypothetical set_backtrace_locations (or hey, let's get crazy and call it backtrace_locations= perhaps?)

Some specifications I proposed before:

* If an exception has had no modifications applied, #backtrace and #backtrace_locations will be the same content (in different form, obviously).
* If an exception has had #set_backtrace_locations (#backtrace_locations=) called, #backtrace and #backtrace_locations will reflect the new content.
* If an exception has had #set_backtrace called, #backtrace will reflect the new content but #backtrace_locations will not (due to the impossibility of guaranteeing #set_backtrace lines will parse into Location objects).

So basically #backtrace_locations is the future path for dealing with exception data and #backtrace (probably deprecated in future) only piggy-backs off it.

Seem reasonable?
----------------------------------------
Feature #7895: Exception#backtrace_locations to go with Thread#backtrace_locations and Kernel#caller_locations
https://bugs.ruby-lang.org/issues/7895#change-37632

Author: headius (Charles Nutter)
Status: Open
Priority: Normal
Assignee: 
Category: 
Target version: 


Thread#backtrace_locations and Kernel#caller_locations were added in Ruby 2.0.0, but no equivalent method was added to Exception to get backtrace locations. The String format of Exception#backtrace elements makes it difficult to do any inspection of the actual files and lines it reports, so having backtrace_locations would be very useful.

In #7435 ko1 pointed out that Exception defines set_backtrace, which takes an array (presumably of Strings in the same format as Exception#backtrace) and that this would need to be addressed in order to support backtrace_locations. I propose that if you set_backtrace, you are already breaking the ability to get structured Location elements, so set_backtrace should cause backtrace_locations to return nil or an empty array (probably an empty array, so it can always be expected to be non-nil).

We could consider also adding set_backtrace_locations as a way to set Location elements into the exception.

An example script where backtrace_locations would be very useful is here (avoiding the need to regexp match to get file and line number): https://gist.github.com/headius/4999244


-- 
http://bugs.ruby-lang.org/

In This Thread