[#55853] ruby 1.9.3 p448 breaks ABI — V咜 Ondruch <v.ondruch@...>

Hi,

13 messages 2013/07/08

[#55951] [ruby-trunk - Bug #8625][Open] IO#read(len, buf) shortens buf even if data is not read actually — "no6v (Nobuhiro IMAI)" <nov@...>

10 messages 2013/07/11

[#55976] [ruby-trunk - Feature #8629][Open] Method#parameters should include the default value — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

13 messages 2013/07/12

[#55985] [ruby-trunk - Feature #8631][Open] Add a new method to ERB to allow assigning the local variables from a hash — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

19 messages 2013/07/12

[#56004] [ruby-trunk - Feature #8636][Open] Documentation hosting on ruby-lang.org — "zzak (Zachary Scott)" <e@...>

18 messages 2013/07/15

[#56019] [ruby-trunk - Feature #8639][Open] Add Queue#each — "avdi (Avdi Grimm)" <avdi@...>

15 messages 2013/07/15

[#56027] [CommonRuby - Feature #8640][Open] Add Time#elapsed to return nanoseconds since creation — "tenderlovemaking (Aaron Patterson)" <aaron@...>

24 messages 2013/07/15

[#56041] [CommonRuby - Feature #8643][Open] Add Binding.from_hash — "rosenfeld (Rodrigo Rosenfeld Rosas)" <rr.rosas@...>

26 messages 2013/07/16

[#56087] [ruby-trunk - Feature #8658][Open] Process.clock_gettime — "akr (Akira Tanaka)" <akr@...>

23 messages 2013/07/19

[#56096] [CommonRuby - Feature #8661][Open] Add option to print backstrace in reverse order(stack frames first & error last) — "gary4gar (Gaurish Sharma)" <gary4gar@...>

18 messages 2013/07/20

[#56193] [ruby-trunk - Bug #8693][Open] lambda invoked by yield acts as a proc with respect to return — "rits (First Last)" <redmine@...>

33 messages 2013/07/26

[#56274] [ruby-trunk - Bug #8709][Open] Dir.glob should return sorted file list — "tommorris (Tom Morris)" <tom@...>

19 messages 2013/07/30

[ruby-core:55795] [ruby-trunk - Bug #8538] c method not pushed into the callstack when called, but popped when returned

From: deivid (David Rodríguez) <deivid.rodriguez@...>
Date: 2013-07-04 14:33:16 UTC
List: ruby-core #55795
Issue #8538 has been updated by deivid (David Rodr鱈guez).


=begin
Maybe the granularity requested in my previous message implies more work. I would be fine with just correcting the inconsistent behaviour by not popping from the stack when returning from `initialize`. The expected output in this case would be

    c_return :enable     ["bt_test.rb:4:in `<main>'"]
    line     nil         ["bt_test.rb:6:in `<main>'"]
    c_call   :raise      ["bt_test.rb:6:in `<main>'"]
    c_call   :new        ["bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    c_call   :initialize ["bt_test.rb:6:in `new'", "bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    c_return :initialize ["bt_test.rb:6:in `new'", "bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    c_return :new        ["bt_test.rb:6:in `new'", "bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    c_call   :backtrace  ["bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    c_return :backtrace  ["bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    raise    nil         ["bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    c_return :raise      ["bt_test.rb:6:in `raise'", "bt_test.rb:6:in `<main>'"]
    bt_test.rb:6:in `<main>': bang! (RuntimeError)
=end

Salute.
----------------------------------------
Bug #8538: c method not pushed into the callstack when called, but popped when returned
https://bugs.ruby-lang.org/issues/8538#change-40290

Author: deivid (David Rodr鱈guez)
Status: Open
Priority: Normal
Assignee: ko1 (Koichi Sasada)
Category: core
Target version: current: 2.1.0
ruby -v: ruby 2.0.0p195 (2013-05-14) [i686-linux]
Backport: 1.9.3: UNKNOWN, 2.0.0: UNKNOWN


See the following example:

    trace = TracePoint.new do |tp|
      puts "Event: #{tp.event}, Method: #{tp.method_id}\n"
      puts "Stack: #{caller}\n\n"
    end

    trace.enable

    fail "bang!"

The output shows:

    Event: c_return, Method: enable
    Stack: ["trace.rb:6:in `<main>'"]

    Event: line, Method: 
    Stack: ["trace.rb:8:in `<main>'"]

    Event: c_call, Method: fail
    Stack: ["trace.rb:8:in `<main>'"]

    Event: c_call, Method: new
    Stack: ["trace.rb:8:in `fail'", "trace.rb:8:in `<main>'"]

    Event: c_call, Method: initialize
    Stack: ["trace.rb:8:in `new'", "trace.rb:8:in `fail'", "trace.rb:8:in `<main>'"]

    Event: c_return, Method: initialize
    Stack: ["trace.rb:8:in `new'", "trace.rb:8:in `fail'", "trace.rb:8:in `<main>'"]

    Event: c_return, Method: new
    Stack: ["trace.rb:8:in `fail'", "trace.rb:8:in `<main>'"]

    Event: c_call, Method: backtrace
    Stack: ["trace.rb:8:in `<main>'"]

    Event: c_return, Method: backtrace
    Stack: ["trace.rb:8:in `<main>'"]

    Event: raise, Method: 
    Stack: ["trace.rb:8:in `<main>'"]

    Event: c_return, Method: fail
    Stack: ["trace.rb:8:in `<main>'"]

    trace.rb:8:in `<main>': bang! (RuntimeError)

It looks like the method "initialize" is not pushed into the stack when called, but something (the previous method call) is popped when returning from it.

Thanks a lot.


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

In This Thread