Opened 5 months ago

Closed 5 months ago

Last modified 5 months ago

#13613 closed Bug Report - General (fixed)

Crash in MythMainWindow (found via mythweather)

Reported by: David Hampton Owned by: David Hampton
Priority: major Milestone: 31.1
Component: MythTV - General Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

Reported by glenb on the forum.

running version 31-fixes from arch aur. i run 3 plugins, mythmusic, mythnews and mythweather. mythweather causes the frontend to exit with a segfault after displaying the weather data. i am in the united states and use those scripts, the data is correctly gathered and displayed and i can navigate through the 3 screens i have setup (current, 3 day, 6 day) but when i escape to return to myth main menu. i get a segault with this message when i run from terminal to gather messages:

2020-04-20 14:11:59.240731 E Widget not found updatetime 2020-04-20 14:11:59.245388 E Widget not found updatetime 2020-04-20 14:11:59.245411 I Starting update of NDFD-6_day 2020-04-20 14:11:59.250537 I Starting update of NWS-XML 2020-04-20 14:12:00.816036 E Widget not found updatetime 2020-04-20 14:12:00.816904 E Widget not found updatetime Handling Segmentation fault Segmentation fault (core dumped)

i am using mythbuntu theme, but have tried others with same result. i have tried building from source in mythplugins directory with same result. i have also built from source in master branch and built from mythplugins source with same result and recently plugins were packaged in aur for myth31-fixes. this happens on backend machine and different machines used for frontends. b/e machine with frontend is nvidia. frontends it fails on are intel graphics based and amd graphics based. all machines are very current on arch system.

does anyone have any idea what i could try to correct this, or is this stuff so old it just can't run anymore ?

Attachments (1)

stacktrace (6.3 KB) - added by David Hampton 5 months ago.
Stacktrace submitted by paulh against master

Download all attachments as: .zip

Change History (4)

Changed 5 months ago by David Hampton

Attachment: stacktrace added

Stacktrace submitted by paulh against master

comment:1 Changed 5 months ago by Klaas de Waal

Commenting on the solution in commit 138b38a691f764d9fc2feefd5b0a4e8dacfa68fd

The original code did traverse the m_stacklist with an iterator. The foreach code, as described in the Qt docs in https://doc.qt.io/qt-5/containers.html#foreach does make a copy of the container, which is here the m_stackList, and then traverses this copy.

What worries me is that all over the code base the iterators have been replaced by foreach and there might be more places where traversing a copy instead of the original makes a difference.

Maybe the backend crash reported in ticket #13571 can also have been caused by foreach loops that used to be iterators.

comment:2 Changed 5 months ago by David Hampton <mythtv@…>

Resolution: fixed
Status: assignedclosed

In 138b38a691/mythtv:

Fix segfault in code called from MythMainWindow::Draw.

This reverts three of the changes in 380102ce34. In
mythmainwindow.cpp while running the m_stackList, the call to
MythScreenStack::GetDrawOrder? can apparently modify m_stackList or
something that it points to. Reverting the range-based for loops and
restoring the original for loops prevents the crash.

Fixes #13613.

comment:3 Changed 5 months ago by David Hampton <mythtv@…>

In 917a2087e/mythtv:

Fix segfault in code called from MythMainWindow::Draw.

This reverts three of the changes in 380102ce34. In
mythmainwindow.cpp while running the m_stackList, the call to
MythScreenStack::GetDrawOrder? can apparently modify m_stackList or
something that it points to. Reverting the range-based for loops and
restoring the original for loops prevents the crash.

Fixes #13613.

Note: See TracTickets for help on using tickets.