Skip to content

OBS/CEF segfaults consistently on application exit #501

@mihawk90

Description

@mihawk90

edit:
Offending commit and workaround found, see comment 7.


Operating System Info

Other

Other OS

Fedora 42

OBS Studio Version

Other

OBS Studio Version (Other)

32.0.0-beta1

OBS Studio Log URL

https://github.com/user-attachments/files/22277058/2025-09-11.16-08-07.txt

OBS Studio Crash Log URL

https://github.com/user-attachments/files/22277059/gdb.txt

Expected Behavior

OBS should be closing the browserdocks and exiting cleanly.

Current Behavior

OBS segfaults on exit, resulting in the "unclean shutdown" dialogue showing each launch.

Steps to Reproduce

Unfortunately reproduction is a bit murky since last time during testing I wasn't able to get it consistently either (which is why I didn't open an issue then), so I can only infer from my main profile where it happens consistently.

  1. Login to Twitch to get the Twitch docks
  2. Add a couple more custom browser docks (I have 5 additional)
    • https://dashboard.twitch.tv/popout/u/<user>/stream-manager/stream-health
    • https://dashboard.twitch.tv/popout/u/<user>/stream-manager/quick-actions
    • https://dashboard.twitch.tv/popout/u/<user>/stream-manager/activity-feed?uuid=<uuid> (not sure why I still have this TBH)
    • https://dashboard.twitch.tv/popout/u/<user>/stream-manager/reward-queue?uuid=<uuid>
    • https://play.pretzel.rocks/my-music/playlists
    • I also have various browser sources, but from what I understand they should not be relevant here
  3. Close OBS
  4. Get lucky(?)
  5. ...
  6. Profit(?)/segfault

Anything else we should know?

This used to be a widespread issue (happening with just the Twitch docks even), but was fixed in (IIRC) OBS 30. It started happening again with the OBS 31.1 beta cycle.

On Discord I was troubleshooting with Matt and we ended up increasing the timeout here:

#if !defined(_WIN32) && !defined(__APPLE__) && CHROME_VERSION_BUILD >= 6533
QEventLoop loop;
connect(this, &QCefWidgetInternal::readyToClose, &loop, &QEventLoop::quit);
QTimer::singleShot(1000, &loop, &QEventLoop::quit);
loop.exec();

... to 5000, which fixed it for the most part. However it seems to me that increasing the timeout is really only a bandaid and not fixing the actual problem?

Regardless, during testing with a new profile I was unable to reproduce this consistently, which is likely due to not adding all the docks I have in my main profile, where I do get this consistently.

To my knowledge the exact cause of this crash is still unknown, but it was "fixed" with OBS 30 introducing the timeout loop. I have yet to figure out what happened between 31 and 31.1 beta1 to have this reappear, since I didn't get to bisect considering I couldn't reproduce it reliably in testing.

I don't remember if the backtrace from back then was the same/similar, you'd have to check the old beta discord channels for it, pretty sure I posted it.

This crash is likely tangentially related to #353

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions