Skip to content

Free current_block_exits for the program#3670

Merged
kddnewton merged 1 commit into
mainfrom
pz-free-program-block-exits
Oct 6, 2025
Merged

Free current_block_exits for the program#3670
kddnewton merged 1 commit into
mainfrom
pz-free-program-block-exits

Conversation

@peterzhu2118

Copy link
Copy Markdown
Member

We need to free the current_block_exits in parse_program when we're done with it to prevent memory leaks. This fixes the following memory leak detected when running Ruby using RUBY_FREE_AT_EXIT=1 ruby -nc -e "break":

Direct leak of 32 byte(s) in 1 object(s) allocated from:
    #0 0x5bd3c5bc66c8 in realloc (miniruby+0x616c8) (BuildId: ba6a96e5a060aec6fd9f05ed7e95d9627e1dbd74)
    #1 0x5bd3c5f91fd9 in pm_node_list_grow prism/templates/src/node.c.erb:35:40
    #2 0x5bd3c5f91e9d in pm_node_list_append prism/templates/src/node.c.erb:48:9
    #3 0x5bd3c6001fa0 in parse_block_exit prism/prism.c:15788:17
    #4 0x5bd3c5fee155 in parse_expression_prefix prism/prism.c:19221:50
    #5 0x5bd3c5fe9970 in parse_expression prism/prism.c:22235:23
    #6 0x5bd3c5fe0586 in parse_statements prism/prism.c:13976:27
    #7 0x5bd3c5fd6792 in parse_program prism/prism.c:22508:40

We need to free the current_block_exits in parse_program when we're done
with it to prevent memory leaks. This fixes the following memory leak detected
when running Ruby using `RUBY_FREE_AT_EXIT=1 ruby -nc -e "break"`:

    Direct leak of 32 byte(s) in 1 object(s) allocated from:
        #0 0x5bd3c5bc66c8 in realloc (miniruby+0x616c8) (BuildId: ba6a96e5a060aec6fd9f05ed7e95d9627e1dbd74)
        #1 0x5bd3c5f91fd9 in pm_node_list_grow prism/templates/src/node.c.erb:35:40
        #2 0x5bd3c5f91e9d in pm_node_list_append prism/templates/src/node.c.erb:48:9
        #3 0x5bd3c6001fa0 in parse_block_exit prism/prism.c:15788:17
        #4 0x5bd3c5fee155 in parse_expression_prefix prism/prism.c:19221:50
        #5 0x5bd3c5fe9970 in parse_expression prism/prism.c:22235:23
        #6 0x5bd3c5fe0586 in parse_statements prism/prism.c:13976:27
        #7 0x5bd3c5fd6792 in parse_program prism/prism.c:22508:40
@kddnewton
kddnewton merged commit 99fa7d6 into main Oct 6, 2025
60 checks passed
@kddnewton
kddnewton deleted the pz-free-program-block-exits branch October 6, 2025 12:40
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants