Git Inbox Mirror of the ffmpeg-devel mailing list - see https://ffmpeg.org/mailman/listinfo/ffmpeg-devel
 help / color / mirror / Atom feed
* [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