From bd96ff53ddfc0787dd7b17344252ff6f6afb31d5 Mon Sep 17 00:00:00 2001 From: tfo Date: Tue, 10 Feb 2026 01:27:19 +0100 Subject: [PATCH] obs-nvenc: Fix resource destruction order The NVENC session was destroyed before its child resources (textures, surfaces) were cleaned up, causing resource cleanup calls to operate on an invalid session handle. Reorder destruction to free all registered resources before destroying the encoder session. --- plugins/obs-nvenc/nvenc.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/plugins/obs-nvenc/nvenc.c b/plugins/obs-nvenc/nvenc.c index fb3894525..1bf714993 100644 --- a/plugins/obs-nvenc/nvenc.c +++ b/plugins/obs-nvenc/nvenc.c @@ -1029,16 +1029,19 @@ static void nvenc_destroy(void *data) for (size_t i = 0; i < enc->bitstreams.num; i++) { nv_bitstream_free(enc, &enc->bitstreams.array[i]); } - if (enc->session) - nv.nvEncDestroyEncoder(enc->session); - #ifdef _WIN32 d3d11_free_textures(enc); - d3d11_free(enc); #else cuda_opengl_free(enc); #endif cuda_free_surfaces(enc); + + if (enc->session) + nv.nvEncDestroyEncoder(enc->session); + +#ifdef _WIN32 + d3d11_free(enc); +#endif cuda_ctx_free(enc); bfree(enc->header);