Project

General

Profile

Actions

Feature #20290

closed

Add API for C extensions to free memory

Added by peterzhu2118 (Peter Zhu) 3 months ago. Updated 3 months ago.

Status:
Closed
Assignee:
-
Target version:
-
[ruby-core:116902]

Description

GitHub PR: https://github.com/ruby/ruby/pull/10055

Ticket #19993 added the new feature RUBY_FREE_AT_EXIT, which frees memory in Ruby at shutdown. This allowed tools like Valgrind, ASAN, and macOS leaks to find memory leaks in Ruby without a large number of false-positives outputted. However, this feature is not complete for C extensions, as they may also need to free their memory and there was no way to do so. This means that C extensions might not be able to directly use tools like Valgrind, ASAN, or macOS leaks to find memory leaks.

This ticket proposes an API for C extensions to free memory by defining a function called Destruct_<extension name> that is called during shutdown when RUBY_FREE_AT_EXIT is enabled. This name mirrors the Init_<extension name> API that already exists for extension initialization. However, unlike the Init_<extension name> function, Destruct_<extension name> is NOT mandatory for the C extension to implement so that we can preserve backwards compatibility.

Actions

Also available in: Atom PDF

Like2
Like0Like0Like1Like0Like0Like0Like0Like0