* [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding @ 2025-06-10 18:58 averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 1/3] vulkan: fix leak in FFVkExecPool averne ` (3 more replies) 0 siblings, 4 replies; 5+ messages in thread From: averne @ 2025-06-10 18:58 UTC (permalink / raw) To: ffmpeg-devel; +Cc: averne This fixes a few leaks reported by LeakSanitizer. I tested this on my Intel laptop running anv, with these patches no more leaks are detected. Signed-off-by: averne <averne381@gmail.com> --- averne (3): vulkan: fix leak in FFVkExecPool vulkan/ffv1dec: fix leak in FFVulkanDecodeShared vulkan/ffv1dec: fix FFVkSPIRVCompiler leak libavcodec/vulkan_ffv1.c | 60 ++++++++++++++++++++---------------------------- libavutil/vulkan.c | 2 ++ 2 files changed, 27 insertions(+), 35 deletions(-) --- base-commit: 4059bce713118f961d24b5f08a4881c5e7214f9b change-id: 20250610-vk-ffv1-leaks-7f0722236745 Best regards, -- averne <averne381@gmail.com> _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 5+ messages in thread
* [FFmpeg-devel] [PATCH 1/3] vulkan: fix leak in FFVkExecPool 2025-06-10 18:58 [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding averne @ 2025-06-10 18:58 ` averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 2/3] vulkan/ffv1dec: fix leak in FFVulkanDecodeShared averne ` (2 subsequent siblings) 3 siblings, 0 replies; 5+ messages in thread From: averne @ 2025-06-10 18:58 UTC (permalink / raw) To: ffmpeg-devel; +Cc: averne --- libavutil/vulkan.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavutil/vulkan.c b/libavutil/vulkan.c index a989e080abd372b8977dce107100b9370fac8305..eea80d0775a87ed6683cb58d30ba9ba8d6c1dd26 100644 --- a/libavutil/vulkan.c +++ b/libavutil/vulkan.c @@ -298,6 +298,8 @@ void ff_vk_exec_pool_free(FFVulkanContext *s, FFVkExecPool *pool) av_freep(&sd->desc_sets); } + av_freep(&pool->reg_shd); + for (int i = 0; i < pool->pool_size; i++) { if (pool->cmd_buf_pools[i]) vk->FreeCommandBuffers(s->hwctx->act_dev, pool->cmd_buf_pools[i], -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 5+ messages in thread
* [FFmpeg-devel] [PATCH 2/3] vulkan/ffv1dec: fix leak in FFVulkanDecodeShared 2025-06-10 18:58 [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 1/3] vulkan: fix leak in FFVkExecPool averne @ 2025-06-10 18:58 ` averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 3/3] vulkan/ffv1dec: fix FFVkSPIRVCompiler leak averne 2025-06-11 4:30 ` [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding Lynne 3 siblings, 0 replies; 5+ messages in thread From: averne @ 2025-06-10 18:58 UTC (permalink / raw) To: ffmpeg-devel; +Cc: averne --- libavcodec/vulkan_ffv1.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c index c839f4c3879e158e0c0bfb4f5a833fff0b83d2f0..8329b5d7dfad18de96884ea2c1f6f186682e430c 100644 --- a/libavcodec/vulkan_ffv1.c +++ b/libavcodec/vulkan_ffv1.c @@ -995,6 +995,8 @@ static void vk_decode_ffv1_uninit(FFVulkanDecodeShared *ctx) av_buffer_pool_uninit(&fv->slice_state_pool); av_buffer_pool_uninit(&fv->slice_offset_pool); av_buffer_pool_uninit(&fv->slice_status_pool); + + av_freep(&fv); } static int vk_decode_ffv1_init(AVCodecContext *avctx) -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 5+ messages in thread
* [FFmpeg-devel] [PATCH 3/3] vulkan/ffv1dec: fix FFVkSPIRVCompiler leak 2025-06-10 18:58 [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 1/3] vulkan: fix leak in FFVkExecPool averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 2/3] vulkan/ffv1dec: fix leak in FFVulkanDecodeShared averne @ 2025-06-10 18:58 ` averne 2025-06-11 4:30 ` [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding Lynne 3 siblings, 0 replies; 5+ messages in thread From: averne @ 2025-06-10 18:58 UTC (permalink / raw) To: ffmpeg-devel; +Cc: averne --- libavcodec/vulkan_ffv1.c | 58 +++++++++++++++++++----------------------------- 1 file changed, 23 insertions(+), 35 deletions(-) diff --git a/libavcodec/vulkan_ffv1.c b/libavcodec/vulkan_ffv1.c index 8329b5d7dfad18de96884ea2c1f6f186682e430c..b02bc71683fd7d06dad3f4cf667ee3e8c57f3c83 100644 --- a/libavcodec/vulkan_ffv1.c +++ b/libavcodec/vulkan_ffv1.c @@ -1033,23 +1033,17 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx) /* Intermediate frame pool for RCT */ for (int i = 0; i < 2; i++) { /* 16/32 bit */ - err = init_indirect(avctx, &ctx->s, &fv->intermediate_frames_ref[i], - i ? AV_PIX_FMT_GBRAP32 : AV_PIX_FMT_GBRAP16); - if (err < 0) - return err; + RET(init_indirect(avctx, &ctx->s, &fv->intermediate_frames_ref[i], + i ? AV_PIX_FMT_GBRAP32 : AV_PIX_FMT_GBRAP16)); } /* Setup shader */ - err = init_setup_shader(f, &ctx->s, &ctx->exec_pool, spv, &fv->setup); - if (err < 0) - return err; + RET(init_setup_shader(f, &ctx->s, &ctx->exec_pool, spv, &fv->setup)); /* Reset shaders */ for (int i = 0; i < 2; i++) { /* AC/Golomb */ - err = init_reset_shader(f, &ctx->s, &ctx->exec_pool, - spv, &fv->reset[i], !i ? AC_RANGE_CUSTOM_TAB : 0); - if (err < 0) - return err; + RET(init_reset_shader(f, &ctx->s, &ctx->exec_pool, + spv, &fv->reset[i], !i ? AC_RANGE_CUSTOM_TAB : 0)); } /* Decode shaders */ @@ -1059,39 +1053,31 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx) AVHWFramesContext *dec_frames_ctx; dec_frames_ctx = k ? (AVHWFramesContext *)fv->intermediate_frames_ref[i]->data : (AVHWFramesContext *)avctx->hw_frames_ctx->data; - err = init_decode_shader(f, &ctx->s, &ctx->exec_pool, - spv, &fv->decode[i][j][k], - dec_frames_ctx, - (AVHWFramesContext *)avctx->hw_frames_ctx->data, - i, - !j ? AC_RANGE_CUSTOM_TAB : AC_GOLOMB_RICE, - k); - if (err < 0) - return err; + RET(init_decode_shader(f, &ctx->s, &ctx->exec_pool, + spv, &fv->decode[i][j][k], + dec_frames_ctx, + (AVHWFramesContext *)avctx->hw_frames_ctx->data, + i, + !j ? AC_RANGE_CUSTOM_TAB : AC_GOLOMB_RICE, + k)); } } } /* Range coder data */ - err = ff_ffv1_vk_init_state_transition_data(&ctx->s, - &fv->rangecoder_static_buf, - f); - if (err < 0) - return err; + RET(ff_ffv1_vk_init_state_transition_data(&ctx->s, + &fv->rangecoder_static_buf, + f)); /* Quantization table data */ - err = ff_ffv1_vk_init_quant_table_data(&ctx->s, - &fv->quant_buf, - f); - if (err < 0) - return err; + RET(ff_ffv1_vk_init_quant_table_data(&ctx->s, + &fv->quant_buf, + f)); /* CRC table buffer */ - err = ff_ffv1_vk_init_crc_table_data(&ctx->s, - &fv->crc_tab_buf, - f); - if (err < 0) - return err; + RET(ff_ffv1_vk_init_crc_table_data(&ctx->s, + &fv->crc_tab_buf, + f)); /* Update setup global descriptors */ RET(ff_vk_shader_update_desc_buffer(&ctx->s, &ctx->exec_pool.contexts[0], @@ -1124,6 +1110,8 @@ static int vk_decode_ffv1_init(AVCodecContext *avctx) } fail: + spv->uninit(&spv); + return err; } -- 2.49.0 _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 5+ messages in thread
* Re: [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding 2025-06-10 18:58 [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding averne ` (2 preceding siblings ...) 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 3/3] vulkan/ffv1dec: fix FFVkSPIRVCompiler leak averne @ 2025-06-11 4:30 ` Lynne 3 siblings, 0 replies; 5+ messages in thread From: Lynne @ 2025-06-11 4:30 UTC (permalink / raw) To: ffmpeg-devel On 11/06/2025 03:58, averne wrote: > This fixes a few leaks reported by LeakSanitizer. > I tested this on my Intel laptop running anv, with > these patches no more leaks are detected. > > Signed-off-by: averne <averne381@gmail.com> > --- > averne (3): > vulkan: fix leak in FFVkExecPool > vulkan/ffv1dec: fix leak in FFVulkanDecodeShared > vulkan/ffv1dec: fix FFVkSPIRVCompiler leak > > libavcodec/vulkan_ffv1.c | 60 ++++++++++++++++++++---------------------------- > libavutil/vulkan.c | 2 ++ > 2 files changed, 27 insertions(+), 35 deletions(-) > --- > base-commit: 4059bce713118f961d24b5f08a4881c5e7214f9b > change-id: 20250610-vk-ffv1-leaks-7f0722236745 > > Best regards, LGTM Thanks, pushed the patchset. _______________________________________________ ffmpeg-devel mailing list ffmpeg-devel@ffmpeg.org https://ffmpeg.org/mailman/listinfo/ffmpeg-devel To unsubscribe, visit link above, or email ffmpeg-devel-request@ffmpeg.org with subject "unsubscribe". ^ permalink raw reply [flat|nested] 5+ messages in thread
end of thread, other threads:[~2025-06-11 4:30 UTC | newest] Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2025-06-10 18:58 [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 1/3] vulkan: fix leak in FFVkExecPool averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 2/3] vulkan/ffv1dec: fix leak in FFVulkanDecodeShared averne 2025-06-10 18:58 ` [FFmpeg-devel] [PATCH 3/3] vulkan/ffv1dec: fix FFVkSPIRVCompiler leak averne 2025-06-11 4:30 ` [FFmpeg-devel] [PATCH 0/3] Fix memory leaks in vulkan ffv1 decoding Lynne
Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel This inbox may be cloned and mirrored by anyone: git clone --mirror https://master.gitmailbox.com/ffmpegdev/0 ffmpegdev/git/0.git # If you have public-inbox 1.1+ installed, you may # initialize and index your mirror using the following commands: public-inbox-init -V2 ffmpegdev ffmpegdev/ https://master.gitmailbox.com/ffmpegdev \ ffmpegdev@gitmailbox.com public-inbox-index ffmpegdev Example config snippet for mirrors. AGPL code for this site: git clone https://public-inbox.org/public-inbox.git