Bug 422943 - infinite loop in kquickcharts
Summary: infinite loop in kquickcharts
Status: RESOLVED FIXED
Alias: None
Product: frameworks-kquickcharts
Classification: Frameworks and Libraries
Component: general (other bugs)
Version First Reported In: 5.70.0
Platform: Other Linux
: NOR normal
Target Milestone: ---
Assignee: Arjen Hiemstra
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2020-06-14 00:57 UTC by Alexey Min
Modified: 2020-06-15 15:30 UTC (History)
1 user (show)

See Also:
Latest Commit:
Version Fixed/Implemented In:
Sentry Crash Report:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Min 2020-06-14 00:57:41 UTC
STEPS TO REPRODUCE
Try to add "Hard disk usage monitor" plasmoid to plasma 5.19 desktop (or switch display style of CPU/Memory monitor plasmoid to "bars"

OBSERVED RESULT
Plasmashell crashes

SOFTWARE/OS VERSIONS
Linux/KDE Plasma: Gentoo Linux
KDE Plasma Version: 5.19
KDE Frameworks Version: 5.70
Qt Version: 5.14.2

This backtrace pattern repeats:

Thread 1 "plasmashell" received signal SIGSEGV, Segmentation fault.
0x00007fff92d2c811 in ModelSource::itemCount (this=0x5555592ecd50) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/datasource/ModelSource.cpp:51
51      {
(gdb) bt
#0  0x00007fff92d2c811 in ModelSource::itemCount() const (this=0x5555592ecd50) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/datasource/ModelSource.cpp:51
#1  0x00007fff92d2c8bd in ModelSource::minimum() const (this=0x5555592ecd50) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/datasource/ModelSource.cpp:93
#2  0x00007fff92d21d16 in XYChart::<lambda(ChartDataSource*)>::operator() (__closure=<optimized out>, source=<optimized out>) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:107
#3  std::_Function_handler<double(ChartDataSource*), XYChart::updateComputedRange()::<lambda(ChartDataSource*)> >::_M_invoke(const std::_Any_data &, ChartDataSource *&&) (__functor=..., __args#0=<optimized out>)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/bits/std_function.h:285
#4  0x00007fff92d28331 in std::function<double (ChartDataSource*)>::operator()(ChartDataSource*) const (__args#0=<optimized out>, this=0x7fffff7ff210)
    at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/bits/stl_algo.h:3875
#5  RangeGroup::<lambda(ChartDataSource*)>::operator() (source=0x5555592ecd50, __closure=<synthetic pointer>) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/RangeGroup.cpp:123
#6  std::for_each<QTypedArrayData<ChartDataSource*>::const_iterator, RangeGroup::calculateRange(const QVector<ChartDataSource*>&, std::function<double(ChartDataSource*)>, std::function<double(ChartDataSource*)>)::<lambda(ChartDataSource*)> > (__f=..., __last=..., __first=...) at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/bits/stl_algo.h:3876
#7  RangeGroup::calculateRange(QVector<ChartDataSource*> const&, std::function<double (ChartDataSource*)>, std::function<double (ChartDataSource*)>)
    (this=this@entry=0x555558711e50, sources=..., minimumCallback=..., maximumCallback=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/RangeGroup.cpp:125
#8  0x00007fff92d22409 in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/lib/gcc/x86_64-pc-linux-gnu/9.2.0/include/g++-v9/new:174
#9  0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
#10 0x00007ffff5bbed01 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x555556869060, r=0x5555582713d0, a=0x7fffff7ff470)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#11 0x00007ffff5bfe4c5 in doActivate<false>(QObject*, int, void**) (sender=0x5555582713d0, signal_index=36, argv=0x7fffff7ff470)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3870
#12 0x00007ffff5bf835d in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555582713d0, m=0x7fff92d4df60 <XYChart::staticMetaObject>, local_signal_index=2, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#13 0x00007fff92d1ba23 in XYChart::computedRangeChanged() (this=this@entry=0x5555582713d0) at src/QuickChartsStatic_autogen/EWIEGA46WW/moc_XYChart.cpp:236
#14 0x00007fff92d221b5 in XYChart::setComputedRange(ComputedRange) (this=this@entry=0x5555582713d0, range=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:123
#15 0x00007fff92d224ae in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:113
#16 0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
#17 0x00007ffff5bbed01 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x555556869060, r=0x5555582713d0, a=0x7fffff7ff800)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#18 0x00007ffff5bfe4c5 in doActivate<false>(QObject*, int, void**) (sender=0x5555582713d0, signal_index=36, argv=0x7fffff7ff800)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3870
#19 0x00007ffff5bf835d in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555582713d0, m=0x7fff92d4df60 <XYChart::staticMetaObject>, local_signal_index=2, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#20 0x00007fff92d1ba23 in XYChart::computedRangeChanged() (this=this@entry=0x5555582713d0) at src/QuickChartsStatic_autogen/EWIEGA46WW/moc_XYChart.cpp:236
#21 0x00007fff92d221b5 in XYChart::setComputedRange(ComputedRange) (this=this@entry=0x5555582713d0, range=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:123
#22 0x00007fff92d224ae in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:113
#23 0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
#24 0x00007ffff5bbed01 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x555556869060, r=0x5555582713d0, a=0x7fffff7ffb90)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#25 0x00007ffff5bfe4c5 in doActivate<false>(QObject*, int, void**) (sender=0x5555582713d0, signal_index=36, argv=0x7fffff7ffb90)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3870
#26 0x00007ffff5bf835d in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555582713d0, m=0x7fff92d4df60 <XYChart::staticMetaObject>, local_signal_index=2, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#27 0x00007fff92d1ba23 in XYChart::computedRangeChanged() (this=this@entry=0x5555582713d0) at src/QuickChartsStatic_autogen/EWIEGA46WW/moc_XYChart.cpp:236
#28 0x00007fff92d221b5 in XYChart::setComputedRange(ComputedRange) (this=this@entry=0x5555582713d0, range=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:123
#29 0x00007fff92d224ae in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:113
#30 0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
#31 0x00007ffff5bbed01 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x555556869060, r=0x5555582713d0, a=0x7fffff7fff20)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#32 0x00007ffff5bfe4c5 in doActivate<false>(QObject*, int, void**) (sender=0x5555582713d0, signal_index=36, argv=0x7fffff7fff20)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3870
#33 0x00007ffff5bf835d in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555582713d0, m=0x7fff92d4df60 <XYChart::staticMetaObject>, local_signal_index=2, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#34 0x00007fff92d1ba23 in XYChart::computedRangeChanged() (this=this@entry=0x5555582713d0) at src/QuickChartsStatic_autogen/EWIEGA46WW/moc_XYChart.cpp:236
#35 0x00007fff92d221b5 in XYChart::setComputedRange(ComputedRange) (this=this@entry=0x5555582713d0, range=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:123
#36 0x00007fff92d224ae in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:113
#37 0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
#38 0x00007ffff5bbed01 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x555556869060, r=0x5555582713d0, a=0x7fffff8002b0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#39 0x00007ffff5bfe4c5 in doActivate<false>(QObject*, int, void**) (sender=0x5555582713d0, signal_index=36, argv=0x7fffff8002b0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3870
#40 0x00007ffff5bf835d in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555582713d0, m=0x7fff92d4df60 <XYChart::staticMetaObject>, local_signal_index=2, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#41 0x00007fff92d1ba23 in XYChart::computedRangeChanged() (this=this@entry=0x5555582713d0) at src/QuickChartsStatic_autogen/EWIEGA46WW/moc_XYChart.cpp:236
#42 0x00007fff92d221b5 in XYChart::setComputedRange(ComputedRange) (this=this@entry=0x5555582713d0, range=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:123
#43 0x00007fff92d224ae in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:113
#44 0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
#45 0x00007ffff5bbed01 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x555556869060, r=0x5555582713d0, a=0x7fffff800640)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#46 0x00007ffff5bfe4c5 in doActivate<false>(QObject*, int, void**) (sender=0x5555582713d0, signal_index=36, argv=0x7fffff800640)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3870
#47 0x00007ffff5bf835d in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555582713d0, m=0x7fff92d4df60 <XYChart::staticMetaObject>, local_signal_index=2, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#48 0x00007fff92d1ba23 in XYChart::computedRangeChanged() (this=this@entry=0x5555582713d0) at src/QuickChartsStatic_autogen/EWIEGA46WW/moc_XYChart.cpp:236
#49 0x00007fff92d221b5 in XYChart::setComputedRange(ComputedRange) (this=this@entry=0x5555582713d0, range=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:123
#50 0x00007fff92d224ae in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:113
#51 0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
#52 0x00007ffff5bbed01 in QtPrivate::QSlotObjectBase::call(QObject*, void**) (this=0x555556869060, r=0x5555582713d0, a=0x7fffff8009d0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:398
#53 0x00007ffff5bfe4c5 in doActivate<false>(QObject*, int, void**) (sender=0x5555582713d0, signal_index=36, argv=0x7fffff8009d0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3870
#54 0x00007ffff5bf835d in QMetaObject::activate(QObject*, QMetaObject const*, int, void**) (sender=0x5555582713d0, m=0x7fff92d4df60 <XYChart::staticMetaObject>, local_signal_index=2, argv=0x0)
    at /usr/src/debug/dev-qt/qtcore-5.14.2/qtbase-everywhere-src-5.14.2/src/corelib/kernel/qobject.cpp:3930
#55 0x00007fff92d1ba23 in XYChart::computedRangeChanged() (this=this@entry=0x5555582713d0) at src/QuickChartsStatic_autogen/EWIEGA46WW/moc_XYChart.cpp:236
#56 0x00007fff92d221b5 in XYChart::setComputedRange(ComputedRange) (this=this@entry=0x5555582713d0, range=...) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:123
#57 0x00007fff92d224ae in XYChart::updateComputedRange() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/XYChart.cpp:113
#58 0x00007fff92d26e3c in BarChart::onDataChanged() (this=0x5555582713d0) at /usr/src/debug/kde-frameworks/kquickcharts-5.70.0/kquickcharts-5.70.0/src/BarChart.cpp:136
--Type <RET> for more, q to quit, c to continue without paging--
Comment 1 Arjen Hiemstra 2020-06-15 15:30:20 UTC
This was already fixed in KQuickCharts 5.71. See https://invent.kde.org/frameworks/kquickcharts/-/commit/789dbfbc92241298f42af741986f7b41722f2432