obsproject / obs-studio

OBS Studio - Free and open source software for live streaming and screen recording
https://obsproject.com
GNU General Public License v2.0
57.29k stars 7.72k forks source link

Crash - WHIP runtime error: unable to generate ECDSA P-256 key pair #9846

Closed jprjr closed 5 months ago

jprjr commented 7 months ago

Operating System Info

Other

Other OS

Arch Linux

OBS Studio Version

30.0.0

OBS Studio Version (Other)

No response

OBS Studio Log URL

https://obsproject.com/logs/jCIOan14avzSBiUB

OBS Studio Crash Log URL

No response

Expected Behavior

I attempted a test stream on Broadcast Box with WHIP. My expectation is for video to be streamed to broadcast box using WebRTC.

Current Behavior

When I click "Start Streaming" using WHIP, OBS locks up for a moment, then crashes. It's not in the uploaded log, I'm not sure why - but the error message I get in the terminal reads:

terminate called after throwing an instance of 'std::runtime_error'
  what():  Unable to generate ECDSA P-256 key pair

Steps to Reproduce

  1. Use flatpak to install/update OBS to version 30.0.
  2. Configure OBS to stream to Broadcast Box using the following settings:
  3. Save settings
  4. Click "Start Streaming"

Anything else we should know?

It looks like there's a bit of previous discussion in the OBS forums here: https://obsproject.com/forum/threads/obs-studio-30-rc.168984/post-628963

Figured there should be a GitHub issue logged on this as well.

BigLugiaFollower commented 7 months ago

For extra information: This specific error comes up in the 30 RC 1, but doesn't show up in 30 beta-3. Version: Ubuntu 23.10

Trying to figure out what commit could cause this error to show up, but I don't know how to compile a flatpak. ( So this is all I can report on so far. )

RytoEX commented 7 months ago

If this is a regression between OBS Studio 30.0.0-beta3 and 30.0.0-rc1, then here's the diff: https://github.com/obsproject/obs-studio/compare/30.0.0-beta3...30.0.0-rc1

My first suspicion would be the one obs-webrtc commit (https://github.com/obsproject/obs-studio/commit/2308414bcc89975647c8db06609b3f03b43a422b). Possibly a difference between the C and C++ APIs. We might need to wrap something in a try-catch? The error seems to be from here: https://github.com/paullouisageneau/libdatachannel/blob/709a66339451bb4c8d4e5ced78c67605ec09da31/src/impl/certificate.cpp#L412

pkviet commented 7 months ago

pinging @Sean-Der to draw attention to this issue

tytan652 commented 7 months ago

Here is a backtrace:

#0  0x00007ffff3e91204 in __pthread_kill_implementation () at /usr/lib/x86_64-linux-gnu/libc.so.6
#1  0x00007ffff3e3f04e in raise () at /usr/lib/x86_64-linux-gnu/libc.so.6
#2  0x00007ffff3e287fc in abort () at /usr/lib/x86_64-linux-gnu/libc.so.6
#3  0x00007ffff42a9a59 in __gnu_cxx::__verbose_terminate_handler() [clone .cold] ()
    at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#4  0x00007ffff42b577a in __cxxabiv1::__terminate(void (*)()) ()
    at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#5  0x00007ffff42b57e5 in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#6  0x00007ffff42b5761 in  () at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#7  0x00007fff8b37ae51 in std::__basic_future<std::shared_ptr<rtc::impl::Certificate> >::_M_get_result() const (this=0x7fffd4001230) at /usr/include/c++/12.2.0/future:722
#8  std::shared_future<std::shared_ptr<rtc::impl::Certificate> >::get() const (this=0x7fffd4001230)
    at /usr/include/c++/12.2.0/future:942
#9  rtc::impl::PeerConnection::processLocalDescription(rtc::Description)
     (this=0x7fffd4000eb0, description=...) at /run/build/libdatachannel/src/impl/peerconnection.cpp:957
#10 0x00007fff8b304318 in rtc::PeerConnection::setLocalDescription(rtc::Description::Type)
    (this=0x7fffd4000e80, type=<optimized out>)
    at /run/build/libdatachannel/src/peerconnection.cpp:140
#11 0x00007fff8fc408f5 in WHIPOutput::Setup() (this=0x5555580a6190)
    at /usr/include/c++/12.2.0/bits/shared_ptr_base.h:1665
#12 0x00007fff8fc40a38 in WHIPOutput::StartThread() (this=0x5555580a6190)
    at /run/build/obs/plugins/obs-webrtc/whip-output.cpp:397
#13 0x00007ffff42e6294 in execute_native_thread_routine ()
    at /usr/lib/x86_64-linux-gnu/libstdc++.so.6
#14 0x00007ffff3e8f25a in start_thread () at /usr/lib/x86_64-linux-gnu/libc.so.6
#15 0x00007ffff3f17fc4 in clone () at /usr/lib/x86_64-linux-gnu/libc.so.6
jb4twin commented 7 months ago

Sorry to bump but it would be absolutely great to get a fix

s3gfaultx commented 6 months ago

Any movement on this issue?

Sean-Der commented 6 months ago

@s3gfaultx i will take care of this!

I am driving down issues on Broadcast Box first. I need some things from it to be able to work on new set of WebRTC + OBS features.

Sean-Der commented 6 months ago

My estimate is by end of week I will have a PR. I just have one other large issue to address

Sean-Der commented 6 months ago

I have fixed the Flatpak issue! Upstream PR is here

You could also use the flatpak builds where we switch to MbedTLS here

@s3gfaultx @jb4twin

Sean-Der commented 6 months ago

I got a few emails/DMs asking for flatpak builds. I put it on my personal server for now.

flatpak --user remote-add --no-gpg-verify sean-der-flatpak-obs https://siobud.com/sean-der-flatpak-obs/
flatpak --user install sean-der-flatpak-obs com.obsproject.Studio
flatpak run com.obsproject.Studio
Sean-Der commented 6 months ago

For Windows/Mac builds see https://github.com/obsproject/obs-studio/issues/9800#issuecomment-1873344692

tytan652 commented 6 months ago

Please, not everybody is used to how Flatpak CLI works, you should/must provide commands to remove your package and your repo/remote.

s3gfaultx commented 5 months ago

I rebuilt OBS and this issue appears resolved now.

Thank you for fixing it!

richardtatum commented 5 months ago

Please, not everybody is used to how Flatpak CLI works, you should/must provide commands to remove your package and your repo/remote.

For those unsure how to remove this package and remote repository once the main flatpak has been updated:

flatpak --user remove com.obsproject.Studio
flatpak --user remote-delete sean-der-flatpak-obs