Bug 417603

Summary: Plasma crashes in AppletsLayout::editModeCondition()
Product: [Plasma] plasmashell Reporter: wilson_tyler57
Component: Desktop ContainmentAssignee: Marco Martin <notmart>
Status: RESOLVED FIXED    
Severity: crash CC: 1142978300, darktemplar, dewisant, ikitime, kde, med.medin.2014, nate, plasma-bugs
Priority: NOR Keywords: drkonqi
Version: 5.17.5   
Target Milestone: 1.0   
Platform: Fedora RPMs   
OS: Linux   
Latest Commit: Version Fixed In: 5.18.3
Attachments: plasmashell-20200217-110455.kcrash.txt

Description wilson_tyler57 2020-02-13 22:33:01 UTC
Application: plasmashell (5.17.5)

Qt Version: 5.13.2
Frameworks Version: 5.66.0
Operating System: Linux 5.4.18-200.fc31.x86_64 x86_64
Distribution: Fedora 31 (Thirty One)

-- Information about the crash:
- Unusual behavior I noticed:

Every time i log in after a reboot or from a shutdown, my deskto is empty aside from an application shortcut and a document. No panel at the bottom to get into my application menu. After a few minutes everything goes black and then it all appears as well as a notification that plasma had crashed. Did not do this before on Fedora 30, but is a frequent issue on Fedora 31.

The crash can be reproduced every time.

-- Backtrace:
Application: Plasma (plasmashell), signal: Segmentation fault
Using host libthread_db library "/lib64/libthread_db.so.1".
[Current thread is 1 (Thread 0x7f272b5a0800 (LWP 1510))]

Thread 10 (Thread 0x7f26f4ed9700 (LWP 1884)):
#0  0x00007f272e778d45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f272f2bf8b3 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /lib64/libQt5Core.so.5
#2  0x00007f272f2bf941 in QWaitCondition::wait(QMutex*, unsigned long) () from /lib64/libQt5Core.so.5
#3  0x00007f2730f1e4e9 in QSGRenderThread::processEventsAndWaitForMore() () from /lib64/libQt5Quick.so.5
#4  0x00007f2730f1e78d in QSGRenderThread::run() () from /lib64/libQt5Quick.so.5
#5  0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#6  0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 9 (Thread 0x7f26f58d5700 (LWP 1814)):
#0  0x00007f272e778d45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f272f2bf8b3 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /lib64/libQt5Core.so.5
#2  0x00007f272f2bf941 in QWaitCondition::wait(QMutex*, unsigned long) () from /lib64/libQt5Core.so.5
#3  0x00007f2730f1e4e9 in QSGRenderThread::processEventsAndWaitForMore() () from /lib64/libQt5Quick.so.5
#4  0x00007f2730f1e78d in QSGRenderThread::run() () from /lib64/libQt5Quick.so.5
#5  0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#6  0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 8 (Thread 0x7f26f7327700 (LWP 1756)):
#0  0x00007f272daac8f3 in g_source_ref () from /lib64/libglib-2.0.so.0
#1  0x00007f272daac9a1 in g_source_iter_next () from /lib64/libglib-2.0.so.0
#2  0x00007f272daae16f in g_main_context_check () from /lib64/libglib-2.0.so.0
#3  0x00007f272daae7b2 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#4  0x00007f272daae943 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#5  0x00007f272f4be843 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#6  0x00007f272f4681db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#7  0x00007f272f2b8c45 in QThread::exec() () from /lib64/libQt5Core.so.5
#8  0x00007f26fc334c4c in KCupsConnection::run() () from /lib64/libkcupslib.so
#9  0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#10 0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#11 0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 7 (Thread 0x7f26f7fff700 (LWP 1740)):
#0  0x00007ffebcfbc6cb in ?? ()
#1  0x00007ffebcfbc918 in clock_gettime ()
#2  0x00007f272eefc6ab in clock_gettime@GLIBC_2.2.5 () from /lib64/libc.so.6
#3  0x00007f272f4be035 in qt_gettime() () from /lib64/libQt5Core.so.5
#4  0x00007f272f4bcb7d in QTimerInfoList::updateCurrentTime() () from /lib64/libQt5Core.so.5
#5  0x00007f272f4bcf89 in QTimerInfoList::timerWait(timespec&) () from /lib64/libQt5Core.so.5
#6  0x00007f272f4be4f4 in timerSourcePrepareHelper(GTimerSource*, int*) () from /lib64/libQt5Core.so.5
#7  0x00007f272f4be5a2 in timerSourcePrepare(_GSource*, int*) () from /lib64/libQt5Core.so.5
#8  0x00007f272daadd8a in g_main_context_prepare () from /lib64/libglib-2.0.so.0
#9  0x00007f272daae73b in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#10 0x00007f272daae943 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#11 0x00007f272f4be843 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#12 0x00007f272f4681db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#13 0x00007f272f2b8c45 in QThread::exec() () from /lib64/libQt5Core.so.5
#14 0x00007f2730e930da in QQuickPixmapReader::run() () from /lib64/libQt5Quick.so.5
#15 0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#16 0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#17 0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 6 (Thread 0x7f26fd828700 (LWP 1737)):
#0  0x00007f272e778d45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f272f2bf8b3 in QWaitCondition::wait(QMutex*, QDeadlineTimer) () from /lib64/libQt5Core.so.5
#2  0x00007f272f2bf941 in QWaitCondition::wait(QMutex*, unsigned long) () from /lib64/libQt5Core.so.5
#3  0x00007f2730f1e4e9 in QSGRenderThread::processEventsAndWaitForMore() () from /lib64/libQt5Quick.so.5
#4  0x00007f2730f1e78d in QSGRenderThread::run() () from /lib64/libQt5Quick.so.5
#5  0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#6  0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#7  0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 5 (Thread 0x7f27149c1700 (LWP 1707)):
#0  0x00007f272e778d45 in pthread_cond_wait@@GLIBC_2.3.2 () from /lib64/libpthread.so.0
#1  0x00007f271585919b in util_queue_thread_func () from /usr/lib64/dri/i965_dri.so
#2  0x00007f2715858dab in impl_thrd_routine () from /usr/lib64/dri/i965_dri.so
#3  0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#4  0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 4 (Thread 0x7f2716af6700 (LWP 1668)):
#0  0x00007f27317acdad in _dl_update_slotinfo () from /lib64/ld-linux-x86-64.so.2
#1  0x00007f27317acfac in update_get_addr () from /lib64/ld-linux-x86-64.so.2
#2  0x00007f27317b25ac in __tls_get_addr () from /lib64/ld-linux-x86-64.so.2
#3  0x00007f272f2b933a in QThreadData::current(bool) () from /lib64/libQt5Core.so.5
#4  0x00007f272f4be6fe in postEventSourcePrepare(_GSource*, int*) () from /lib64/libQt5Core.so.5
#5  0x00007f272daae269 in g_main_context_check () from /lib64/libglib-2.0.so.0
#6  0x00007f272daae7b2 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#7  0x00007f272daae943 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#8  0x00007f272f4be843 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#9  0x00007f272f4681db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#10 0x00007f272f2b8c45 in QThread::exec() () from /lib64/libQt5Core.so.5
#11 0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#12 0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#13 0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 3 (Thread 0x7f2717fff700 (LWP 1652)):
#0  0x00007f272ef2644c in read () from /lib64/libc.so.6
#1  0x00007f272daf653f in g_wakeup_acknowledge () from /lib64/libglib-2.0.so.0
#2  0x00007f272daae357 in g_main_context_check () from /lib64/libglib-2.0.so.0
#3  0x00007f272daae7b2 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#4  0x00007f272daae943 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#5  0x00007f272f4be843 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#6  0x00007f272f4681db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#7  0x00007f272f2b8c45 in QThread::exec() () from /lib64/libQt5Core.so.5
#8  0x00007f2730ba0399 in QQmlThreadPrivate::run() () from /lib64/libQt5Qml.so.5
#9  0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#10 0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#11 0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 2 (Thread 0x7f271d679700 (LWP 1569)):
#0  0x00007f272dafaa4d in g_mutex_lock () from /lib64/libglib-2.0.so.0
#1  0x00007f272daadd97 in g_main_context_prepare () from /lib64/libglib-2.0.so.0
#2  0x00007f272daae73b in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#3  0x00007f272daae943 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#4  0x00007f272f4be843 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#5  0x00007f272f4681db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#6  0x00007f272f2b8c45 in QThread::exec() () from /lib64/libQt5Core.so.5
#7  0x00007f272fce0f6a in QDBusConnectionManager::run() () from /lib64/libQt5DBus.so.5
#8  0x00007f272f2b9d96 in QThreadPrivate::start(void*) () from /lib64/libQt5Core.so.5
#9  0x00007f272e7724e2 in start_thread () from /lib64/libpthread.so.0
#10 0x00007f272ef356d3 in clone () from /lib64/libc.so.6

