Skip to content

Blank screen (due to timer overflow?) #10826

@emilio

Description

@emilio

Describe the bug

The GUI is blank. The console is totally flooded by:

[19.10.2025 19:32:01.315] Warning: QTimer::start: negative intervals aren't allowed; the interval will be set to 1ms.

VPN version:

Mozilla VPN 2.31.1

Affected Platforms:

Linux

Steps to reproduce:

Run the mozillavpn binary.

Expected result:

A working GUI.

Actual result:

Blank screen.

Additional notes:

I think at least the console spam seems like an integer overflow?

(gdb) p now
$14 = {d = {d = 0x199fdf5e9828f, data = {status = 143, msecs = 1760902375810}}}
(gdb) p expire
$15 = {d = {d = 0x19a8dec90f94f, data = {status = 79, msecs = 1763317682425}}}
(gdb) p now.msecsTo(expire)
$16 = 2418906615
(gdb) bt
#0  checkInterval (caller=0x7ffff5086699 "QTimer::start", interval=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:252
#1  QTimer::start (this=0x555556f14988, interval=...) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:285
#2  QTimer::start (this=0x555556f14988, msec=-1876060681) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:244
#3  0x0000555555710e34 in AddonConditionWatcherTriggerTimeSecs::maybeStartTimer (this=0x555556f14970)
    at /usr/src/debug/mozillavpn/mozillavpn-2.31.1/src/addons/conditionwatchers/addonconditionwatchertriggertimesecs.cpp:56
#4  0x0000555555710f01 in operator() (__closure=0x555556ee6a40)
    at /usr/src/debug/mozillavpn/mozillavpn-2.31.1/src/addons/conditionwatchers/addonconditionwatchertriggertimesecs.cpp:30
#5  operator() (__closure=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:116
#6  QtPrivate::FunctorCallBase::call_internal<void, QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, AddonConditionWatcherTriggerTimeSecs::AddonConditionWatcherTriggerTimeSecs(QObject*, qint64)::<lambda()> >::call(AddonConditionWatcherTriggerTimeSecs::AddonConditionWatcherTriggerTimeSecs(QObject*, qint64)::<lambda()>&, void**)::<lambda()> > (args=<optimized out>, fn=...) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:65
#7  QtPrivate::FunctorCall<std::integer_sequence<long unsigned int>, QtPrivate::List<>, void, AddonConditionWatcherTriggerTimeSecs::AddonConditionWatcherTriggerTimeSecs(QObject*, qint64)::<lambda()> >::call (f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:115
#8  QtPrivate::FunctorCallable<AddonConditionWatcherTriggerTimeSecs::AddonConditionWatcherTriggerTimeSecs(QObject*, qint64)::<lambda()> >::call<QtPrivate::List<>, void> (
    f=..., arg=<optimized out>) at /usr/include/qt6/QtCore/qobjectdefs_impl.h:337
#9  QtPrivate::QCallableObject<AddonConditionWatcherTriggerTimeSecs::AddonConditionWatcherTriggerTimeSecs(QObject*, qint64)::<lambda()>, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=<optimized out>, this_=0x555556ee6a30, r=<optimized out>, a=<optimized out>, ret=<optimized out>)
    at /usr/include/qt6/QtCore/qobjectdefs_impl.h:547
#10 0x00007ffff4dd716f in QtPrivate::QSlotObjectBase::call (this=<optimized out>, r=<optimized out>, a=<optimized out>, this=<optimized out>, r=<optimized out>,
    a=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs_impl.h:461
#11 doActivate<false> (sender=<optimized out>, signal_index=<optimized out>, argv=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:4255
#12 0x00007ffff4de439c in QMetaObject::activate<void, QTimer::QPrivateSignal> (sender=<optimized out>, mo=<optimized out>, local_signal_index=0, ret=0x0)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobjectdefs.h:319
#13 QTimer::timeout (this=<optimized out>, _t1=...) at /usr/src/debug/qt6-base/build/src/corelib/Core_autogen/include/moc_qtimer.cpp:182
#14 QTimer::timerEvent (e=<optimized out>, this=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:322
#15 QTimer::timerEvent (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimer.cpp:316
#16 0x00007ffff4dc44f6 in QObject::event (this=<optimized out>, e=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qobject.cpp:1386
#17 0x00007ffff67020a0 in QApplicationPrivate::notify_helper (this=<optimized out>, receiver=0x555556f14988, e=0x7fffffffce30)
    at /usr/src/debug/qt6-base/qtbase/src/widgets/kernel/qapplication.cpp:3307
#18 0x00007ffff4d6a6c8 in QCoreApplication::notifyInternal2 (receiver=0x555556f14988, event=0x7fffffffce30)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1109
#19 0x00007ffff4f2c6af in QCoreApplication::sendEvent (receiver=<optimized out>, event=0x7fffffffce30)
    at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qcoreapplication.cpp:1549
#20 QTimerInfoList::activateTimers (this=0x555556b67df0) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qtimerinfo_unix.cpp:426
#21 0x00007ffff504dad1 in timerSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:152
#22 idleTimerSourceDispatch (source=<optimized out>) at /usr/src/debug/qt6-base/qtbase/src/corelib/kernel/qeventdispatcher_glib.cpp:199
#23 0x00007ffff76a8f4d in g_main_dispatch (context=0x7fff94000f60) at ../glib/glib/gmain.c:3565
#24 0x00007ffff76aa617 in g_main_context_dispatch_unlocked (context=0x7fff94000f60) at ../glib/glib/gmain.c:4425
#25 g_main_context_iterate_unlocked (context=context@entry=0x7fff94000f60, block=block@entry=1, dispatch=dispatch@entry=1, self=<optimized out>)
    at ../glib/glib/gmain.c:4490
#26 0x00007ffff76aa825 in g_main_context_iteration (context=0x7fff94000f60, may_block=1) at ../glib/glib/gmain.c:4556
#27 0x00007ffff504a9d2 in QEventDispatcherGlib::processEvents (this=0x555556aeedd0, flags=...)

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't working

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions