Project

General

Profile

Actions

Bug #14607

closed

Fix use of the rb_profile_frames start parameter

Added by dylants (Dylan Thacker-Smith) about 6 years ago. Updated 2 months ago.

Status:
Closed
Target version:
-
[ruby-core:86147]
Tags:

Description

rb_profile_frames was always behaving as if the value given for the start parameter was 0.

The reason for this was that it would check if (start > 0) { then continue without updating the control frame pointer or anything other than decrementing start.

This bug applies to all branches under normal maintenance, from ruby 2.3 to trunk.

Actions #1

Updated by tenderlovemaking (Aaron Patterson) almost 6 years ago

  • Status changed from Open to Closed

Applied in changeset trunk|r63265.


Fix use of rb_profile_frames start parameter

rb_profile_frames was always behaving as if the value given for the
start parameter was 0.

The reason for this was that it would check if (start > 0) { then
continue without updating the control frame pointer or anything other
than decrementing start.

[ruby-core:86147] [Bug #14607]

Co-authored-by: Dylan Thacker-Smith

Updated by tenderlovemaking (Aaron Patterson) almost 6 years ago

  • Status changed from Closed to Open

ko1 said I shouldn't have committed the patch, so I reverted. Sorry!

Updated by ko1 (Koichi Sasada) almost 6 years ago

I need to remember why such special (additional) calculation is done, so I left this ticket.
I need to remember...

Updated by dylants (Dylan Thacker-Smith) over 3 years ago

  • File deleted (fix-use-of-the-rb_profile_frames-start-parameter.patch)

The original patch has a merge conflict. However, I have opened a pull request with the fix for this issue (https://github.com/ruby/ruby/pull/2713) that has been rebased to resolve the merge conflict.

Updated by dylants (Dylan Thacker-Smith) almost 3 years ago

I need to remember why such special (additional) calculation is done

I'm not sure what you mean by additional calculation. It is decrementing start when non-zero as expected to loop over that number of frames, it just was missing the corresponding update to cfp.

Could this get another look?

Updated by mame (Yusuke Endoh) almost 2 years ago

  • Status changed from Open to Assigned
  • Assignee set to ko1 (Koichi Sasada)

I assume that "additional calculation" means the code if (start > 0) { start--; continue; }, but the "additional calculation" seems to make no sense at all to me either.

    for (i=0; i<limit && cfp != end_cfp;) {
        if (VM_FRAME_RUBYFRAME_P(cfp)) {
            if (start > 0) {
                start--;
                continue;
            }

It is essentially start = 0;. The proposed fix seems reasonable to me. @ko1 (Koichi Sasada) What do you think?

Updated by dylants (Dylan Thacker-Smith) 2 months ago

The original patch has a merge conflict. However, I have opened a pull request with the fix for this issue (https://github.com/ruby/ruby/pull/2713) that has been rebased to resolve the merge conflict.

The github PR has been merged, so this issue can be closed now. It doesn't look like I have permission to change its status though.

Actions #8

Updated by jeremyevans0 (Jeremy Evans) 2 months ago

  • Status changed from Assigned to Closed
Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0Like0Like0