[mythtv] Mythmusic segfaults if "i" is pressed at wrong time

Wendy Seltzer wendy at seltzer.com
Mon Feb 7 15:29:01 UTC 2005


The metadata editing features are very cool, but the frontend needs to handle ambiguity more gracefully.  If I press "i" for info before I have selected a distinct file, mythfrontend segfaults, backtrace from current CVS attached.

This happens in "Play music", while browsing the tree of all music, if I hit "i" while in the middle of a branch (an artist or album folder), or at the tip, with an individual song highlighted but not yet selected.  I'd be happy if it just ignored the keypress when it didn't have anything useful to do.  

Thanks!
--Wendy
-- 

Wendy Seltzer -- wendy at seltzer.com || wendy at eff.org
Electronic Frontier Foundation
Berkman Center for Internet & Society at Harvard Law School
http://wendy.seltzer.org/mythtv/
-------------- next part --------------
Program received signal SIGSEGV, Segmentation fault.
[Switching to Thread -1232640704 (LWP 14893)]
0xb71f41b2 in QString::operator= () from /usr/lib/libqt-mt.so.3
(gdb) thread apply all bt full

Thread 2 (Thread -1234150480 (LWP 14900)):
#0  0xb6bce295 in pthread_cond_wait@@GLIBC_2.3.2 ()
   from /lib/tls/libpthread.so.0
No symbol table info available.
#1  0xb71bd339 in QWaitCondition::wait () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#2  0xb75912f6 in MythContext::waitPrivRequest (this=0x818bcb8)
    at mythcontext.cpp:2116
No locals.
#3  0x0806cea4 in run_priv_thread (data=0x0) at main.cpp:663
No locals.
#4  0xb6bcbb63 in start_thread () from /lib/tls/libpthread.so.0
No symbol table info available.
#5  0xb6a84c4a in clone () from /lib/tls/libc.so.6
No symbol table info available.

Thread 1 (Thread -1232640704 (LWP 14893)):
#0  0xb71f41b2 in QString::operator= () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#1  0xb4bebce4 in Metadata (this=0x83e9a68, other=@0x0) at metadata.h:46
No locals.
#2  0xb4c4f3a8 in EditMetadataDialog (this=0xbfffbf80, source_metadata=0x0,
---Type <return> to continue, or q <return> to quit---
    parent=0x81a7390, window_name=
      {static null = {static null = <same as static member of an already seen type>, d = 0x8152070, static shared_null = 0x8152070}, d = 0x83e93b0, static shared_null = 0x8152070}, theme_filename=
      {static null = {static null = <same as static member of an already seen type>, d = 0x8152070, static shared_null = 0x8152070}, d = 0x8152070, static shared_null = 0x8152070}, name=0xb4c747a5 "edit metadata") at editmetadata.cpp:16
No locals.
#3  0xb4bf1db4 in PlaybackBoxMusic::showEditMetadataDialog (this=0x8208940)
    at playbackbox.cpp:602
        editDialog = {<MythThemedDialog> = {<MythDialog> = {<> = {<No data fields>}, static metaObj = 0x81d14b0, wmult = 1.27999997, hmult = 1.27999997,
      screenwidth = 1024, screenheight = 768, xbase = 0, ybase = 0,
      m_parent = 0x81a7390, rescode = 0, in_loop = false, defaultBigFont = {
        d = 0x83e9878}, defaultMediumFont = {d = 0x83e98c0},
      defaultSmallFont = {d = 0x83e9908}}, static metaObj = 0x81f5fc0,
    widget_with_current_focus = 0x0, my_background = <incomplete type>,
    my_foreground = <incomplete type>, theme = 0x83e9c30,
    xmldata = <incomplete type>, context = -1,
    my_containers = {<QGList> = {<> = {<No data fields>},
        firstNode = 0x841e648, lastNode = 0x841e648, curNode = 0x841e648,
        curIndex = 0, numNodes = 1, iterators = 0x841bff8}, <No data fields>},
    focus_taking_widgets = {<QGList> = {<> = {<No data fields>},
---Type <return> to continue, or q <return> to quit---
        firstNode = 0x8419f00, lastNode = 0x8419fd0, curNode = 0x8419fd0,
        curIndex = 13, numNodes = 14, iterators = 0x0}, <No data fields>},
    redrawRect = {x1 = 0, y1 = 0, x2 = 1023, y2 = 767}}, static metaObj = 0x0,
  m_metadata = 0x81a9ac0, m_sourceMetadata = 0xb8000c00, popup = 0x0,
  artist_edit = 0x81a9ac0, compilation_artist_edit = 0xbfffc130,
  album_edit = 0xb7ff59b3, title_edit = 0x81a9c5c, genre_edit = 0x1,
  year_edit = 0x1, track_edit = 0xb6bc0e54, lastplay_text = 0x83e9640,
  playcount_text = 0x8208940, filename_text = 0xbfffc118,
  rating_image = 0xb6b9dd23, searchartist_button = 0x83e9640,
  searchcompilation_artist_button = 0xb4caae44, searchalbum_button = 0x8b2,
  searchgenre_button = 0xb4b88ec6, rating_button = 0xb4b78838,
  compilation_check = 0xb4ca9a74, done_button = 0xbfffc640,
  dbStatistics_button = 0x8208940, searchList = {<QValueList<QString>> = {
      sh = 0x8419e50}, <No data fields>}}