Thread 1 (Thread 0x7f272b5a0800 (LWP 1510)):
[KCrash Handler]
#6  0x00007f26fdab4da4 in AppletsLayout::editModeCondition() const () from /usr/lib64/qt5/qml/org/kde/plasma/private/containmentlayoutmanager/libcontainmentlayoutmanagerplugin.so
#7  0x00007f26fdac0d97 in QtPrivate::QFunctorSlotObject<ItemContainer::setLayout(AppletsLayout*)::{lambda()#1}, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase*, QObject*, void**, bool*) () from /usr/lib64/qt5/qml/org/kde/plasma/private/containmentlayoutmanager/libcontainmentlayoutmanagerplugin.so
#8  0x00007f272f493a60 in QMetaObject::activate(QObject*, int, int, void**) () from /lib64/libQt5Core.so.5
#9  0x00007f26fdab6558 in AppletsLayout::qt_static_metacall(QObject*, QMetaObject::Call, int, void**) () from /usr/lib64/qt5/qml/org/kde/plasma/private/containmentlayoutmanager/libcontainmentlayoutmanagerplugin.so
#10 0x00007f2730b768d6 in GenericBinding<2>::write(QV4::Value const&, bool, QFlags<QQmlPropertyData::WriteFlag>) () from /lib64/libQt5Qml.so.5
#11 0x00007f2730b77460 in QQmlNonbindingBinding::doUpdate(QQmlJavaScriptExpression::DeleteWatcher const&, QFlags<QQmlPropertyData::WriteFlag>, QV4::Scope&) () from /lib64/libQt5Qml.so.5
#12 0x00007f2730b73bc4 in QQmlBinding::update(QFlags<QQmlPropertyData::WriteFlag>) () from /lib64/libQt5Qml.so.5
#13 0x00007f2730b500dd in QQmlNotifier::emitNotify(QQmlNotifierEndpoint*, void**) () from /lib64/libQt5Qml.so.5
#14 0x00007f2730aed8e5 in QQmlData::signalEmitted(QAbstractDeclarativeData*, QObject*, int, void**) () from /lib64/libQt5Qml.so.5
#15 0x00007f272f49333f in QMetaObject::activate(QObject*, int, int, void**) () from /lib64/libQt5Core.so.5
#16 0x00007f272f493a60 in QMetaObject::activate(QObject*, int, int, void**) () from /lib64/libQt5Core.so.5
#17 0x00007f2731273c22 in Plasma::Applet::immutabilityChanged(Plasma::Types::ImmutabilityType) () from /lib64/libKF5Plasma.so.5
#18 0x00007f2731274fb1 in Plasma::Applet::flushPendingConstraintsEvents() () from /lib64/libKF5Plasma.so.5
#19 0x00007f2731279232 in Plasma::Applet::timerEvent(QTimerEvent*) () from /lib64/libKF5Plasma.so.5
#20 0x00007f272f494735 in QObject::event(QEvent*) () from /lib64/libQt5Core.so.5
#21 0x00007f272ff6eab6 in QApplicationPrivate::notify_helper(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#22 0x00007f272ff78150 in QApplication::notify(QObject*, QEvent*) () from /lib64/libQt5Widgets.so.5
#23 0x00007f272f4693e8 in QCoreApplication::notifyInternal2(QObject*, QEvent*) () from /lib64/libQt5Core.so.5
#24 0x00007f272f4bdae8 in QTimerInfoList::activateTimers() () from /lib64/libQt5Core.so.5
#25 0x00007f272f4be39c in timerSourceDispatch(_GSource*, int (*)(void*), void*) () from /lib64/libQt5Core.so.5
#26 0x00007f272daae510 in g_main_context_dispatch () from /lib64/libglib-2.0.so.0
#27 0x00007f272daae8a0 in g_main_context_iterate.isra () from /lib64/libglib-2.0.so.0
#28 0x00007f272daae943 in g_main_context_iteration () from /lib64/libglib-2.0.so.0
#29 0x00007f272f4be825 in QEventDispatcherGlib::processEvents(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#30 0x00007f272f4681db in QEventLoop::exec(QFlags<QEventLoop::ProcessEventsFlag>) () from /lib64/libQt5Core.so.5
#31 0x00007f272f4700b6 in QCoreApplication::exec() () from /lib64/libQt5Core.so.5
#32 0x0000558504d5271a in main ()
[Inferior 1 (process 1510) detached]

Reported using DrKonqi
Comment 1 Nate Graham 2020-02-15 21:49:03 UTC
Any chance you can update to Plasma 5.18 and see if it's fixed now? Plasma 5.17.5 isn't scheduled to get any new bugfixes and 5.18 is an LTS release.
Comment 2 darktemplar 2020-02-17 15:47:54 UTC
Created attachment 126104 [details]
plasmashell-20200217-110455.kcrash.txt

Issue reproduces for me as well. Attached backtrace for plasma-shell 5.17.5, for 5.18.0 it should be similar.

Information about my system:
Qt 5.12.6
Frameworks Version: 5.67.0
Plasma: 5.17.5

I've tried building and running plasma-workspace 5.18.0 only, without upgrading all KDE packages to 5.18.0, it still crashed for me. Reproduces maybe not 100% of time, but pretty often.

How I reproduced this issue:
1) Unlock widgets
2) On desktop push right mouse button and select menu item 'Add Widgets...'
3) Add various widgets to desktop using drag'n'drop on desktop.
   I've added at least following widgets on same desktop screen:
   Audio Volume, Battery and Brightness, Binary Clock, Clipboard, Color Picker, Grouping Plasmoid, Quick Chat
4) Remove just added widgets in random order
5) If necessary, repeat steps 3 and 4 a few times
   If widgets aren't appearing on desktop despite adding them via drag'n'drop, it's bugged and ready to crash. But it's not a requirement for crash.
6) lock widgets
7) plasmashell crashes

After crash and plasmashell restart all recently removed widgets are present on screen again. After removing all widgets again, plasmashell crashes again.
Comment 3 wilson_tyler57 2020-02-19 01:03:33 UTC
I have only experienced the crash on initial login, multiple times over the last week or so. My desktop is blank and the only thing sitting there is the desktop toolbox and any icons I have on the desktop. The crash initially happened when i started adding widgets back to have some GUI functionality but experienced the crash, i now notice that if i just let it sit long enough, it crashes anyway without any input nor widgets. This is reproducible and happens about ~80% of the time from an initial login after a shutdown (on a laptop).
I am currently running Fedora 31, upgraded from 30. plasmashell 5.18.0 is currently unavailable in the fedora 31 update repos so I have not had time to manually update to this version. As the other user stated, they were able to reproduce the issue on that version as well. Anything more that is needed, just ask.
Comment 4 darktemplar 2020-02-21 08:21:27 UTC
I'm not sure when plasma-5.18.0 or later would be available in Linux distro I'm using, but for now I've built plasma-workspace 5.18.1 and plasma-desktop 5.18.1, everything else remaining at version 5.17.5, and issue still reproduces for me.

I've tried bisecting plasma-workspace and found nothing, after that I tried bisecting plasma-desktop, and found that first commit when issue appears for me is:

https://phabricator.kde.org/D22035

My current guess is that somewhere in QML pointer to object deleted from C++ code remains and is used at some point, leading to crash.

I've tried removing following line:
https://cgit.kde.org/plasma-workspace.git/tree/components/containmentlayoutmanager/appletslayout.cpp?id=9b75c5c79621cf90eed71ea4472bc28faf7585c3#n664

and adding 'QQmlEngine::setObjectOwnership(container, QQmlEngine::JavaScriptOwnership);' before 'container->setVisible(false);' on line 697. I couldn't reproduce crash after that yet, but it introduced other issues: when I removed widget via menu from right mouse button, the rectangle which contained the widget data remained, and it had to be removed via 'customize layout' menu item from right mouse button menu, and even after that placing new widgets around areas where other widgets were just removed had some weird issues, looking like it was still considered as used screen space. So, it didn't work as solution for me.

