fix: YouTube media load segfaults on macOS/Linux (#548)#549
Merged
FelipeDefensor merged 2 commits intoJun 23, 2026
Merged
Conversation
…tator#548) The file-drop QObject event filter was installed on the whole QApplication. A Python app-global event filter forces PySide to wrap every QObject that receives a filtered event into a Python object; QtWebEngine renders via internal QtQuick objects, and wrapping those during the hover events that follow a media load crashed inside getWrapperForQObject, raising SIGSEGV. Scope the filter to the main window. To keep file drops working over the timeline area, disable drops on TimelineUIsView (a QGraphicsView, which accepts drops by default and was swallowing the events) so Qt routes them up to the main window where the filter lives.
…arametrization The tlui fixture declared its own params= but was only ever used via indirect=['tlui']. On Python 3.10/macOS, pytest raises a collection error when a fixture with params= is also used as an indirect parameter. Since all direct users in subpackages define a local tlui override, the conftest fixture params were unused and safe to drop.
azfoo
approved these changes
Jun 23, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Loading a YouTube video (File ▸ Load media ▸ YouTube) deterministically segfaults on macOS/Linux. Reproduced from source — not a build/packaging issue.
Closes #548.
Root cause
The file-drop event filter (
FileDropEventFilter) was installed on the wholeQApplication. A Python app-global event filter forces PySide to wrap every QObject that receives a filtered event into a Python object. QtWebEngine renders via internal QtQuick objects; the hover events those generate after a media load get routed through the global filter, and wrapping them crashes ingetWrapperForQObject.Native backtrace (from the macOS crash report):
The crash is in shiboken marshalling, before the Python
eventFilterbody runs — so it can't be guarded in Python.Fix
QApplication. WebEngine windows are separate top-levels, so their QtQuick objects never traverse the filter.TimelineUIsViewis aQGraphicsView, which accepts drops by default and was swallowing drag events over the timeline area. SetsetAcceptDrops(False)so Qt'sfindDnDTargetroutes those drops up to the main window where the filter lives.Net: drops still work everywhere in the main window; the crash is gone.
Verification
APP_MEDIA_LOADwith a YouTube URL — before: 3/3 SIGSEGV (exit 139); after: 5/5 clean.findDnDTargetfrom the timeline viewport → resolves toTiliaMainWindow(drop-accepting ancestor).481 passed, 2 xfailed, 2 xpassed(qtui + all timeline UI).🤖 Generated with Claude Code