#4  0xb4bf0126 in PlaybackBoxMusic::keyPressEvent (this=0x8208940,
    e=0xbfffc640) at playbackbox.cpp:314
        action = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x81af480,
  static shared_null = 0x8152070}
        i = 0
        handled = true
        actions = {<QValueList<QString>> = {sh = 0x824a588}, <No data fields>}
---Type <return> to continue, or q <return> to quit---
#5  0xb6f57785 in QWidget::event () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#6  0xb6ec4bff in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#7  0xb6ec46f4 in QApplication::notify () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#8  0xb6e5b650 in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#9  0xb6e573a2 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#10 0xb6e6e1c4 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#11 0xb6ed6f58 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#12 0xb6ec4eb1 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#13 0xb76368e9 in MythDialog::exec (this=0x8208940) at mythdialogs.cpp:954
        res = 32270448
#14 0xb4bd2631 in startPlayback (all_playlists=0x81daf98, all_music=0x81b5bf0)
    at main.cpp:247
        pbb = (class PlaybackBoxMusic *) 0x8208940
#15 0xb4bd2a2a in MusicCallback (data=0xbfffd6c0, selection=@0x81d36ec)
    at main.cpp:298
---Type <return> to continue, or q <return> to quit---
        mdata = (MusicData *) 0xbfffd6c0
        sel = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x819ad68,
  static shared_null = 0x8152070}
#16 0xb75ccbb7 in ThemedMenuPrivate::handleAction (this=0x81d35f0,
    action=@0x81ede20) at themedmenu.cpp:2427
No locals.
#17 0xb75cb0b0 in ThemedMenuPrivate::keyPressHandler (this=0x81d35f0,
    e=0xbfffd220) at themedmenu.cpp:2256
        it = {node = 0x81ede18}
        action = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x81f49e8,
  static shared_null = 0x8152070}
        i = 0
        lastbutton = (ThemedButton *) 0x8208730
        oldrow = 0
        handled = true
        actions = {<QValueList<QString>> = {sh = 0x81d9278}, <No data fields>}
#18 0xb75ce1d0 in ThemedMenu::keyPressEvent (this=0x821b488, e=0xbfffd220)
    at themedmenu.cpp:2622
No locals.
---Type <return> to continue, or q <return> to quit---
#19 0xb6f57785 in QWidget::event () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#20 0xb6ec4bff in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#21 0xb6ec46f4 in QApplication::notify () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#22 0xb6e5b650 in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#23 0xb6e573a2 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#24 0xb6e6e1c4 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#25 0xb6ed6f58 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#26 0xb6ec4eb1 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#27 0xb76368e9 in MythDialog::exec (this=0x821b488) at mythdialogs.cpp:954
        res = -1218221966
#28 0xb4bd2eec in runMenu (mdata=0xbfffd6c0, which_menu=
      {static null = {static null = <same as static member of an already seen type>, d = 0x8152070, static shared_null = 0x8152070}, d = 0x81ecc40, static shared_null = 0x8152070}) at main.cpp:351
        themedir = {static null = {
---Type <return> to continue, or q <return> to quit---
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x81aeed0,
  static shared_null = 0x8152070}
        diag = (class ThemedMenu *) 0x821b488
#29 0xb4bd5430 in mythplugin_run () at main.cpp:505
        mdata = {paths = {static null = {
      static null = <same as static member of an already seen type>,
      d = 0x8152070, static shared_null = 0x8152070}, d = 0x81b4ac0,
    static shared_null = 0x8152070}, startdir = {static null = {
      static null = <same as static member of an already seen type>,
      d = 0x8152070, static shared_null = 0x8152070}, d = 0x81f0e20,
    static shared_null = 0x8152070}, all_playlists = 0x81daf98,
  all_music = 0x81b5bf0}
#30 0xb762ac31 in MythPlugin::run (this=0x81a8900) at mythplugin.cpp:42
        rfunc = 0xb4bd53e0 <mythplugin_run>
#31 0xb762ba4f in MythPluginManager::run_plugin (this=0x81aab28,
    plugname=@0xbfffd820) at mythplugin.cpp:169
        newname = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x81ec9f8,
  static shared_null = 0x8152070}
