Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Upgrade from 6.0 to 6.1 breaks WebRTC - coredump - 'sinkpad' should not be nullptr #687

Open
TangmereCottage opened this issue Oct 15, 2024 · 6 comments

Comments

@TangmereCottage
Copy link
Contributor

TangmereCottage commented Oct 15, 2024

@dusty-nv thanks for NanoLLM for CUDA=12.6 - works well!!

However, when I invoke it with:

sudo jetson-containers run $(autotag nano_llm) \
  python3 -m nano_llm.agents.video_query --api=mlc \
    --model Efficient-Large-Model/VILA1.5-3b \
    --max-context-len 256 \
    --max-new-tokens 32 \
    --video-input /dev/video0 \
    --video-output webrtc://@:8554/output

and then go to https://192.168.X.X:8554 to view the output, nano_llm core dumps due to 'sinkpad' should not be nullptr. I'm invoking this from the Orin - the same thing happens for https://127.0.0.1:8554 etc.

This is a known issue (see related discussion in jetson-inference dusty-nv/jetson-inference#1619) and so I've disabled #enable-webrtc-hide-local-ips-with-mdns in chrome://flags, which did not help. The other suggestion has to do with the STUN server, but enabling/disabling that did not help.

Anyone out there - any success with WebRTC from jetson-containers or jetson-utils or jetson-inference? If so, how did you get it to work?

@TangmereCottage
Copy link
Contributor Author

Ok, so according to https://patchwork.libcamera.org/patch/14939/ (from 2021) "gstreamer: Avoid call to deprecated gst_element_get_request_pad()". gst_element_get_request_pad() is the one that is failing. The current version of gst replaces gst_element_get_request_pad() with gst_element_request_pad_simple(). Will dig a bit more... Would be good to have the WebRTC be solid.

@TangmereCottage
Copy link
Contributor Author

Please see upstream PR. https://github.com/dusty-nv/jetson-utils/pull/219/files
When recompiling utils on CUDA=12.6 and the above change, everything seems to work

@TangmereCottage
Copy link
Contributor Author

TangmereCottage commented Oct 16, 2024

Update - changing to gst_element_request_pad_simple is not the fix.

1/ When I run video-viewer /dev/video webrtc://@:8554/output on the Orin, not in a docker, then everything works and I can see the video feed with Chromium at https://192.168.X.X:8554

2/ When I runvideo-viewer /dev/video webrtc://@:8554/output inside a Jetson docker, and then try to access the video data from the host, then I get the same coredump as before.

@TangmereCottage TangmereCottage changed the title NanoLLM - WebRTC - coredump - 'sinkpad' should not be nullptr Upgrade to 6.1 breaks WebRTC - coredump - 'sinkpad' should not be nullptr Oct 16, 2024
@TangmereCottage
Copy link
Contributor Author

TangmereCottage commented Oct 16, 2024

Per @Fibo27, WebRTC used to work as of 6.0 and no longer works w/ the change to 6.1: #688 (comment)

Hi level summary:

  • compiling jetson-utils on an Orin with CUDA=12.6 and running video-viewer /dev/video webrtc://@:8554/output => Everything works
  • compiling jetson-utils INSIDE a new 6.1/12.6 docker image (e.g. the new Nano_LLM container) running video-viewer /dev/video webrtc://@:8554/output => coredump when accessing :8554 with a browser. So there is something about (1) docker containers in general, and/or (2) the new 12.6 docker containers, that do not play well with WebRTC as implemented in jetson-utils.

@TangmereCottage TangmereCottage changed the title Upgrade to 6.1 breaks WebRTC - coredump - 'sinkpad' should not be nullptr Upgrade from 6.0 to 6.1 breaks WebRTC - coredump - 'sinkpad' should not be nullptr Oct 16, 2024
@TangmereCottage
Copy link
Contributor Author

No progress so far - I'll test on an older 6.0 Orin to confirm if it's a 6.0->6.1 issue. @dusty-nv - how can I be most useful in debugging this, or is it something dumb I'm doing?

@TangmereCottage
Copy link
Contributor Author

TangmereCottage commented Oct 31, 2024

Update - part of video-viewer works inside CUDA=12.6 containers. Working outputs are:

  • display://0
  • rtp://remote_ip:port

Appear to be broken:

  • webrtc: coredump with sink pad = nullptr
  • rstp: no streaming: streaming stopped, reason not-linked (-1)

So if you desperately need to get video data out at reasonable frame rates, then rtp works....

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant