obsproject/obs-studio

obs-browser crash when connecting to Twitch account

Closed this issue · 16 comments

Operating System Info

macOS 15

Other OS

No response

OBS Studio Version

Other

OBS Studio Version (Other)

32.0.0-beta2

OBS Studio Log URL

https://obsproject.com/logs/mlOMNBFOKaFpiQHL

OBS Studio Crash Log URL

No response

Expected Behavior

Twitch account remains connected/may be connected, adding docks and additional features.

Current Behavior

Twitch account is unable to authenticate and crashes upon attempting to sign in.

Steps to Reproduce

  1. Open OBS 32.0.0 beta 2
  2. Try to connect Twitch account in settings
  3. Enter username and password (2fa may be asked at first but now is not even reaching that far).
  4. OBS should crash

Anything else we should know?

I am using a Mac which may not be helping, and do also have a couple of plugins that do not load as a result of the adjusted parameters in this version. I do not believe this to seem likely to be unique to macOS but it is something to investigate if unnoticed in other operating systems.

Please provide the application crash log.

I think the conclusion on this was that this is an old/known crash that we have so far been unable to reproduce on dev machines. So we're aware that there is a rare crash condition here somewhere dating back several releases, but not sure exactly what causes it.

I was able to connect my account back to OBS by rolling back to OBS 31.1.2 so it seems that this is an issue that at least isn't present on macOS for that release.

Just to make this more easily searchable, your crash stack is:

Thread 0 Crashed:: CrBrowserMain Dispatch queue: com.apple.main-thread
0   obs-browser                   	       0x13627ef40 QCefWidgetInternal::closeBrowser() (in obs-browser) (browser-panel.cpp:214) + 421696
1   obs-browser                   	       0x13627ec04 QCefWidgetInternal::~QCefWidgetInternal() (in obs-browser) (browser-panel.cpp:157) + 420868
2   obs-browser                   	       0x13627ecb4 QCefWidgetInternal::~QCefWidgetInternal() (in obs-browser) (browser-panel.cpp:155) + 421044
3   OBS                           	       0x1046611ac OAuthLogin::accept() (in OBS) (OAuthLogin.cpp:0) + 430508
4   OBS                           	       0x1046609d4 OAuthLogin::urlChanged(QString const&) (in OBS) (OAuthLogin.cpp:106) + 428500
5   QtCore                        	       0x106d4fb38 0x106c70000 + 916280
6   obs-browser                   	       0x136258798 QCefWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (in obs-browser) (moc_browser-panel.cpp:100) + 264088
7   QtCore                        	       0x106d0ce18 QMetaMethodInvoker::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) + 1072
8   QtCore                        	       0x106d10434 QMetaObject::invokeMethodImpl(QObject*, char const*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) + 304
9   obs-browser                   	       0x13627a5f4 QCefBrowserClient::OnBeforeBrowse(scoped_refptr<CefBrowser>, scoped_refptr<CefFrame>, scoped_refptr<CefRequest>, bool, bool) (in obs-browser) (browser-panel-client.cpp:124) + 402932
10  obs-browser                   	       0x13622f6c4 (anonymous namespace)::request_handler_on_before_browse(_cef_request_handler_t*, _cef_browser_t*, _cef_frame_t*, _cef_request_t*, int, int) (in obs-browser) + 400 + 95940
11  Chromium Embedded Framework   	       0x3002b4788 cef_create_context_shared + 8804

The full stack is:

Full Crash
Thread 0 Crashed:: CrBrowserMain Dispatch queue: com.apple.main-thread
0   obs-browser                   	       0x13627ef40 0x136218000 + 421696
1   obs-browser                   	       0x13627ec04 0x136218000 + 420868
2   obs-browser                   	       0x13627ecb4 0x136218000 + 421044
3   OBS                           	       0x1046611ac 0x1045f8000 + 430508
4   OBS                           	       0x1046609d4 0x1045f8000 + 428500
5   QtCore                        	       0x106d4fb38 0x106c70000 + 916280
6   obs-browser                   	       0x136258798 0x136218000 + 264088
7   QtCore                        	       0x106d0ce18 QMetaMethodInvoker::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) + 1072
8   QtCore                        	       0x106d10434 QMetaObject::invokeMethodImpl(QObject*, char const*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) + 304
9   obs-browser                   	       0x13627a5f4 0x136218000 + 402932
10  obs-browser                   	       0x13622f6c4 0x136218000 + 95940
11  Chromium Embedded Framework   	       0x3002b4788 cef_create_context_shared + 8804
12  Chromium Embedded Framework   	       0x300339aec _$LT$read_fonts..tables..bitmap..BitmapFlags$u20$as$u20$font_types..raw..Scalar$GT$::to_raw::hb6a55d0a4992f500 + 246720
13  Chromium Embedded Framework   	       0x30867528c _$LT$skrifa..instance..Location$u20$as$u20$core..default..Default$GT$::default::h192a13b67c4d7fc0 + 28127688
14  Chromium Embedded Framework   	       0x3028426cc _$LT$font_types..tag..Tag$u20$as$u20$core..cmp..PartialEq$LT$$u5b$u8$u3b$$u20$4$u5d$$GT$$GT$::eq::hfd53458b4c0a93ed + 7043348
15  Chromium Embedded Framework   	       0x3028286e4 _$LT$font_types..tag..Tag$u20$as$u20$core..cmp..PartialEq$LT$$u5b$u8$u3b$$u20$4$u5d$$GT$$GT$::eq::hfd53458b4c0a93ed + 6936876
16  Chromium Embedded Framework   	       0x302826e08 _$LT$font_types..tag..Tag$u20$as$u20$core..cmp..PartialEq$LT$$u5b$u8$u3b$$u20$4$u5d$$GT$$GT$::eq::hfd53458b4c0a93ed + 6930512
17  Chromium Embedded Framework   	       0x302825f74 _$LT$font_types..tag..Tag$u20$as$u20$core..cmp..PartialEq$LT$$u5b$u8$u3b$$u20$4$u5d$$GT$$GT$::eq::hfd53458b4c0a93ed + 6926780
18  Chromium Embedded Framework   	       0x3028483ac _$LT$font_types..tag..Tag$u20$as$u20$core..cmp..PartialEq$LT$$u5b$u8$u3b$$u20$4$u5d$$GT$$GT$::eq::hfd53458b4c0a93ed + 7067124
19  Chromium Embedded Framework   	       0x30286b6c4 _$LT$font_types..tag..Tag$u20$as$u20$core..cmp..PartialEq$LT$$u5b$u8$u3b$$u20$4$u5d$$GT$$GT$::eq::hfd53458b4c0a93ed + 7211276
20  Chromium Embedded Framework   	       0x3021f5720 _$LT$font_types..tag..Tag$u20$as$u20$core..cmp..PartialEq$LT$$u5b$u8$u3b$$u20$4$u5d$$GT$$GT$::eq::hfd53458b4c0a93ed + 436584
21  Chromium Embedded Framework   	       0x303ffc228 _$LT$bool$u20$as$u20$cxx..shared_ptr..SharedPtrTarget$GT$::__get::hc9d6e495a3c6cb88 + 774060
22  Chromium Embedded Framework   	       0x304001160 _$LT$bool$u20$as$u20$cxx..shared_ptr..SharedPtrTarget$GT$::__get::hc9d6e495a3c6cb88 + 794340
23  Chromium Embedded Framework   	       0x303ffd914 _$LT$bool$u20$as$u20$cxx..shared_ptr..SharedPtrTarget$GT$::__get::hc9d6e495a3c6cb88 + 779928
24  Chromium Embedded Framework   	       0x3042f73ac fontations_ffi$cxxbridge1$BridgeHintingInstance$operator$sizeof + 2990112
25  Chromium Embedded Framework   	       0x3042f7740 fontations_ffi$cxxbridge1$BridgeHintingInstance$operator$sizeof + 2991028
26  Chromium Embedded Framework   	       0x303e9a220 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 636252
27  Chromium Embedded Framework   	       0x303eb7858 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 756628
28  Chromium Embedded Framework   	       0x3002f37ec cef_zip_reader_create + 125908
29  Chromium Embedded Framework   	       0x303eb8008 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 758596
30  Chromium Embedded Framework   	       0x303e7fa08 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 527684
31  Chromium Embedded Framework   	       0x303e80268 fontations_ffi$cxxbridge1$BridgeBitmapGlyph$operator$sizeof + 529828
32  Chromium Embedded Framework   	       0x30030cee8 _$LT$read_fonts..tables..bitmap..BitmapFlags$u20$as$u20$font_types..raw..Scalar$GT$::to_raw::hb6a55d0a4992f500 + 63420
33  QtCore                        	       0x106d47e30 QObject::event(QEvent*) + 664
34  QtWidgets                     	       0x109b7a828 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 336
35  QtWidgets                     	       0x109b7b7f0 QApplication::notify(QObject*, QEvent*) + 508
36  QtCore                        	       0x106d011f0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 200
37  QtCore                        	       0x106d02318 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 528
38  libqcocoa.dylib               	       0x10d717a6c 0x10d700000 + 96876
39  libqcocoa.dylib               	       0x10d718cc4 0x10d700000 + 101572
40  CoreFoundation                	       0x18c9feb14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
41  CoreFoundation                	       0x18c9feaa8 __CFRunLoopDoSource0 + 172
42  CoreFoundation                	       0x18c9fe814 __CFRunLoopDoSources0 + 232
43  CoreFoundation                	       0x18c9fd468 __CFRunLoopRun + 840
44  CoreFoundation                	       0x18c9fca98 CFRunLoopRunSpecific + 572
45  HIToolbox                     	       0x19849f27c RunCurrentEventLoopInMode + 324
46  HIToolbox                     	       0x1984a24e8 ReceiveNextEventCommon + 676
47  HIToolbox                     	       0x19862d484 _BlockUntilNextEventMatchingListInModeWithFilter + 76
48  AppKit                        	       0x190921a34 _DPSNextEvent + 684
49  AppKit                        	       0x1912c0940 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
50  libqcocoa.dylib               	       0x10d71653c 0x10d700000 + 91452
51  QtCore                        	       0x106d0acb0 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 596
52  QtWidgets                     	       0x109d987d0 QDialog::exec() + 500
53  OBS                           	       0x1046eeeac 0x1045f8000 + 1011372
54  OBS                           	       0x1046e5918 0x1045f8000 + 973080
55  OBS                           	       0x1047726a8 0x1045f8000 + 1549992
56  OBS                           	       0x104713544 0x1045f8000 + 1160516
57  QtCore                        	       0x106d4fadc 0x106c70000 + 916188
58  QtWidgets                     	       0x109c73a78 0x109b6c000 + 1079928
59  QtWidgets                     	       0x109c738b0 0x109b6c000 + 1079472
60  QtWidgets                     	       0x109c74868 QAbstractButton::mouseReleaseEvent(QMouseEvent*) + 188
61  QtWidgets                     	       0x109bc5c38 QWidget::event(QEvent*) + 128
62  QtWidgets                     	       0x109b7a828 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 336
63  QtWidgets                     	       0x109b7c968 QApplication::notify(QObject*, QEvent*) + 4980
64  QtCore                        	       0x106d011f0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 200
65  QtWidgets                     	       0x109b7ae80 QApplicationPrivate::sendMouseEvent(QWidget*, QMouseEvent*, QWidget*, QWidget*, QWidget**, QPointer<QWidget>&, bool, bool) + 892
66  QtWidgets                     	       0x109bdb06c 0x109b6c000 + 454764
67  QtWidgets                     	       0x109bda33c 0x109b6c000 + 451388
68  QtWidgets                     	       0x109b7a828 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 336
69  QtWidgets                     	       0x109b7b7f0 QApplication::notify(QObject*, QEvent*) + 508
70  QtCore                        	       0x106d011f0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 200
71  QtGui                         	       0x1061986a8 QGuiApplicationPrivate::processMouseEvent(QWindowSystemInterfacePrivate::MouseEvent*) + 1880
72  QtGui                         	       0x1061f5b5c QWindowSystemInterface::sendWindowSystemEvents(QFlags<QEventLoop::ProcessEventsFlag>) + 408
73  libqcocoa.dylib               	       0x10d718cc4 0x10d700000 + 101572
74  CoreFoundation                	       0x18c9feb14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
75  CoreFoundation                	       0x18c9feaa8 __CFRunLoopDoSource0 + 172
76  CoreFoundation                	       0x18c9fe814 __CFRunLoopDoSources0 + 232
77  CoreFoundation                	       0x18c9fd468 __CFRunLoopRun + 840
78  CoreFoundation                	       0x18c9fca98 CFRunLoopRunSpecific + 572
79  HIToolbox                     	       0x19849f27c RunCurrentEventLoopInMode + 324
80  HIToolbox                     	       0x1984a231c ReceiveNextEventCommon + 216
81  HIToolbox                     	       0x19862d484 _BlockUntilNextEventMatchingListInModeWithFilter + 76
82  AppKit                        	       0x190921a34 _DPSNextEvent + 684
83  AppKit                        	       0x1912c0940 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
84  AppKit                        	       0x190b4dbdc -[NSApplication _doModalLoop:peek:] + 216
85  AppKit                        	       0x190ebf1a8 __33-[NSApplication runModalSession:]_block_invoke_2 + 84
86  AppKit                        	       0x190ebf138 __33-[NSApplication runModalSession:]_block_invoke + 112
87  AppKit                        	       0x190b4bff4 _NSTryRunModal + 100
88  AppKit                        	       0x190ebf008 -[NSApplication runModalSession:] + 148
89  libqcocoa.dylib               	       0x10d7164f8 0x10d700000 + 91384
90  QtCore                        	       0x106d0acb0 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 596
91  QtWidgets                     	       0x109d987d0 QDialog::exec() + 500
92  OBS                           	       0x104812410 0x1045f8000 + 2204688
93  OBS                           	       0x1047d382c 0x1045f8000 + 1947692
94  QtCore                        	       0x106d4fadc 0x106c70000 + 916188
95  QtGui                         	       0x1064b9890 QAction::activate(QAction::ActionEvent) + 368
96  QtCore                        	       0x106d47e30 QObject::event(QEvent*) + 664
97  QtWidgets                     	       0x109b7a828 QApplicationPrivate::notify_helper(QObject*, QEvent*) + 336
98  QtWidgets                     	       0x109b7b7f0 QApplication::notify(QObject*, QEvent*) + 508
99  QtCore                        	       0x106d011f0 QCoreApplication::notifyInternal2(QObject*, QEvent*) + 200
100 QtCore                        	       0x106d02318 QCoreApplicationPrivate::sendPostedEvents(QObject*, int, QThreadData*) + 528
101 libqcocoa.dylib               	       0x10d717a6c 0x10d700000 + 96876
102 libqcocoa.dylib               	       0x10d718cc4 0x10d700000 + 101572
103 CoreFoundation                	       0x18c9feb14 __CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 28
104 CoreFoundation                	       0x18c9feaa8 __CFRunLoopDoSource0 + 172
105 CoreFoundation                	       0x18c9fe878 __CFRunLoopDoSources0 + 332
106 CoreFoundation                	       0x18c9fd468 __CFRunLoopRun + 840
107 CoreFoundation                	       0x18c9fca98 CFRunLoopRunSpecific + 572
108 HIToolbox                     	       0x19849f27c RunCurrentEventLoopInMode + 324
109 HIToolbox                     	       0x1984a231c ReceiveNextEventCommon + 216
110 HIToolbox                     	       0x19862d484 _BlockUntilNextEventMatchingListInModeWithFilter + 76
111 AppKit                        	       0x190921a34 _DPSNextEvent + 684
112 AppKit                        	       0x1912c0940 -[NSApplication(NSEventRouting) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 688
113 AppKit                        	       0x190914be4 -[NSApplication run] + 480
114 libqcocoa.dylib               	       0x10d71659c 0x10d700000 + 91548
115 QtCore                        	       0x106d0acb0 QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) + 596
116 QtCore                        	       0x106d01a18 QCoreApplication::exec() + 216
117 OBS                           	       0x1046f38f4 0x1045f8000 + 1030388
118 dyld                          	       0x18c572b98 start + 6076

