Project

General

Profile

Actions

Bug #14607

open

Fix use of the rb_profile_frames start parameter

Added by dylants (Dylan Thacker-Smith) about 5 years ago. Updated 12 months ago.

Status:
Assigned
Priority:
Normal
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) about 5 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) about 5 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) about 5 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) almost 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) about 2 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) 12 months 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?

Actions

Also available in: Atom PDF

Like0
Like0Like0Like0Like0Like0Like0