Crash When Adding Or Editing Rich Text Filter

  • What is your operating system?

Linux Bazzite 44 - Installed and have this issue in the Flatpak as well as the downloadable .tar.gz archive.

  • What is your Shotcut version (see Help > About Shotcut)?

26.4.30

  • Can you repeat the problem? If so, what are the steps?

Add a video track to a project.

Use the “Split at Playhead” feature at two points along the track (can be just a couple seconds apart).

Make sure the play head is NOT positioned between the two points that were just created.

Add the “Rich Text” filter.

Sometimes, Shotcut crashes right here. If it does not:

Click on the clip in the timeline that contains the Rich Text filter WITHOUT first moving the playhead into that section of the track.

ISSUE: Shotcut crashes here (crash log attached). There appears to be some error related to properties in the Rich Text filter being set to null values, along with some other errors just before that.

If any additional details are required, please let me know.

Shotcut Crash 15-May 2026.txt (5.0 MB)

I have not reproduced it.

Would it help if I zip up a project file with a tiny video to give you one that does it to me every time? (If so, what is the file upload limit? Or I can upload it to another site and provide a link.)

You can upload a project file without the media to here. However, if you upload a very large project I might not bother to relink that much media. A short project file is recommended.

Sorry this took me so long to get around to! I’m attaching a project to this. There’s basically no video, just a png. All you need to do is load up the file and, without moving the scrub bar, click on the “transparent” object in the top video track. For me, it crashes with the error I posted in my original bug description.

Hope this helps track this down / it lets you recreate it. I’ve also had it happen on other clips with rich text filters, but this one was the easiest and smallest for reproducing. Let me know if there is anything else I can provide.

Bug With Rich Text Filter.zip (288.3 KB)

I reproduce it with that project but in the Flatpak only, no other Linux build so far and not on macOS, Windows, or Windows/Arm. I am making a beta for the next version soon, and I will test it on that. It probably uses a different version. I am also going to try to run the flatpak in the debugger,:

Thread 1 "shotcut" received signal SIGSEGV, Segmentation fault.
0x00007ffff555466b in QHash<unsigned long long, QQmlProfiler::RefLocation>::tryEmplace_impl<unsigned long long const&> (
    this=this@entry=0x28, key=@0x7fffffffbfa8: 140736221020588) at /usr/include/QtCore/qhash.h:1442
1442	        if (!d)

[1]+  Stopped                 flatpak run --devel --command=gdb org.shotcut.Shotcut//stable
ddennedy@pop-os:~/src$ bt
bt: command not found
ddennedy@pop-os:~/src$ fg
flatpak run --devel --command=gdb org.shotcut.Shotcut//stable
(gdb) bt
#0  0x00007ffff555466b in QHash<unsigned long long, QQmlProfiler::RefLocation>::tryEmplace_impl<unsigned long long const&>
    (this=this@entry=0x28, key=@0x7fffffffbfa8: 140736221020588) at /usr/include/QtCore/qhash.h:1442
#1  0x00007ffff560ccaf in QHash<unsigned long long, QQmlProfiler::RefLocation>::tryEmplace<>(unsigned long long const&)
    (this=0x28, key=@0x7fffffffbfa8: 140736221020588) at /usr/include/QtCore/qhash.h:1404
#2  QHash<unsigned long long, QQmlProfiler::RefLocation>::operator[] (this=0x28, key=@0x7fffffffbfa8: 140736221020588)
    at /usr/include/QtCore/qhash.h:1113
#3  QQmlProfiler::updateCreating (this=this@entry=0x0, obj=obj@entry=0x7fffb47601ac, ref=0x0, url=..., type=...)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/debugger/qqmlprofiler_p.h:329
#4  0x00007ffff55fb561 in QQmlObjectCreationProfiler::update
    (this=<synthetic pointer>, ref=<optimized out>, obj=0x7fffb47601ac, typeName=..., url=...)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/debugger/qqmlprofiler_p.h:464
#5  QQmlObjectCreator::createInstance
    (this=this@entry=0x55555b5b29b0, index=91, parent=0x55555b656ad0, isContextObject=isContextObject@entry=false)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1432
#6  0x00007ffff55fc722 in QQmlObjectCreator::setPropertyBinding
    (this=this@entry=0x55555b5b29b0, bindingProperty=bindingProperty@entry=0x7fffb4240e50, binding=binding@entry=0x7fffb475c210)
    at /usr/include/QtCore/qendian.h:258
#7  0x00007ffff560063e in QQmlObjectCreator::setupBindings (this=this@entry=0x55555b5b29b0, mode=...)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:826
#8  0x00007ffff56026e2 in QQmlObjectCreator::populateInstance (this=this@entry=0x55555b5b29b0, index=-1, index@entry=0, instance=0x0,
    instance@entry=0x55555b656ad0, bindingTarget=<optimized out>,
    bindingTarget@entry=0x55555b656ad0, valueTypeProperty=<optimized out>, valueTypeProperty@entry=0x0, binding=binding@entry=0x0)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1838
#9  0x00007ffff55faf7a in QQmlObjectCreator::createInstance
    (this=this@entry=0x55555b5b29b0, index=index@entry=0, parent=parent@entry=0x0, isContextObject=isContextObject@entry=true)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:1499
#10 0x00007ffff5604321 in QQmlObjectCreator::create
    (this=0x55555b5b29b0, subComponentIndex=<optimized out>, parent=0x0, interrupt=0x0, flags=<optimized out>)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:200
#11 QQmlObjectCreator::create
    (this=0x55555b5b29b0, subComponentIndex=<optimized out>, parent=parent@entry=0x0, interrupt=interrupt@entry=0x0, flags=<optimized out>) at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlobjectcreator.cpp:139
#12 0x00007ffff556fdb2 in QQmlComponentPrivate::beginCreate (this=0x5555571f7c00, context=...)
--Type <RET> for more, q to quit, c to continue without paging--
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1138
#13 0x00007ffff557030d in QQmlComponent::beginCreate (this=<optimized out>, context=<optimized out>)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlcomponent.cpp:1055
#14 0x00007ffff5571752 in QQmlComponentPrivate::createWithProperties
    (this=0x5555571f7c00, parent=parent@entry=0x0, properties=..., context=<optimized out>, behavior=behavior@entry=QQmlComponentPrivate::CreateDefault, createFromQml=createFromQml@entry=false) at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlcomponent.cpp:978
#15 0x00007ffff5571b00 in QQmlComponent::create (this=<optimized out>, context=<optimized out>)
    at /run/build-runtime/qt6-qtdeclarative/src/qml/qml/qqmlcomponent.cpp:939
#16 0x00007ffff7f571e3 in QQuickWidget::continueExecute (this=0x555556443190)
    at /run/build-runtime/qt6-qtdeclarative/src/quickwidgets/qquickwidget.cpp:1329
#17 0x00007ffff7f57712 in QQuickWidgetPrivate::execute (this=<optimized out>)
    at /run/build-runtime/qt6-qtdeclarative/src/quickwidgets/qquickwidget.cpp:344
#18 0x00007ffff7f5778a in QQuickWidget::setSource (this=<optimized out>, url=<optimized out>)
    at /run/build-runtime/qt6-qtdeclarative/src/quickwidgets/qquickwidget.cpp:749
#19 0x000055555598f462 in Mlt::VideoWidget::setCurrentFilter (this=0x555556443190, filter=0x55555b603e50, meta=0x555559d287f0)
    at /run/build/shotcut/src/videowidget.cpp:613
#20 0x00007ffff481979a in QtPrivate::QSlotObjectBase::call (this=0x555556ca5930, r=0x555556443190, a=0x7fffffffd120)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#21 doActivate<false> (sender=0x555556f03e90, signal_index=<optimized out>, argv=argv@entry=0x7fffffffd120)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qobject.cpp:4273
#22 0x00007ffff4810049 in QMetaObject::activate
    (sender=sender@entry=0x555556f03e90, m=m@entry=0x555555c42520 <FilterController::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x7fffffffd120) at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qobject.cpp:4333
#23 0x0000555555686fd8 in QMetaObject::activate<void, QmlFilter*, QmlMetadata*, int>
    (sender=0x555556f03e90, mo=0x555555c42520 <FilterController::staticMetaObject>, local_signal_index=0, ret=0x0)
    at /usr/include/QtCore/qobjectdefs.h:319
#24 FilterController::currentFilterChanged (this=this@entry=0x555556f03e90, _t1=<optimized out>,
    _t1@entry=0x55555b603e50, _t2=<optimized out>, _t2@entry=0x555559d287f0, _t3=<optimized out>)
    at /run/build/shotcut/_flatpak_build/src/shotcut_autogen/7CL2LH2DRO/moc_filtercontroller.cpp:286
#25 0x00005555557069bc in FilterController::setCurrentFilter (this=0x555556f03e90, attachedIndex=<optimized out>)
    at /run/build/shotcut/src/controllers/filtercontroller.cpp:270
#26 0x00007ffff480b1bc in QObject::event (this=<optimized out>, e=<optimized out>)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qobject.cpp:1413
#27 0x00007ffff73a6f9f in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x555556f03e90, e=0x555559a54790)
    at /run/build-runtime/qt6-qtbase/src/widgets/kernel/qapplication.cpp:3305
#28 0x00007ffff47ae008 in QCoreApplication::notifyInternal2 (receiver=0x555556f03e90, event=0x555559a54790)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qcoreapplication.cpp:1109
#29 0x00007ffff47ae26d in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qcoreapplication.cpp:1549
#30 0x00007ffff47b1bf9 in QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x555555c87350)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qcoreapplication.cpp:1904
#31 0x00007ffff4ae7a0f in postEventSourceDispatch (s=0x555555ca8f40)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:246
#32 0x00007ffff450e18e in g_main_dispatch (context=0x7fffe8000f80) at ../glib/gmain.c:3398
#33 0x00007ffff450f1bf in g_main_context_dispatch_unlocked (context=0x7fffe8000f80) at ../glib/gmain.c:4249
#34 g_main_context_iterate_unlocked
    (context=context@entry=0x7fffe8000f80, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../glib/gmain.c:4314
#35 0x00007ffff450f323 in g_main_context_iteration (context=0x7fffe8000f80, may_block=1) at ../glib/gmain.c:4379
#36 0x00007ffff4ae6f1d in QEventDispatcherGlib::processEvents (this=0x555555c96660, flags=...)
    at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:399
--Type <RET> for more, q to quit, c to continue without paging--
#37 0x00007ffff47bafe3 in QEventLoop::exec (this=this@entry=0x7fffffffd600, flags=..., flags@entry=...)
    at /run/build-runtime/qt6-qtbase/src/corelib/global/qflags.h:77
#38 0x00007ffff47b68c9 in QCoreApplication::exec () at /run/build-runtime/qt6-qtbase/src/corelib/kernel/qcoreapplication.cpp:1452
#39 0x00007ffff5bf991d in QGuiApplication::exec () at /run/build-runtime/qt6-qtbase/src/gui/kernel/qguiapplication.cpp:2005
#40 0x00007ffff73a6f09 in QApplication::exec () at /run/build-runtime/qt6-qtbase/src/widgets/kernel/qapplication.cpp:2575
#41 0x0000555555682ab5 in main (argc=<optimized out>, argv=<optimized out>) at /run/build/shotcut/src/main.cpp:482

The last line in Shotcut that ran is

#19 0x000055555598f462 in Mlt::VideoWidget::setCurrentFilter (this=0x555556443190, filter=0x55555b603e50, meta=0x555559d287f0)
    at /run/build/shotcut/src/videowidget.cpp:613
1 Like

Thanks for looking into it, and glad that it was easy to reproduce. I wonder if the reason it also did it for me with the non-Flatpak is because I pointed both applications to the same project / resource folders (so I could share my filters & sets without having to copy them).

This is fixed for the next version 26.6 (verified while testing a beta candidate build)

1 Like

Nice! Thanks, and I’m glad I could help suss out this bug. :slight_smile:

1 Like