From: "nobu (Nobuyoshi Nakada)" Date: 2021-10-26T05:21:42+00:00 Subject: [ruby-core:105801] [Ruby master Bug#18264] TracePoint leaks memory Issue #18264 has been updated by nobu (Nobuyoshi Nakada). Good catch. An empty function was replaced with `RUBY_TYPED_NEVER_FREE` at commit:5c1b9b38d69d, but an empty free function means that the instance has nothing others to free, and it should equal `RUBY_TYPED_DEFAULT_FREE`. ---------------------------------------- Bug #18264: TracePoint leaks memory https://bugs.ruby-lang.org/issues/18264#change-94319 * Author: peterzhu2118 (Peter Zhu) * Status: Open * Priority: Normal * Backport: 2.6: REQUIRED, 2.7: REQUIRED, 3.0: REQUIRED ---------------------------------------- # GitHub PR: https://github.com/ruby/ruby/pull/5008 TracePoint leaks memory because it allocates a `rb_tp_t` struct without ever freeing it (it is created with `RUBY_TYPED_NEVER_FREE`). This is reproducible on all maintained Rubies (2.6.8, 2.7.4, 3.0.2, master) on Ubuntu 20.04. The follow string demonstrates the issue. ```ruby 100.times do 10000.times do TracePoint.new(:line) {} end # Output the Resident Set Size (memory usage, in KB) of the current Ruby process puts `ps -o rss= -p #{$$}` end ``` We can see the leak through the following graph of the Resident Set Size (RSS) comparing the branch vs. master (at commit 6b9285e8d45e88c5b014b8428520ffa2401789ad). ![](https://user-images.githubusercontent.com/15860699/138502310-007bd725-d364-4be4-b128-ebdb859b8613.png) -- https://bugs.ruby-lang.org/ Unsubscribe: