You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Problem
recorder.stop() / close() hangs indefinitely in native avcodec_free_context. Another thread also hangs in avcodec_send_frame. Using h264_nvenc encoder in a multi-threaded service. Environment
JavaCV 1.5.11
Ubuntu
NVIDIA Driver 550.144.03, CUDA 12.4
Java 17
Multi-threaded usage (multiple FFmpegFrameRecorder instances) Stack traces
Thread 1 (stuck in avcodec_free_context): "slice-task-service-impl-executor-1" #105 prio=5 os_prio=0 cpu=19964999.84ms elapsed=20653.39s tid=0x00007f293c0040d0 nid=0xd0 runnable [0x00007f28eecbd000] java.lang.Thread.State: RUNNABLE at org.bytedeco.ffmpeg.global.avcodec.avcodec_free_context(Native Method) at org.bytedeco.javacv.FFmpegFrameRecorder.releaseUnsafe(FFmpegFrameRecorder.java:232) - locked <0x000010005ca17380> (a org.bytedeco.javacv.FFmpegFrameRecorder) at org.bytedeco.javacv.FFmpegFrameRecorder.release(FFmpegFrameRecorder.java:203) - locked <0x0000100000636938> (a java.lang.Class for org.bytedeco.ffmpeg.global.avcodec) at org.bytedeco.javacv.FFmpegFrameRecorder.stop(FFmpegFrameRecorder.java:1012) at org.bytedeco.javacv.FrameRecorder.close(FrameRecorder.java:439) at com.chruix.media.service.Impl.SliceTaskServiceImpl.process(SliceTaskServiceImpl.java:199) at com.chruix.media.service.Impl.SliceTaskServiceImpl.process(SliceTaskServiceImpl.java:37) at com.chruix.media.service.ITaskService.lambda$post$0(ITaskService.java:56)
Thread 2 (stuck in avcodec_send_frame): "video-task-service-impl-executor-3" #331 prio=5 os_prio=0 cpu=15556.58ms elapsed=19881.08s tid=0x00007f292c4f3ea0 nid=0x691 runnable [0x00007f28501fd000] java.lang.Thread.State: RUNNABLE at org.bytedeco.ffmpeg.global.avcodec.avcodec_send_frame(Native Method) at org.bytedeco.javacv.FFmpegFrameRecorder.recordImage(FFmpegFrameRecorder.java:1118) - locked <0x00001000480c7a60> (a org.bytedeco.javacv.FFmpegFrameRecorder) at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:1025) - locked <0x00001000480c7a60> (a org.bytedeco.javacv.FFmpegFrameRecorder) at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:1018) at com.chruix.media.service.Impl.VideoTaskServiceImpl.processVideo(VideoTaskServiceImpl.java:91) at com.chruix.media.service.Impl.VideoTaskServiceImpl.process(VideoTaskServiceImpl.java:171) at com.chruix.media.service.Impl.VideoTaskServiceImpl.process(VideoTaskServiceImpl.java:41) at com.chruix.media.service.ITaskService.lambda$post$0(ITaskService.java:56)
What I tried
Upgraded to JavaCV 1.5.11
Driver/CUDA versions seem compatible
Question
Any fix or workaround for this NVENC-related hang? Thanks.
reacted with thumbs up emoji reacted with thumbs down emoji reacted with laugh emoji reacted with hooray emoji reacted with confused emoji reacted with heart emoji reacted with rocket emoji reacted with eyes emoji
Uh oh!
There was an error while loading. Please reload this page.
Problem
recorder.stop() / close() hangs indefinitely in native avcodec_free_context. Another thread also hangs in avcodec_send_frame. Using h264_nvenc encoder in a multi-threaded service.
Environment
JavaCV 1.5.11
Ubuntu
NVIDIA Driver 550.144.03, CUDA 12.4
Java 17
Multi-threaded usage (multiple FFmpegFrameRecorder instances)
Stack traces
Thread 1 (stuck in avcodec_free_context):
"slice-task-service-impl-executor-1" #105 prio=5 os_prio=0 cpu=19964999.84ms elapsed=20653.39s tid=0x00007f293c0040d0 nid=0xd0 runnable [0x00007f28eecbd000] java.lang.Thread.State: RUNNABLE at org.bytedeco.ffmpeg.global.avcodec.avcodec_free_context(Native Method) at org.bytedeco.javacv.FFmpegFrameRecorder.releaseUnsafe(FFmpegFrameRecorder.java:232) - locked <0x000010005ca17380> (a org.bytedeco.javacv.FFmpegFrameRecorder) at org.bytedeco.javacv.FFmpegFrameRecorder.release(FFmpegFrameRecorder.java:203) - locked <0x0000100000636938> (a java.lang.Class for org.bytedeco.ffmpeg.global.avcodec) at org.bytedeco.javacv.FFmpegFrameRecorder.stop(FFmpegFrameRecorder.java:1012) at org.bytedeco.javacv.FrameRecorder.close(FrameRecorder.java:439) at com.chruix.media.service.Impl.SliceTaskServiceImpl.process(SliceTaskServiceImpl.java:199) at com.chruix.media.service.Impl.SliceTaskServiceImpl.process(SliceTaskServiceImpl.java:37) at com.chruix.media.service.ITaskService.lambda$post$0(ITaskService.java:56)Thread 2 (stuck in avcodec_send_frame):
"video-task-service-impl-executor-3" #331 prio=5 os_prio=0 cpu=15556.58ms elapsed=19881.08s tid=0x00007f292c4f3ea0 nid=0x691 runnable [0x00007f28501fd000] java.lang.Thread.State: RUNNABLE at org.bytedeco.ffmpeg.global.avcodec.avcodec_send_frame(Native Method) at org.bytedeco.javacv.FFmpegFrameRecorder.recordImage(FFmpegFrameRecorder.java:1118) - locked <0x00001000480c7a60> (a org.bytedeco.javacv.FFmpegFrameRecorder) at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:1025) - locked <0x00001000480c7a60> (a org.bytedeco.javacv.FFmpegFrameRecorder) at org.bytedeco.javacv.FFmpegFrameRecorder.record(FFmpegFrameRecorder.java:1018) at com.chruix.media.service.Impl.VideoTaskServiceImpl.processVideo(VideoTaskServiceImpl.java:91) at com.chruix.media.service.Impl.VideoTaskServiceImpl.process(VideoTaskServiceImpl.java:171) at com.chruix.media.service.Impl.VideoTaskServiceImpl.process(VideoTaskServiceImpl.java:41) at com.chruix.media.service.ITaskService.lambda$post$0(ITaskService.java:56)What I tried
Upgraded to JavaCV 1.5.11
Driver/CUDA versions seem compatible
Question
Any fix or workaround for this NVENC-related hang? Thanks.
All reactions