[frameworks-kholidays] [Bug 434027] Easter calculation causes division by zero for some negative years

Alois Wohlschlager bugzilla_noreply at kde.org
Sun Mar 7 14:26:04 GMT 2021


https://bugs.kde.org/show_bug.cgi?id=434027

Alois Wohlschlager <alois1 at gmx-topmail.de> changed:

           What    |Removed                     |Added
----------------------------------------------------------------------------
            Version|5.21.1                      |git
            Product|plasmashell                 |frameworks-kholidays
     Ever confirmed|0                           |1
           Assignee|plasma-bugs at kde.org         |kdepim-bugs at kde.org
   Target Milestone|1.0                         |---
                 CC|                            |alois1 at gmx-topmail.de
             Status|REPORTED                    |CONFIRMED
          Component|Calendar                    |general
            Summary|Scrolling past year -1      |Easter calculation causes
                   |still crashes Plasma        |division by zero for some
                   |                            |negative years

--- Comment #1 from Alois Wohlschlager <alois1 at gmx-topmail.de> ---
Backtrace with more debug symbols:

Application: Plasma (plasmashell), signal: Floating point exception
Content of s_kcrashErrorMessage: [Current thread is 1 (LWP 30819)]
[KCrash Handler]
#5  0x00007fda35c8b438 in KHolidays::HolidayParserDriverPlan::easter(int)
(this=this at entry=0x7fffe99af728, year=-4) at
/home/alois/kde/src/frameworks/kholidays/src/parsers/plan2/holidayparserdriverplan.cpp:235
#6  0x00007fda35c8ce0f in KHolidays::HolidayParserDriverPlan::parse()
(this=0x7fffe99af728) at
/home/alois/kde/src/frameworks/kholidays/src/parsers/plan2/holidayparserdriverplan.cpp:95
#7  0x00007fda35c81d7e in KHolidays::HolidayParserDriver::parseHolidays(QDate
const&, QDate const&) (this=0x21bcb40, startDate=..., endDate=...) at
/home/alois/kde/src/frameworks/kholidays/src/parsers/holidayparserdriver.cpp:55
#8  0x00007fda35c7bed9 in KHolidays::HolidayRegion::holidays(QDate const&,
QDate const&) const (this=0x21e47b0, startDate=..., endDate=...) at
/home/alois/kde/src/frameworks/kholidays/src/holidayregion.cpp:1078
#9  0x00007fda35c6c82b in  () at
/usr/lib64/qt5/plugins/plasmacalendarplugins/holidaysevents.so
#10 0x00007fda35ddaf2f in DaysModel::update() (this=0x270c5c0) at
/home/alois/kde/src/frameworks/plasma-framework/src/declarativeimports/calendar/daysmodel.cpp:90
#11 DaysModel::update() (this=0x270c5c0) at
/home/alois/kde/src/frameworks/plasma-framework/src/declarativeimports/calendar/daysmodel.cpp:77
#12 0x00007fda35dd96b4 in Calendar::updateData() (this=this at entry=0x2712200) at
/home/alois/kde/src/frameworks/plasma-framework/src/declarativeimports/calendar/calendar.cpp:296
#13 0x00007fda35dd9918 in Calendar::updateData() (this=0x2712200) at
/home/alois/kde/src/frameworks/plasma-framework/src/declarativeimports/calendar/calendar.cpp:55
#14 Calendar::setDisplayedDate(QDate const&) (this=this at entry=0x2712200,
dateTime=...) at
/home/alois/kde/src/frameworks/plasma-framework/src/declarativeimports/calendar/calendar.cpp:47
#15 0x00007fda35dd9b2e in Calendar::setDisplayedDate(QDate const&)
(dateTime=..., this=0x2712200) at /usr/include/qt5/QtCore/qdatetime.h:150
#16 Calendar::previousMonth() (this=0x2712200) at
/home/alois/kde/src/frameworks/plasma-framework/src/declarativeimports/calendar/calendar.cpp:343
#17 0x00007fda35dd66af in Calendar::qt_static_metacall(QObject*,
QMetaObject::Call, int, void**) (_o=_o at entry=0x2712200,
_c=_c at entry=QMetaObject::InvokeMetaMethod, _id=_id at entry=12,
_a=_a at entry=0x7fffe99afde0) at
/home/alois/kde/build/frameworks/plasma-framework/src/declarativeimports/calendar/calendarplugin_autogen/EWIEGA46WW/moc_calendar.cpp:231
#18 0x00007fda35dd7053 in Calendar::qt_metacall(QMetaObject::Call, int, void**)
(this=0x2712200, _c=QMetaObject::InvokeMetaMethod, _id=12, _a=0x7fffe99afde0)
at
/home/alois/kde/build/frameworks/plasma-framework/src/declarativeimports/calendar/calendarplugin_autogen/EWIEGA46WW/moc_calendar.cpp:392
#19 0x00007fda83b9fd9d in  () at /usr/lib64/libQt5Qml.so.5
#20 0x00007fda83a88a4e in  () at /usr/lib64/libQt5Qml.so.5
#21 0x00007fda83a8afda in QV4::QObjectMethod::callInternal(QV4::Value const*,
QV4::Value const*, int) const () at /usr/lib64/libQt5Qml.so.5
#22 0x00007fda83ab7cba in
QV4::Runtime::CallPropertyLookup::call(QV4::ExecutionEngine*, QV4::Value
const&, unsigned int, QV4::Value*, int) () at /usr/lib64/libQt5Qml.so.5
#23 0x00007fda595eba52 in  ()
#24 0x0000000000000000 in  ()
[Inferior 1 (process 30819) detached]

The issue is caused by the easter calculation blowing up for negative years
because division and modulo in C do not correspond to the mathematical
definition of the operations for negative operands. I think the best fix will
be to not calculate easter at all for negative years because it does not make
any sense for obvious reasons.

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the Kdepim-bugs mailing list