For comparison, here is a crash I encountered on 32.0.0-rc1:

Thread 0 Crashed:: CrBrowserMain Dispatch queue: com.apple.main-thread
0   QtCore                        	       0x10330298c QTimer::~QTimer() + 36
1   obs-browser                   	       0x129662c0c QCefWidgetInternal::~QCefWidgetInternal() (in obs-browser) (browser-panel.cpp:157) + 420876
2   obs-browser                   	       0x129662cb4 QCefWidgetInternal::~QCefWidgetInternal() (in obs-browser) (browser-panel.cpp:155) + 421044
3   OBS                           	       0x100a6d17c OAuthLogin::accept() (in OBS) (OAuthLogin.cpp:0) + 430460
4   OBS                           	       0x100a6c9a4 OAuthLogin::urlChanged(QString const&) (in OBS) (OAuthLogin.cpp:106) + 428452
5   QtCore                        	       0x1032efb38 0x103210000 + 916280
6   obs-browser                   	       0x12963c798 QCefWidget::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) (in obs-browser) (moc_browser-panel.cpp:100) + 264088
7   QtCore                        	       0x1032ace18 QMetaMethodInvoker::invokeImpl(QMetaMethod, void*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) + 1072
8   QtCore                        	       0x1032b0434 QMetaObject::invokeMethodImpl(QObject*, char const*, Qt::ConnectionType, long long, void const* const*, char const* const*, QtPrivate::QMetaTypeInterface const* const*) + 304
9   obs-browser                   	       0x12965e5f4 QCefBrowserClient::OnBeforeBrowse(scoped_refptr<CefBrowser>, scoped_refptr<CefFrame>, scoped_refptr<CefRequest>, bool, bool) (in obs-browser) (browser-panel-client.cpp:124) + 402932
10  obs-browser                   	       0x1296136c4 (anonymous namespace)::request_handler_on_before_browse(_cef_request_handler_t*, _cef_browser_t*, _cef_frame_t*, _cef_request_t*, int, int) (in obs-browser) + 400 + 95940
11  Chromium Embedded Framework   	       0x16fe58788 cef_create_context_shared + 8804

