[FFmpeg-trac] #10221(avcodec:new): Null pointer when nvenc gets aborted
FFmpeg
trac at avcodec.org
Sun Feb 26 18:06:55 EET 2023
#10221: Null pointer when nvenc gets aborted
-------------------------------------+-------------------------------------
Reporter: Daniel | Type: defect
Stankewitz |
Status: new | Priority: normal
Component: avcodec | Version: git-
| master
Keywords: | Blocked By:
Blocking: | Reproduced by developer: 0
Analyzed by developer: 0 |
-------------------------------------+-------------------------------------
**Summary of the bug:**
libavcodec crashes if nvenc gets aborted with i.e. "No capable devices
found" or any other error.
**How to reproduce:**
With any NVIDIA GPU that is not AV1 capable (because that'll create the
error "No capable devices found") with this example.
{{{
const AVCodec* codec = avcodec_find_encoder_by_name("av1_nvenc");
AVCodecContext* codecContext = avcodec_alloc_context3(codec);
codecContext->width = 320;
codecContext->height = 240;
codecContext->time_base = { 1, 25 };
codecContext->pix_fmt = AV_PIX_FMT_YUV420P;
int res = avcodec_open2(codecContext, codec, NULL);
avcodec_free_context(&codecContext);
ffmpeg version: a02e45a1f3cc6f07c7437c1e225dea2683f843cf
}}}
In ff_nvenc_encode_init the initialization order is:
{{{
if ((ret = nvenc_load_libraries(avctx)) < 0)
return ret;
if ((ret = nvenc_setup_device(avctx)) < 0)
return ret;
if ((ret = nvenc_setup_encoder(avctx)) < 0)
return ret;
if ((ret = nvenc_setup_surfaces(avctx)) < 0)
return ret;
}}}
... but in ff_nvenc_encode_close() it tries to work with fifo buffers that
are still null because they'll get initialized in nvenc_setup_surfaces()
later (after nvenc_setup_device()).
--
Ticket URL: <https://trac.ffmpeg.org/ticket/10221>
FFmpeg <https://ffmpeg.org>
FFmpeg issue tracker
More information about the FFmpeg-trac
mailing list