* [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