https://bugs.kde.org/show_bug.cgi?id=521547
Bug ID: 521547
Summary: digital clock froze for a few hours until i restarted
plasmashell
Classification: Plasma
Product: plasmashell
Version First 6.6.5
Reported In:
Platform: CachyOS
OS: Linux
Status: REPORTED
Severity: crash
Priority: NOR
Component: Digital Clock widget
Assignee: [email protected]
Reporter: [email protected]
Target Milestone: 1.0
DESCRIPTION
On a fairly fresh install of cachyOS, fully updated, my digitalclock widget
froze at around ~19:43 today (16/06/2026)
SOFTWARE/OS VERSIONS
Operating System: CachyOS x86_64 (Linux 7.0.12-1-cachyos)
KDE Plasma Version: 6.6.5-1.1
KDE Frameworks Version:
pacman -Qen | grep plasma
kdeplasma-addons 6.6.5-1.1
plasma-browser-integration 6.6.5-1.1
plasma-desktop 6.6.5-1.1
plasma-firewall 6.6.5-1.1
plasma-login-manager 6.6.5-1.1
plasma-nm 6.6.5-1.1
plasma-pa 6.6.5-1.1
plasma-systemmonitor 6.6.5-1.1
plasma-thunderbolt 6.6.5-1.1
pacman -Qen | grep kde
cachyos-emerald-kde-theme-git r25.d61d1dd-1
cachyos-iridescent-kde r2.16aa352-1
cachyos-kde-settings 4.9-8
cachyos-nord-kde-theme-git r16.d75759c-1
kde-gtk-config 6.6.5-1.1
kdeconnect 26.04.2-1.1
kdegraphics-thumbnailers 26.04.2-1.1
kdeplasma-addons 6.6.5-1.1
Qt Version:
pacman -Qen | grep qt
phonon-qt6-vlc 0.12.0-6
python-pyqt5 5.15.11-7
ADDITIONAL INFORMATION
Fairly minimal configuration
(/home/goatgarien/.config/plasma-org.kde.plasma.desktop-appletsrc)
[Containments][23][Applets][38]
immutability=1
plugin=org.kde.plasma.digitalclock
[Containments][23][Applets][38][Configuration]
popupHeight=451
popupWidth=560
[Containments][23][Applets][38][Configuration][ConfigDialog]
DialogHeight=630
DialogWidth=810
I had glm5 try to find the bug and ill copy paste it below. obviously the usual
AI warnings of "output can be wrong blah blah blah." Take it as you see fit:
Analysis: Frozen Clock Bug
Root Cause
The bug is in libclock/alignedtimer.cpp, line 79-81:
void AlignedTimer::initTimer()
{
itimerspec timespec = {{0, 0}, {0, 0}};
timespec.it_value.tv_sec = m_interval.count(); // ❌ BUG!
timespec.it_interval.tv_sec = m_interval.count();
const int flags = TFD_TIMER_ABSTIME | TFD_TIMER_CANCEL_ON_SET;
// ...
}
The problem: With TFD_TIMER_ABSTIME, it_value.tv_sec is interpreted as an
absolute Unix timestamp, not a relative offset. Setting
it to 60 means the timer fires at Unix timestamp 60 (January 1, 1970 00:01:00
UTC) - which is ~56 years in the past.
Why the Clock Usually Works
Despite this bug, the clock usually works because:
1. The timer fires immediately with millions of expirations
2. QSocketNotifier fires, read() consumes the expirations
3. The it_interval causes subsequent periodic firings every 60 seconds
Why It Freezes
The freeze happens when:
1. A system clock adjustment occurs (NTP sync, manual change, suspend/resume)
2. TFD_TIMER_CANCEL_ON_SET flag detects this and cancels the timer
3. read() returns with ECANCELED (or 0 bytes in edge cases)
4. The if (c == 0) check triggers initTimer() to re-arm
5. But if during this sequence something goes wrong (race condition, another
clock change, etc.), the timer ends up in a bad
state
The frozen display at ~19:43 suggests the time display stopped updating while
the actual time continued. This happens when:
- The timeout() signal stops being emitted
- OR the dateTime property binding breaks
- OR the QML binding doesn't react to updates
The Fix
The code should compute the next aligned boundary using the current time:
void AlignedTimer::initTimer()
{
struct timespec now;
if (clock_gettime(CLOCK_REALTIME, &now) != 0) {
qWarning() << "AlignedTimer: clock_gettime failed";
return;
}
const long long intervalSec = m_interval.count();
const long long nowSec = now.tv_sec;
const long long nextSec = ((nowSec / intervalSec) + 1) * intervalSec;
itimerspec timespec = {{0, 0}, {0, 0}};
timespec.it_value.tv_sec = nextSec; // Correct: absolute time for next
boundary
timespec.it_interval.tv_sec = intervalSec;
const int flags = TFD_TIMER_ABSTIME | TFD_TIMER_CANCEL_ON_SET;
const int err = timerfd_settime(m_timerFd, flags, ×pec, nullptr);
if (err) {
qWarning() << "Could not create timer. Error:" << strerror(err);
}
}
Note: The OpenBSD version (alignedtimer_posix.cpp) already implements this
correctly!
About the QML Errors
The errors you mentioned are unrelated to the freeze:
Setting initial properties failed: SimpleKCM does not have a property called
cfg_*
These are harmless QML warnings from the configuration dialog loading. They
don't affect the clock display.
Recommended Actions
1. Apply the fix shown above to libclock/alignedtimer.cpp
2. Report upstream to bugs.kde.org
3. Restart plasmashell to recover from a frozen state
I also had seemingly unrelated? logs in journalctl that are repeating. ill
paste them as well below:
journalctl -f -n 50 /usr/bin/plasmashell
Jun 16 21:55:58 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configCalendar.qml:
Setting initial properties failed: ScrollViewKCM does not have a property
called cfg_wheelChangesTimezone
Jun 16 21:55:58 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configCalendar.qml:
Setting initial properties failed: ScrollViewKCM does not have a property
called cfg_wheelChangesTimezoneDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]: OverlayZStacking must be
attached to a Popup
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:19:1:
QML PageRow: Created graphical object was not placed in the graphics scene.
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_autoFontAndSize
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_autoFontAndSizeDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_boldText
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_boldTextDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_customDateFormat
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_customDateFormatDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_dateDisplayFormat
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_dateDisplayFormatDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_dateFormat
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_dateFormatDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_displayTimezoneAsCode
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_displayTimezoneFormat
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_displayTimezoneFormatDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_enabledCalendarPlugins
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_enabledCalendarPluginsDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_firstDayOfWeek
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_firstDayOfWeekDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontFamily
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontFamilyDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontSize
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontSizeDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontStyleName
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontStyleNameDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontWeight
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_fontWeightDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_italicText
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_italicTextDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_lastSelectedTimezoneDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_pin
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_pinDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_selectedTimeZonesDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showDate
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showDateDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showLocalTimeZone
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showLocalTimezone
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showLocalTimezoneDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showSeconds
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showSecondsDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showWeekNumbers
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_showWeekNumbersDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_timeFormat
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_timeFormatDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_use24hFormat
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_use24hFormatDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
qrc:/qt/qml/plasma/applet/org/kde/plasma/digitalclock/configTimeZones.qml:
Setting initial properties failed: PageRow does not have a property called
cfg_wheelChangesTimezoneDefault
Jun 16 21:56:00 goatgarien-cachyos plasmashell[2199]:
file:///usr/lib/qt6/qml/org/kde/kirigami/controls/PageRow.qml:1124: TypeError:
Value is null and could not be converted to an object
--
You are receiving this mail because:
You are watching all bug changes.