Hi there,
I’m using gstreamer to encode 10bit hevc videos on the AGX Xavier (Jetpack 4.5.1).
My pipeline looks something like this:
appsrc --[video/x-raw P010_10LE]-> nvvidconv --[video/x-raw(memory:NVMM) P010_10LE]->
nvv4l2h265enc -> h265parse -> matroskamux -> filesink
This runs fine and recorded a couple hundred videos until an “Internal data stream error” occured, here’s the terminal output:
Writing case file to: /mnt/ssd/measurements/2/case000375
Opening in BLOCKING MODE
Opening in BLOCKING MODE
Opening in BLOCKING MODE
Opening in BLOCKING MODE
NvMMLiteOpen : Block : BlockType = 8
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 8
NvMMLiteOpen : Block : BlockType = 8
===== NVMEDIA: NVENC =====
NvMMLiteBlockCreate : Block : BlockType = 8
NVMEDIA: H265 : Profile : 2
NVMEDIA: H265 : Profile : 2
SYNC_IOC_FENCE_INFO ioctl failed with 9
NvDdkVicExecute Failed
nvbuffer_transform Failed
gst_nvvconv_transform: NvBufferTransform Failed
E0728 20:49:50.155305 2750 Gst10bitMonoRecorder.cpp:23] Gstreamer Error: Internal data stream error. //This is from a callback function called by the bus watch using gst_message_parse_error()
SYNC_IOC_FENCE_INFO ioctl failed with 9
NvDdkVicExecute Failed
nvbuffer_transform Failed
gst_nvvconv_transform: NvBufferTransform Failed
E0728 20:49:50.159631 2750 Gst10bitMonoRecorder.cpp:23] Gstreamer Error: Internal data stream error.
Opening channel /dev/nvhost-nvenc1 failed
NVENC_TVMR: Channel open failed
double free or corruption (out)
SYNC_IOC_FENCE_INFO ioctl failed with 9
NvDdkVicExecute Failed
nvbuffer_transform Failed
gst_nvvconv_transform: NvBufferTransform Failed
NvDdkVicExecute Failed
nvbuffer_transform Failed
gst_nvvconv_transform: NvBufferTransform Failed
Aborted (core dumped)
Note that a lot of the logs are doubled because it’s a stereo footage I’m trying to record using two gst pipelines.
It looks like the SYNC_IOC_FENCE_INFO call received a bad file descriptor and ultimately crashed the program.
also the backtrace:
#0 0x0000007f79d4c598 in __GI_raise (sig=sig@entry=6) at ../sysdeps/unix/sysv/linux/raise.c:51
#1 0x0000007f79d4d94c in __GI_abort () at abort.c:100
#2 0x0000007f79d8672c in __libc_message (action=action@entry=do_abort, fmt=fmt@entry=0x7f79e477e0 "%s\n")
at ../sysdeps/posix/libc_fatal.c:181
#3 0x0000007f79d8caa4 in malloc_printerr (str=str@entry=0x7f79e434b8 "double free or corruption (out)") at malloc.c:5342
#4 0x0000007f79d8e704 in _int_free (av=0x7f79e6da70 <main_arena>, p=0x7e9c4f3220, have_lock=<optimised out>) at malloc.c:4308
#5 0x0000007f77b20aa4 in () at /usr/lib/aarch64-linux-gnu/tegra/libnvtvmr.so
#6 0x0000007f77c0af3c in NvMediaIEPCreate () at /usr/lib/aarch64-linux-gnu/tegra/libnvmedia.so
#7 0x0000007f5c1e1854 in () at /usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_video.so
#8 0x0000007f5c1a5114 in NvMMLiteBlockDoWork () at /usr/lib/aarch64-linux-gnu/tegra/libnvmmlite_utils.so
#9 0x0000007f5c1b79f0 in () at /usr/lib/aarch64-linux-gnu/tegra/libnvmmlite.so
#10 0x0000007f5c221098 in () at /usr/lib/aarch64-linux-gnu/tegra/libtegrav4l2.so
#11 0x0000007f5c228840 in () at /usr/lib/aarch64-linux-gnu/tegra/libtegrav4l2.so
#12 0x0000007f77ad0628 in () at /usr/lib/aarch64-linux-gnu/tegra/libnvos.so
#13 0x0000007f81af8088 in start_thread (arg=0x7df03cb34f) at pthread_create.c:463
#14 0x0000007f79dea0cc in thread_start () at ../sysdeps/unix/sysv/linux/aarch64/clone.S:78
Can someone help me out with this?
Cheers