Crash when using H264 and MJPEG M2M encoders on V4L2_MEMORY_DMABUF buffers

Open
#4,764 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

Assessment

Difficulty
4/5
Estimated time
3-5 days
Newbie friendliness
30/100
Issue type
Bug
Clarity
Mostly clear
Activity status
Stale
Tech stack
c, linux

Research direction

Reproduce the crash with the TC358743 setup, V4L2_MEMORY_DMABUF buffers, and the ustreamer command shown in the issue. Start by examining the video_encode V4L2 M2M path and the resulting dmesg messages. Done means H264 and MJPEG can run simultaneously for many hours without a kernel crash.

Written by the indexing model from the issue text.

Description

Describe the bug
When encoding H264 and MJPEG simultaneously using V4L2 M2M encoders (video_encode component), when the image source buffer is of type V4L2_MEMORY_DMABUF, a kernel crash occurs after a few minutes.

To reproduce
0. TC358743 video capture and any 1080p signal source are used for reproducing.

  1. Add cma=128M to /boot/cmdline.txt.
  2. Add this to /boot/config.txt (some used to debug):
    gpu_mem=128
    enable_uart=1
    dtoverlay=tc358743
    dtoverlay=disable-bt
    start_x1=1
    
  3. Compile ustreamer:
    sudo apt-get install git libevent-dev libjpeg9-dev libbsd-dev
    git clone --depth=1 --branch=m2m https://github.com/pikvm/ustreamer
    cd ustreamer
    make -j5
    
  4. Download and apply EDID:
    wget https://raw.githubusercontent.com/pikvm/kvmd/master/configs/kvmd/tc358743-edid.hex
    v4l2-ctl --device=/dev/video0 --set-edid=file=tc358743-edid.hex --fix-edid-checksums
    
  5. Run ustreamer. Wait 5-10 minutes and you will see the crash in dmesg. After that, you will be able to press Ctrl+C on ustreamer and see a few more messages related to this:
    ./ustreamer --device=/dev/video0 --persistent --dv-timings --format=uyvy --encoder=m2m-video --workers=1 --h264-sink=test --host=::
    

Expected behaviour
No crash and stable operation for many hours.

Actual behaviour
Crash, pain and despair.

System
raspinfo.txt

Logs
See raspinfo ^^^

Dominant language
C
Stars
13.2k
Forks
5.5k
Avg merge
2d 21h
Merged PRs (30d)
21

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from raspberrypi/linux

All issues in raspberrypi/linux

Similar issues

More C issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.