Items 1-11 in the stacks are the same. Item 0 differs, but I'm not sure that's relevant. I expect this is the same crash. However, I'm pretty sure at the moment that this is a race condition crash that can also occur in older versions of OBS when browser panels/docks are being closed/destroyed. We'll keep investigating.

Have the same issue with the release version of 32 on Mac OS Tahoe 26.0

I’m also reporting that this issue persists in version 32.0.1 on macOS 26. Could you fix it as soon as possible? It’s quite a critical problem.

@RytoEX Hi, is there any urgent hotfix planned? This issue has been reported by several streamers on Discord every day for at least the past two weeks on MacOS, and if they are using platforms like SE.Live or similar, there is absolutely no way to bypass it manually.

We are still investigating, and do not have a conclusion for why this is happening, so there is no fix to push out.

@Fenrirthviti In my log, I can clearly see an issue: EXC_BAD_ACCESS (SIGSEGV). The crash is caused by the obs-browser module. It occurs in the QTimer destructor (a component from the Qt library responsible for timer management). The crash involves access to memory at address 0x78, which is invalid a typical sign of a use-after-free error (accessing memory after it has been freed). The crash happens in the CrBrowserMain thread within the obs-browser module. Hopefully, this information will be useful to you.

Please test with PR #12716 and obsproject/obs-browser#506 applied if you are able, as we think that should fix the problem.

@Fenrirthviti The version from PR12716 shows me without the option to connect an account. I only see the option to add a key.

Image

Hello, any update on this thread ?

Okay, i've seen the PR, it's fixed but we just need to wait the new release, right ?

Correct, we're reasonably confident we have a fix for this which will be in the next release.

Fixed by #12716.