Opened 9 months ago

Last modified 9 months ago

#13321 assigned Bug Report - Crash

Seg Fault when upgrading Steppes Theme

Reported by: Peter Bennett Owned by: jpoet
Priority: minor Milestone: needs_triage
Component: MythTV - User Interface Library Version: Master Head
Severity: medium Keywords:
Cc: Ticket locked: no

Description

When upgrading to Steppes theme 2.40, mythfrontend fails with a seg fault. After restart it is ok.

Attachments (2)

gdb.txt (103.0 KB) - added by Peter Bennett 9 months ago.
back trace of core dump
gdb.2.txt (13.3 KB) - added by Peter Bennett 9 months ago.
Relevant part of back trace

Download all attachments as: .zip

Change History (4)

Changed 9 months ago by Peter Bennett

Attachment: gdb.txt added

back trace of core dump

comment:1 Changed 9 months ago by jpoet

The gdb.txt file is not clear about where the segfault occurred. I am guessing it happened in libfreetype.

I replaced most of the fonts with a different face, in this version of the theme, and I bet it didn't handle having the the fonts it was using disappear out from under it.

Changed 9 months ago by Peter Bennett

Attachment: gdb.2.txt added

Relevant part of back trace

comment:2 Changed 9 months ago by Peter Bennett

The seg fault occurs in QT code from a call to QFontMetrics::elidedText. This is called in line 555 of mythuitext.cpp

    if (m_Cutdown != Qt::ElideNone)
    {
        QFontMetrics fm(GetFontProperties()->face());
        QString cut_line = fm.elidedText
                           (paragraph.mid(last_line),
                            Qt::ElideRight,
                            width - fm.averageCharWidth());

I checked all the parameters to elidedText and all seem valid.

There may be a corrupted font being returned by face(). This may be something other than simply the font changing, because it does not happen on changing to a new theme. I would think that changing theme would often result in using new fonts, and this does not normally cause seg faults.

Last edited 9 months ago by Peter Bennett (previous) (diff)
Note: See TracTickets for help on using tickets.