#32 0xb75cc92a in ThemedMenuPrivate::handleAction (this=0x81e9408,
    action=@0x81d4740) at themedmenu.cpp:2410
---Type <return> to continue, or q <return> to quit---
        rest = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x81b3a90,
  static shared_null = 0x8152070}
        pmanager = (MythPluginManager *) 0x81aab28
#33 0xb75cb0b0 in ThemedMenuPrivate::keyPressHandler (this=0x81e9408,
    e=0xbfffdde0) at themedmenu.cpp:2256
        it = {node = 0x81d4738}
        action = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x8218478,
  static shared_null = 0x8152070}
        i = 0
        lastbutton = (ThemedButton *) 0x81f0b50
        oldrow = 1
        handled = true
        actions = {<QValueList<QString>> = {sh = 0x81f2d38}, <No data fields>}
#34 0xb75ce1d0 in ThemedMenu::keyPressEvent (this=0x81daa38, e=0xbfffdde0)
    at themedmenu.cpp:2622
No locals.
#35 0xb6f57785 in QWidget::event () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#36 0xb6ec4bff in QApplication::internalNotify () from /usr/lib/libqt-mt.so.3
---Type <return> to continue, or q <return> to quit---
No symbol table info available.
#37 0xb6ec46f4 in QApplication::notify () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#38 0xb6e5b650 in QETWidget::translateKeyEvent () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#39 0xb6e573a2 in QApplication::x11ProcessEvent () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#40 0xb6e6e1c4 in QEventLoop::processEvents () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#41 0xb6ed6f58 in QEventLoop::enterLoop () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#42 0xb6ec4eb1 in QApplication::enter_loop () from /usr/lib/libqt-mt.so.3
No symbol table info available.
#43 0xb76368e9 in MythDialog::exec (this=0x81daa38) at mythdialogs.cpp:954
        res = -1218221966
#44 0x0806b652 in RunMenu (themedir=
      {static null = {static null = <same as static member of an already seen type>, d = 0x8152070, static shared_null = 0x8152070}, d = 0x821a568, static shared_null = 0x8152070}) at main.cpp:510
        exitstatus = 0
#45 0x0806fd9b in main (argc=2, argv=0xbfffe564) at main.cpp:1033
        lcd_host = {static null = {
    static null = <same as static member of an already seen type>,
---Type <return> to continue, or q <return> to quit---
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x819b740,
  static shared_null = 0x8152070}
        lcd_port = 13666
        a = <incomplete type>
        logfile = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x818ba30,
  static shared_null = 0x8152070}
        verboseString = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x818ba48,
  static shared_null = 0x8152070}
        pluginname = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x818ba60,
  static shared_null = 0x8152070}
        finfo = {fn = {static null = {
      static null = <same as static member of an already seen type>,
      d = 0x8152070, static shared_null = 0x8152070}, d = 0x818bab8,
    static shared_null = 0x8152070}, fic = 0x0, cache = true, symLink = false}
        binname = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x818bad0,
---Type <return> to continue, or q <return> to quit---
  static shared_null = 0x8152070}
        logfd = -1
        fileprefix = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x818bbb8,
  static shared_null = 0x8152070}
        dir = <incomplete type>
        priv_thread = 3060816816
        status = 0
        db = (struct QSqlDatabase *) 0x8199f90
        themename = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x8217c20,
  static shared_null = 0x8152070}
        randomtheme = false
        themedir = {static null = {
    static null = <same as static member of an already seen type>,
    d = 0x8152070, static shared_null = 0x8152070}, d = 0x821a568,
  static shared_null = 0x8152070}
        mainWindow = (class MythMainWindow *) 0x81a7390
        pmanager = (MythPluginManager *) 0x81aab28
        mon = (class MediaMonitor *) 0x0
        exitstatus = -1230117272
(gdb)
(gdb)



More information about the mythtv-dev mailing list