Opened 15 months ago

Last modified 15 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 15 months ago.
back trace of core dump
gdb.2.txt (13.3 KB) - added by Peter Bennett 15 months ago.
Relevant part of back trace

Download all attachments as: .zip

Change History (4)

Changed 15 months ago by Peter Bennett

Attachment: gdb.txt added

back trace of core dump

comment:1 Changed 15 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 15 months ago by Peter Bennett

Attachment: gdb.2.txt added

Relevant part of back trace

comment:2 Changed 15 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 15 months ago by Peter Bennett (previous) (diff)
Note: See TracTickets for help on using tickets.