Also reverting mentioned commit in plasma-desktop fixed issue for me, but I consider it only as hack and workaround and not a proper solution since it also reverts a lot of improvements to widgets made in plasma 5.17.0 and later.

I didn't find a proper solution yet, and help with this issue would be welcome.
Comment 5 darktemplar 2020-02-25 14:24:00 UTC
I've updated today to 5.18.1 and it still crashes same way. I've made a change which fixes issue for me:

https://phabricator.kde.org/D27650

Could you please check if applying this change to plasma-workspace fixes issue for you too or not?
Comment 6 David Edmundson 2020-02-25 14:57:12 UTC
>My current guess is that somewhere in QML pointer to object deleted from C++ code remains and is used at some point, leading to crash.

That would be a very good guess.

If you have a situation like this valgrind is your friend. It'll give you a stack trace of where the item used was first deleted.
Comment 7 darktemplar 2020-02-26 08:09:41 UTC
(In reply to David Edmundson from comment #6)
> >My current guess is that somewhere in QML pointer to object deleted from C++ code remains and is used at some point, leading to crash.
> 
> That would be a very good guess.
> 
> If you have a situation like this valgrind is your friend. It'll give you a
> stack trace of where the item used was first deleted.

I already did it before creating first version of my patch. No evidence of such issue happening was found.
Comment 8 David Edmundson 2020-02-27 01:34:59 UTC
*** Bug 418063 has been marked as a duplicate of this bug. ***
Comment 9 Christoph Feck 2020-03-06 11:37:09 UTC
Comment 5 mentions a submit request for this ticket; changing status until it is clarified.
Comment 10 David Edmundson 2020-03-06 11:42:46 UTC
Git commit 8f0da90f18ffa69efdc485f137096f36aedb3909 by David Edmundson, on behalf of Aleksei Nikiforov.
Committed on 06/03/2020 at 11:42.
Pushed by davidedmundson into branch 'Plasma/5.18'.

ItemContainer: disconnect signals in destructor

Summary:
Otherwise, setLayout function might be called for
already destructed instance of ItemContainer,
leading to double reference counter decrement of m_layout QPointer,
eventually invalidating such pointers prematurely.

Test Plan:
1) Unlock widgets via command: qdbus org.kde.plasmashell /PlasmaShell evaluateScript "lockCorona(false)"
2) On desktop push right mouse button and select menu item 'Add Widgets...'
3) Add various widgets to desktop using drag'n'drop on desktop.
   I've added at least following widgets on same desktop screen:
   Audio Volume, Battery and Brightness, Binary Clock, Clipboard, Color Picker, Grouping Plasmoid, Quick Chat
4) Remove just added widgets in random order
5) If necessary, repeat steps 3 and 4 a few times
   If widgets aren't appearing on desktop despite adding them via drag'n'drop, it's bugged and ready to crash. But it's not a requirement for crash.
6) lock widgets via command: qdbus org.kde.plasmashell /PlasmaShell evaluateScript "lockCorona(true)"
7) repeat steps 1-6 multiple times
8) plasmashell shouldn't crash

Reviewers: ngraham, davidedmundson, mart

Reviewed By: davidedmundson

Subscribers: cfeck, anthonyfieroni, plasma-devel

Tags: #plasma

Differential Revision: https://phabricator.kde.org/D27650

M  +2    -0    components/containmentlayoutmanager/itemcontainer.cpp

https://commits.kde.org/plasma-workspace/8f0da90f18ffa69efdc485f137096f36aedb3909
Comment 11 Nate Graham 2020-03-06 17:53:19 UTC
*** Bug 418063 has been marked as a duplicate of this bug. ***
Comment 12 Nate Graham 2020-03-06 17:54:50 UTC
*** Bug 418245 has been marked as a duplicate of this bug. ***
Comment 13 Nate Graham 2020-03-06 17:55:57 UTC
*** Bug 415831 has been marked as a duplicate of this bug. ***
Comment 14 Nate Graham 2020-03-06 17:56:13 UTC
*** Bug 415304 has been marked as a duplicate of this bug. ***