Project

General

Profile

Bug #17020

ObjectSpace.trace_object_allocations_stop raises if called before trace_object_allocations_start

Added by byroot (Jean Boussier) 29 days ago. Updated 2 days ago.

Status:
Open
Priority:
Normal
Target version:
-
ruby -v:
ruby 2.5.8p224 (2020-03-31 revision 67882) [x86_64-darwin19]
[ruby-core:99088]

Description

The error is easy to reproduce:

e.g. on Ruby 2.3:

$ ruby -robjspace -e 'ObjectSpace.trace_object_allocations_stop'
-e:1:in `trace_object_allocations_stop': wrong argument type false (expected tracepoint) (TypeError)
    from -e:1:in `<main>'

Up to ruby 2.7.1:

$ ruby -robjspace -e 'ObjectSpace.trace_object_allocations_stop'
Traceback (most recent call last):
    1: from -e:1:in `<main>'
-e:1:in `trace_object_allocations_stop': wrong argument type false (expected tracepoint) (TypeError)

Patch: https://github.com/ruby/ruby/pull/3001

Updated by nobu (Nobuyoshi Nakada) 28 days ago

  • Assignee set to byroot (Jean Boussier)

A possible alternative might be an exception, I thought first, but it isn’t a single condition.
Could you add the test?

Updated by byroot (Jean Boussier) 28 days ago

As explained in the PR, I have no idea how to write a regression test, because as long as ObjectSpace.trace_object_allocations_start was called at least once in the program, it no longer fails afterwards. That is what led me to think it's a bug.

I can write test that calls trace_object_allocations_stop but based on test ordering it might never fail on CI.

Updated by byroot (Jean Boussier) 2 days ago

I added a regression test using assert_separately.

Also available in: Atom PDF