Bugzilla will be upgraded to version 5.0 on a still to be determined date in the near future. The original upgrade date has been delayed.
Bug 621913 - Clementine hangs on exit
Clementine hangs on exit
Status: CLOSED ERRATA
Product: Fedora
Classification: Fedora
Component: clementine (Show other bugs)
rawhide
All Linux
low Severity medium
: ---
: ---
Assigned To: Orcan Ogetbil
Fedora Extras Quality Assurance
:
Depends On:
Blocks:
  Show dependency treegraph
 
Reported: 2010-08-06 09:38 EDT by Tom London
Modified: 2010-08-27 02:50 EDT (History)
1 user (show)

See Also:
Fixed In Version: clementine-0.4.2-9.fc13
Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of:
Environment:
Last Closed: 2010-08-26 23:05:15 EDT
Type: ---
Regression: ---
Mount Type: ---
Documentation: ---
CRM:
Verified Versions:
Category: ---
oVirt Team: ---
RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: ---


Attachments (Terms of Use)
gdb output showing output of 'thread apply all bt full' (55.96 KB, text/plain)
2010-08-06 09:38 EDT, Tom London
no flags Details
rerun of gdb output showing output of 'thread apply all bt full' (33.37 KB, text/plain)
2010-08-06 11:53 EDT, Tom London
no flags Details
gdb output showing output of 'thread apply all bt full' (35.73 KB, text/plain)
2010-08-07 01:04 EDT, Tom London
no flags Details

  None (edit)
Description Tom London 2010-08-06 09:38:34 EDT
Created attachment 437145 [details]
gdb output showing output of 'thread apply all bt full'

Description of problem:
If I try to exit from clementine, e.g., I pause music play and exit from the main window, the process hangs:

If I attach to the process with gdb, I get:

Loaded symbols for /usr/lib64/gstreamer-0.10/libgstflump3dec.so
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
136	2:	movl	%edx, %eax
Missing separate debuginfos, use: debuginfo-install fluendo-codecs-mp3-10-2.x86_64
(gdb) where
#0  __lll_lock_wait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1  0x0000003626e094a4 in _L_lock_996 () from /lib64/libpthread.so.0
#2  0x0000003626e092ba in __pthread_mutex_lock (mutex=0x3c5886d290)
    at pthread_mutex_lock.c:61
#3  0x0000003c5862685e in __glXInitialize (dpy=0xf642d0) at glxext.c:828
#4  0x0000003c586440ed in dri2DestroyDrawable (pdraw=0x1726cc0)
    at dri2_glx.c:177
#5  0x0000003c586251ad in GarbageCollectDRIDrawables (dpy=0xf642d0, 
    gc=0x138d360) at glxcmds.c:108
#6  DestroyContext (dpy=0xf642d0, gc=0x138d360) at glxcmds.c:586
#7  0x00000033b8c8a656 in QGLContext::reset (this=0x13dbec0) at qgl_x11.cpp:903
#8  0x00000033b8c2ebff in QGLContext::~QGLContext (this=0x13dbec0, 
    __in_chrg=<value optimized out>) at qgl.cpp:2034
#9  0x00000033b8c2ec59 in QGLContext::~QGLContext (this=0x13dbec0, 
    __in_chrg=<value optimized out>) at qgl.cpp:2035
#10 0x00000033b8c27e9f in QGLWidget::~QGLWidget (this=0x1318c10, 
    __in_chrg=<value optimized out>) at qgl.cpp:3676
#11 0x00000033b8c27ef9 in QGLWidget::~QGLWidget (this=0x1318c10, 
    __in_chrg=<value optimized out>) at qgl.cpp:3697
#12 0x000000362d76d7b4 in QObjectPrivate::deleteChildren (this=0x132e600)
    at kernel/qobject.cpp:1949
#13 0x00000033bc0084f0 in QWidget::~QWidget (this=0x1295fc0, 
---Type <return> to continue, or q <return> to quit---
    __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1559
#14 0x00000033bc5c85f5 in QGraphicsView::~QGraphicsView (this=0x1295fc0, 
    __in_chrg=<value optimized out>) at graphicsview/qgraphicsview.cpp:1159
#15 0x00000000005c10fe in VisualisationContainer::~VisualisationContainer() ()
#16 0x00000000005c115a in VisualisationContainer::~VisualisationContainer() ()
#17 0x000000000057cee4 in void boost::checked_delete<VisualisationContainer>(VisualisationContainer*) ()
#18 0x000000000057c39f in boost::scoped_ptr<VisualisationContainer>::~scoped_ptr() ()
#19 0x000000000056e428 in MainWindow::~MainWindow() ()
#20 0x000000000050abfe in main ()
(gdb)

I attach output of 'thread apply all bt full'

Version-Release number of selected component (if applicable):
clementine-0.4.2-7.fc15.x86_64

How reproducible:
Every time

Steps to Reproduce:
1.
2.
3.
  
Actual results:


Expected results:


Additional info:
Comment 1 Orcan Ogetbil 2010-08-06 11:16:21 EDT
Thanks for the report. Could you install 
   clementine-debuginfo-0.4.2-7.fc15.x86_64
from the same page where you downloaded the test build, and then reproduce the crash? The backtrace is missing those symbols.
Comment 2 Tom London 2010-08-06 11:41:31 EDT
Uhh... I belive I had already installed it.

Let me recreate and repost.
Comment 3 Tom London 2010-08-06 11:53:01 EDT
Created attachment 437189 [details]
rerun of gdb output showing output of 'thread apply all bt full'

OK.  Recreated:

[root@tlondon Download]# rpm -qa clementine\*
clementine-0.4.2-7.fc15.x86_64
clementine-debuginfo-0.4.2-7.fc15.x86_64
[root@tlondon Download]# 


This time, I started it with gdb, waited for the playlist window to display, and selected Music->quit.

It just hung.  I had to interrupt it with a ctrl-c:


Program received signal SIGINT, Interrupt.
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
136	2:	movl	%edx, %eax
(gdb) set pagination off
(gdb) bt full
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
No locals.
#1  0x0000003626e094a4 in _L_lock_996 () from /lib64/libpthread.so.0
No symbol table info available.
#2  0x0000003626e092ba in __pthread_mutex_lock (mutex=0x3c5886d290) at pthread_mutex_lock.c:61
        __PRETTY_FUNCTION__ = "__pthread_mutex_lock"
        type = <value optimized out>
        id = 10546
#3  0x0000003c5862685e in __glXInitialize (dpy=0xa9b2d0) at glxext.c:828
        info = 0xec7010
        privList = <value optimized out>
        private = <value optimized out>
        found = <value optimized out>
        dpyPriv = <value optimized out>
        dataObj = <value optimized out>
        major = <value optimized out>
        glx_direct = <value optimized out>
        glx_accel = <value optimized out>
#4  0x0000003c586440ed in dri2DestroyDrawable (pdraw=0x125d920) at dri2_glx.c:177
        core = 0x7fffeaa275d0
        dpyPriv = <value optimized out>
        pdp = <value optimized out>
#5  0x0000003c586251ad in GarbageCollectDRIDrawables (dpy=0xa9b2d0, gc=0xe4a800) at glxcmds.c:108
        draw = 75497527
        pdraw = 0x125d920
        xwa = {x = 0, y = 0, width = 0, height = 0, border_width = 0, depth = 0, visual = 0x3626d8e180, root = 8, class = 5, bit_gravity = 0, win_gravity = 15098392, backing_store = 0, backing_planes = 0, backing_pixel = 15826064, save_under = 761734609, colormap = 0, map_installed = 5, map_state = 0, all_event_masks = 15826064, your_event_mask = 0, do_not_propagate_mask = 222145916264, override_redirect = 761727688, screen = 0x8}
        oldXErrorHandler = 0x33bc01d420 <qt_x_errhandler(Display*, XErrorEvent*)>
#6  DestroyContext (dpy=0xa9b2d0, gc=0xe4a800) at glxcmds.c:586
        req = <value optimized out>
        xid = 75497529
        opcode = 153 '\231'
        imported = 0 '\000'
#7  0x00000033b8c8a656 in QGLContext::reset (this=0xec6a90) at qgl_x11.cpp:903
        d = 0xec6ab0
#8  0x00000033b8c2ebff in QGLContext::~QGLContext (this=0xec6a90, __in_chrg=<value optimized out>) at qgl.cpp:2034
No locals.
#9  0x00000033b8c2ec59 in QGLContext::~QGLContext (this=0xec6a90, __in_chrg=<value optimized out>) at qgl.cpp:2035
No locals.
#10 0x00000033b8c27e9f in QGLWidget::~QGLWidget (this=0xf1aa90, __in_chrg=<value optimized out>) at qgl.cpp:3676
        d = 0xec6820
#11 0x00000033b8c27ef9 in QGLWidget::~QGLWidget (this=0xf1aa90, __in_chrg=<value optimized out>) at qgl.cpp:3697
No locals.
#12 0x000000362d76d7b4 in QObjectPrivate::deleteChildren (this=0xe66200) at kernel/qobject.cpp:1949
        i = <value optimized out>
        reallyWasDeleted = false
#13 0x00000033bc0084f0 in QWidget::~QWidget (this=0xe64830, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1559
        d = 0xe66200
#14 0x00000033bc5c85f5 in QGraphicsView::~QGraphicsView (this=0xe64830, __in_chrg=<value optimized out>) at graphicsview/qgraphicsview.cpp:1159
No locals.
#15 0x00000000005c10fe in VisualisationContainer::~VisualisationContainer() ()
No symbol table info available.
#16 0x00000000005c115a in VisualisationContainer::~VisualisationContainer() ()
No symbol table info available.
#17 0x000000000057cee4 in void boost::checked_delete<VisualisationContainer>(VisualisationContainer*) ()
No symbol table info available.
#18 0x000000000057c39f in boost::scoped_ptr<VisualisationContainer>::~scoped_ptr() ()
No symbol table info available.
#19 0x000000000056e428 in MainWindow::~MainWindow() ()
No symbol table info available.
#20 0x000000000050abfe in main ()
No symbol table info available.
(gdb) 

I attach "full output of 'thread apply all bt full"
Comment 4 Orcan Ogetbil 2010-08-06 13:15:51 EDT
Hmm, see that is weird. See the "No symbol table info available." entries in the backtrace at and after #15? Those should be provided by the clementine-debuginfo package. I'll try to reproduce what you are seeing.
Comment 5 Tom London 2010-08-06 16:27:00 EDT
Not sure its useful, but I ran valgrind on clementine.

I got this when I selected 'Music->quit':

==19121== 
==19121== Invalid read of size 8
==19121==    at 0x3C5144DCCF: _XReply (xcb_io.c:582)
==19121==    by 0x3C5142B09A: _XGetWindowAttributes (GetWAttrs.c:115)
==19121==    by 0x3C5142B240: XGetWindowAttributes (GetWAttrs.c:150)
==19121==    by 0x3C58625196: DestroyContext (glxcmds.c:104)
==19121==    by 0x33B8C8A655: QGLContext::reset() (qgl_x11.cpp:903)
==19121==    by 0x33B8C2EBFE: QGLContext::~QGLContext() (qgl.cpp:2034)
==19121==    by 0x33B8C2EC58: QGLContext::~QGLContext() (qgl.cpp:2035)
==19121==    by 0x33B8C27E9E: QGLWidget::~QGLWidget() (qgl.cpp:3676)
==19121==    by 0x33B8C27EF8: QGLWidget::~QGLWidget() (qgl.cpp:3697)
==19121==    by 0x362D76D7B3: QObjectPrivate::deleteChildren() (qobject.cpp:1949)
==19121==    by 0x33BC0084EF: QWidget::~QWidget() (qwidget.cpp:1559)
==19121==    by 0x33BC5C85F4: QGraphicsView::~QGraphicsView() (qgraphicsview.cpp:1159)
==19121==  Address 0xf042008 is 8 bytes inside a block of size 24 free'd
==19121==    at 0x4A04D72: free (vg_replace_malloc.c:325)
==19121==    by 0x3C5144DC77: _XReply (xcb_io.c:562)
==19121==    by 0x3C5142B09A: _XGetWindowAttributes (GetWAttrs.c:115)
==19121==    by 0x3C5142B240: XGetWindowAttributes (GetWAttrs.c:150)
==19121==    by 0x3C58625196: DestroyContext (glxcmds.c:104)
==19121==    by 0x33B8C8A655: QGLContext::reset() (qgl_x11.cpp:903)
==19121==    by 0x33B8C2EBFE: QGLContext::~QGLContext() (qgl.cpp:2034)
==19121==    by 0x33B8C2EC58: QGLContext::~QGLContext() (qgl.cpp:2035)
==19121==    by 0x33B8C27E9E: QGLWidget::~QGLWidget() (qgl.cpp:3676)
==19121==    by 0x33B8C27EF8: QGLWidget::~QGLWidget() (qgl.cpp:3697)
==19121==    by 0x362D76D7B3: QObjectPrivate::deleteChildren() (qobject.cpp:1949)
==19121==    by 0x33BC0084EF: QWidget::~QWidget() (qwidget.cpp:1559)
==19121== 

After typing ctrl-c, valgrind says:

^C==19121== 
==19121== HEAP SUMMARY:
==19121==     in use at exit: 30,499,591 bytes in 231,563 blocks
==19121==   total heap usage: 8,744,203 allocs, 8,512,640 frees, 728,966,714 bytes allocated
==19121== 
==19121== LEAK SUMMARY:
==19121==    definitely lost: 14,312 bytes in 107 blocks
==19121==    indirectly lost: 49,342 bytes in 1,575 blocks
==19121==      possibly lost: 27,496,673 bytes in 211,219 blocks
==19121==    still reachable: 2,939,264 bytes in 18,662 blocks
==19121==         suppressed: 0 bytes in 0 blocks
==19121== Rerun with --leak-check=full to see details of leaked memory
==19121== 
==19121== For counts of detected and suppressed errors, rerun with: -v
==19121== Use --track-origins=yes to see where uninitialised values come from
==19121== ERROR SUMMARY: 9 errors from 4 contexts (suppressed: 21 from 9)
Killed
[tbl@tlondon ~]$
Comment 6 Orcan Ogetbil 2010-08-06 23:41:40 EDT
Sorry, this is my bad. The debugging symbols were not properly built into the binaries. Could you download this build and the debuginfo package and reproduce the crash
   http://koji.fedoraproject.org/koji/taskinfo?taskID=2386651

Thanks.
Comment 7 Tom London 2010-08-07 01:04:56 EDT
Created attachment 437301 [details]
gdb output showing output of 'thread apply all bt full'

No problem.

[tbl@tlondon ~]$ rpm -qa clementine\*
clementine-debuginfo-0.4.2-7.1.fc14.x86_64
clementine-0.4.2-7.1.fc14.x86_64
[tbl@tlondon ~]$ 

Here is backtrace info (I started clementine, waited for the window to appear, selected "Music->quit", and waited until the window darkened.  I then entered ctrl-c):

^C
Program received signal SIGINT, Interrupt.
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
136	2:	movl	%edx, %eax
(gdb) bt full
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
No locals.
#1  0x0000003626e094a4 in _L_lock_996 () from /lib64/libpthread.so.0
No symbol table info available.
#2  0x0000003626e092ba in __pthread_mutex_lock (mutex=0x3c5886d290) at pthread_mutex_lock.c:61
        __PRETTY_FUNCTION__ = "__pthread_mutex_lock"
        type = <value optimized out>
        id = 2463
#3  0x0000003c5862685e in __glXInitialize (dpy=0x9e32d0) at glxext.c:828
        info = 0xcf85c0
        privList = <value optimized out>
        private = <value optimized out>
        found = <value optimized out>
        dpyPriv = <value optimized out>
        dataObj = <value optimized out>
        major = <value optimized out>
        glx_direct = <value optimized out>
        glx_accel = <value optimized out>
#4  0x0000003c586440ed in dri2DestroyDrawable (pdraw=0x11a54a0) at dri2_glx.c:177
        core = 0x7fffeaa275d0
        dpyPriv = <value optimized out>
        pdp = <value optimized out>
#5  0x0000003c586251ad in GarbageCollectDRIDrawables (dpy=0x9e32d0, gc=0xe0eb50) at glxcmds.c:108
        draw = 83886135
        pdraw = 0x11a54a0
        xwa = {x = 0, y = 0, width = -9152, height = 32767, border_width = 0, depth = 0, visual = 0x3626d8e180, root = 8, class = 5, bit_gravity = 0, win_gravity = 14299160, backing_store = 0, backing_planes = 0, backing_pixel = 15070560, save_under = 761734609, colormap = 0, map_installed = 5, map_state = 0, all_event_masks = 15070560, your_event_mask = 0, do_not_propagate_mask = 222145916264, override_redirect = 761727688, screen = 0x8}
        oldXErrorHandler = 0x33bc01d420 <qt_x_errhandler(Display*, XErrorEvent*)>
#6  DestroyContext (dpy=0x9e32d0, gc=0xe0eb50) at glxcmds.c:586
        req = <value optimized out>
        xid = 83886137
        opcode = 153 '\231'
        imported = 0 '\000'
#7  0x00000033b8c8a656 in QGLContext::reset (this=0xe62430) at qgl_x11.cpp:903
        d = 0xe61c20
#8  0x00000033b8c2ebff in QGLContext::~QGLContext (this=0xe62430, __in_chrg=<value optimized out>) at qgl.cpp:2034
No locals.
#9  0x00000033b8c2ec59 in QGLContext::~QGLContext (this=0xe62430, __in_chrg=<value optimized out>) at qgl.cpp:2035
No locals.
#10 0x00000033b8c27e9f in QGLWidget::~QGLWidget (this=0xe62fd0, __in_chrg=<value optimized out>) at qgl.cpp:3676
        d = 0xd8ed80
#11 0x00000033b8c27ef9 in QGLWidget::~QGLWidget (this=0xe62fd0, __in_chrg=<value optimized out>) at qgl.cpp:3697
No locals.
#12 0x000000362d76d7b4 in QObjectPrivate::deleteChildren (this=0xda3000) at kernel/qobject.cpp:1949
        i = <value optimized out>
        reallyWasDeleted = false
#13 0x00000033bc0084f0 in QWidget::~QWidget (this=0xd9bf00, __in_chrg=<value optimized out>) at kernel/qwidget.cpp:1559
        d = 0xda3000
#14 0x00000033bc5c85f5 in QGraphicsView::~QGraphicsView (this=0xd9bf00, __in_chrg=<value optimized out>) at graphicsview/qgraphicsview.cpp:1159
No locals.
#15 0x0000000000534226 in ~VisualisationContainer (this=0xd9bf00, __in_chrg=<value optimized out>) at /usr/src/debug/clementine-0.4.2/src/visualisations/visualisationcontainer.h:34
No locals.
#16 VisualisationContainer::~VisualisationContainer (this=0xd9bf00, __in_chrg=<value optimized out>) at /usr/src/debug/clementine-0.4.2/src/visualisations/visualisationcontainer.h:34
No locals.
#17 0x00000000004e8a21 in checked_delete<VisualisationContainer> (this=0x7fffffffda60, __in_chrg=<value optimized out>) at /usr/include/boost/checked_delete.hpp:34
No locals.
#18 ~scoped_ptr (this=0x7fffffffda60, __in_chrg=<value optimized out>) at /usr/include/boost/smart_ptr/scoped_ptr.hpp:80
No locals.
#19 MainWindow::~MainWindow (this=0x7fffffffda60, __in_chrg=<value optimized out>) at /usr/src/debug/clementine-0.4.2/src/ui/mainwindow.cpp:519
No locals.
#20 0x0000000000488a5d in main (argc=1, argv=<value optimized out>) at /usr/src/debug/clementine-0.4.2/src/main.cpp:167
        a = {<QApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x998ad0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0x9a6750}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d8283a0 "QCoreApplication", data = 0x362d828440, extradata = 0x0}}, static self = 0x0}, static staticMetaObject = {d = {superdata = 0x362da8bbe0, stringdata = 0x33bc627760 "QApplication", data = 0x33bc6279a0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x33bca4ae80, stringdata = 0x33b98067c0 "QtSingleApplication", data = 0x33b98068a0, extradata = 0x0}}, peer = 0xb33240, actWin = 0x0}
        mpris = {<QObject> = {_vptr.QObject = 0x5e0b30, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb409a0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x5e0ac0 "MPRIS", data = 0x5e0ae0, extradata = 0x0}}}
        w = {<QMainWindow> = {<QWidget> = {<QObject> = {_vptr.QObject = 0x5db1d0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb40ec0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, <QPaintDevice> = {_vptr.QPaintDevice = 0x5db3a8, painters = 0}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x33bc62b520 "QWidget", data = 0x33bc62bac0, extradata = 0x0}}, data = 0xb41010}, static staticMetaObject = {d = {superdata = 0x999a40, stringdata = 0x33bc682580 "QMainWindow", data = 0x33bc682720, extradata = 0x33bca4abe0}}}, <PlatformInterface> = {_vptr.PlatformInterface = 0x5db3e0}, static staticMetaObject = {d = {superdata = 0x998e40, stringdata = 0x5da8a0 "MainWindow", data = 0x5dadc0, extradata = 0x0}}, static kSettingsGroup = 0x5c6abf "MainWindow", static kMusicFilterSpec = 0x5c6a68 "Music (*.mp3 *.ogg *.flac *.mpc *.m4a *.aac *.wma *.mp4 *.spx *.wav)", static kAllFilesFilterSpec = 0x5c7439 "All Files (*)", ui_ = 0xb41b90, tray_icon_ = 0xb41e90, osd_ = 0xb47c70, edit_tag_dialog_ = {px = 0xb5b030}, task_manager_ = 0xba3c80, about_dialog_ = {px = 0xba4db0}, database_ = 0xc903a0, radio_model_ = 0xcb2e60, playlist_backend_ = 0x7fffdc02e770, playlists_ = 0xd1f160, playlist_parser_ = 0xc8d3f0, player_ = 0x16fe0f0, library_ = 0x16faae0, global_shortcuts_ = 0xc90700, settings_dialog_ = {px = 0x172b830}, add_stream_dialog_ = {px = 0x9fd060}, cover_manager_ = {px = 0x16ed570}, equalizer_ = {px = 0xc9c8c0}, transcode_dialog_ = {px = 0xcab460}, error_dialog_ = {px = 0xcbba00}, visualisation_ = {px = 0xd9bf00}, playlist_menu_ = 0xdac0b0, playlist_play_pause_ = 0x19bed30, playlist_stop_after_ = 0x19bfe20, playlist_undoredo_ = 0x19c0a20, playlist_menu_index_ = {r = -1, c = -1, p = 0x0, m = 0x0}, library_sort_model_ = 0x16d8440, track_position_timer_ = 0x16d3070, settings_ = {<QObject> = {_vptr.QObject = 0x362da894f0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0x0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d827500 "QSettings", data = 0x362d827520, extradata = 0x0}}}, was_maximized_ = false, autoclear_playlist_ = false}
        handler = {<TagLib::ID3v1::StringHandler> = {_vptr.StringHandler = 0x5c1610}, <nsUniversalDetector> = {_vptr.nsUniversalDetector = 0x5c1648, mInputState = ePureAscii, mDone = false, mInTag = false, mStart = false, mGotData = true, mLastChar = 0 '\000', mDetectedCharset = 0x0, mBestGuess = -1, mLanguageFilter = 31, mCharSetProbers = {0x1c7e510, 0x1c7cfd0, 0x1c7d9a0}, mEscCharSetProber = 0x0}, current_codec_ = 0x0}
        options = {static kHelpText = 0x5c0270 "%1: clementine [%2] [%3]\n\n%4:\n  -p, --play", ' ' <repeats 16 times>, "%5\n  -t, --play-pause          %6\n  -u, --pause", ' ' <repeats 15 times>, "%7\n  -s, --stop", ' ' <repeats 16 times>, "%8\n  -r, --previous", ' ' <repeats 12 times>, "%9\n  -f, --next   "..., argc_ = 1, argv_ = 0x7fffffffdf08, url_list_action_ = CommandlineOptions::UrlList_Append, player_action_ = CommandlineOptions::Player_None, set_volume_ = -1, volume_modifier_ = 0, seek_to_ = -1, seek_by_ = 0, play_track_at_ = -1, show_osd_ = false, engine_ = Engine::Type_GStreamer, urls_ = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x9999c0}, d = 0x9999c0}}}
        network = {<QObject> = {_vptr.QObject = 0x5d5270, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb367f0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x5d5160 "NetworkAccessManager", data = 0x5d51e0, extradata = 0x0}}, network_ = 0xb33e70, cache_ = 0xb37150, pending_replies_ = {{d = 0x999680, e = 0x999680}}}
(gdb) 


I attach output of "thread apply all bt full"
Comment 8 Orcan Ogetbil 2010-08-07 01:34:50 EDT
Thanks. Could you try a couple things for me:

1- Open the visualizations. Start a song. Close clementine.
2- Open visualizations. Start a song, Stop the visualizations. Close clementine.
3- Start a song. Open visualizations. Stop the song. Close clementine.
4- ... (I think you got the idea. Just try some combinations of opening/closing the visualizations, starting/stopping the song in different orders, and then closing clementine)

Try to find a case where the crash does not occur.

- Does the crash happen every time, or occasionally?
- Do the visualizations work properly?
Comment 9 Tom London 2010-08-07 18:04:41 EDT
Will do.

BTW, I continue to get this valgrind error:


==11842== Invalid read of size 8
==11842==    at 0x3C5144DCCF: _XReply (xcb_io.c:582)
==11842==    by 0x3C5142B09A: _XGetWindowAttributes (GetWAttrs.c:115)
==11842==    by 0x3C5142B240: XGetWindowAttributes (GetWAttrs.c:150)
==11842==    by 0x3C58625196: DestroyContext (glxcmds.c:104)
==11842==    by 0x33B8C8A655: QGLContext::reset() (qgl_x11.cpp:903)
==11842==    by 0x33B8C2EBFE: QGLContext::~QGLContext() (qgl.cpp:2034)
==11842==    by 0x33B8C2EC58: QGLContext::~QGLContext() (qgl.cpp:2035)
==11842==    by 0x33B8C27E9E: QGLWidget::~QGLWidget() (qgl.cpp:3676)
==11842==    by 0x33B8C27EF8: QGLWidget::~QGLWidget() (qgl.cpp:3697)
==11842==    by 0x362D76D7B3: QObjectPrivate::deleteChildren() (qobject.cpp:1949)
==11842==    by 0x33BC0084EF: QWidget::~QWidget() (qwidget.cpp:1559)
==11842==    by 0x33BC5C85F4: QGraphicsView::~QGraphicsView() (qgraphicsview.cpp:1159)
==11842==  Address 0x6a12378 is 8 bytes inside a block of size 24 free'd
==11842==    at 0x4A04D72: free (vg_replace_malloc.c:325)
==11842==    by 0x3C5144DC77: _XReply (xcb_io.c:562)
==11842==    by 0x3C5142B09A: _XGetWindowAttributes (GetWAttrs.c:115)
==11842==    by 0x3C5142B240: XGetWindowAttributes (GetWAttrs.c:150)
==11842==    by 0x3C58625196: DestroyContext (glxcmds.c:104)
==11842==    by 0x33B8C8A655: QGLContext::reset() (qgl_x11.cpp:903)
==11842==    by 0x33B8C2EBFE: QGLContext::~QGLContext() (qgl.cpp:2034)
==11842==    by 0x33B8C2EC58: QGLContext::~QGLContext() (qgl.cpp:2035)
==11842==    by 0x33B8C27E9E: QGLWidget::~QGLWidget() (qgl.cpp:3676)
==11842==    by 0x33B8C27EF8: QGLWidget::~QGLWidget() (qgl.cpp:3697)
==11842==    by 0x362D76D7B3: QObjectPrivate::deleteChildren() (qobject.cpp:1949)
==11842==    by 0x33BC0084EF: QWidget::~QWidget() (qwidget.cpp:1559)
==11842== 


Looks like a case of "use after free".....
Comment 10 Tom London 2010-08-07 18:09:24 EDT
Starting and opening visualization: clementine freezes/hangs. Can't even start playing a song after that....

 gdb says:

#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
No locals.
#1  0x0000003626e094a4 in _L_lock_996 () from /lib64/libpthread.so.0
No symbol table info available.
#2  0x0000003626e092ba in __pthread_mutex_lock (mutex=0x3c5886d290) at pthread_mutex_lock.c:61
        __PRETTY_FUNCTION__ = "__pthread_mutex_lock"
        type = <value optimized out>
        id = 12205
#3  0x0000003c5862685e in __glXInitialize (dpy=0x9e32d0) at glxext.c:828
        info = 0xe53b80
        privList = <value optimized out>
        private = <value optimized out>
        found = <value optimized out>
        dpyPriv = <value optimized out>
        dataObj = <value optimized out>
        major = <value optimized out>
        glx_direct = <value optimized out>
        glx_accel = <value optimized out>
#4  0x0000003c586440ed in dri2DestroyDrawable (pdraw=0x11a53c0) at dri2_glx.c:177
        core = 0x7fffea7895d0
        dpyPriv = <value optimized out>
        pdp = <value optimized out>
#5  0x0000003c586251ad in GarbageCollectDRIDrawables (dpy=0x9e32d0, gc=0x1bb9170) at glxcmds.c:108
        draw = 85983287
        pdraw = 0x11a53c0
        xwa = {x = 10367696, y = 0, width = 1483003538, height = 60, border_width = 1485220816, depth = 60, visual = 0x3c5864d55b, root = 0, class = 1483003132, bit_gravity = 60, win_gravity = 0, backing_store = 0, backing_planes = 259180879193, backing_pixel = 10114868, save_under = 651747712, colormap = 68, map_installed = 24182016, map_state = -1728053248, all_event_masks = 24182016, your_event_mask = 10114868, do_not_propagate_mask = 15028704, override_redirect = 648529058, screen = 0xe551e0}
        oldXErrorHandler = 0x33bc01d420 <qt_x_errhandler(Display*, XErrorEvent*)>
#6  DestroyContext (dpy=0x9e32d0, gc=0x1bb9170) at glxcmds.c:586
        req = <value optimized out>
        xid = 85992919
        opcode = 153 '\231'
        imported = 0 '\000'
#7  0x00000033b8c8b28c in QGLTemporaryContext::~QGLTemporaryContext (this=0x170fd00, __in_chrg=<value optimized out>) at qgl_x11.cpp:1278
No locals.
#8  0x00000033b8c2ab0d in QGLFormat::openGLVersionFlags () at qgl.cpp:1404
        cachedDefault = true
        currentCtx = 0x0
        tmpContext = 0x170fd00
        versionString = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x99967a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 25183}, alloc = 0, size = 0, data = 0x362da8dafa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x27d62b0, static codecForCStrings = 0x0}
        defaultVersionFlags = {i = 127}
        versionFlags = {i = 127}
#9  0x00000033b8c2b02f in preferredPaintEngine () at qgl.cpp:176
No locals.
#10 qt_gl_preferGL2Engine () at qgl.cpp:195
No locals.
#11 0x00000033b8c2b0ca in qt_qgl_paint_engine () at qgl.cpp:5051
No locals.
#12 0x00000033bc1b777f in QWidgetPrivate::repaint_sys (this=0xe53340, rgn=...) at painting/qbackingstore.cpp:1583
        q = 0xe551e0
        engine = <value optimized out>
        noPartialUpdateSupport = <value optimized out>
        toBePainted = {d = 0x1, static shared_empty = {ref = {_q_value = 1780}, rgn = 0x0, xrectangles = 0x0, qt_rgn = 0x0}}
#13 0x00000033bbff7e34 in QWidgetPrivate::syncBackingStore (this=0xe53340) at kernel/qwidget.cpp:1767
No locals.
#14 0x00000033bc005242 in QWidget::event (this=0xe551e0, event=0x1656c10) at kernel/qwidget.cpp:8450
        d = 0xe53340
#15 0x00000033b8c2d5c1 in QGLWidget::event (this=0xe551e0, e=0x1656c10) at qgl.cpp:4135
        d = <value optimized out>
#16 0x00000033bbfb32a4 in QApplicationPrivate::notify_helper (this=0x9a6750, receiver=0xe551e0, e=0x1656c10) at kernel/qapplication.cpp:4389
        consumed = <value optimized out>
#17 0x00000033bbfb7d1a in QApplication::notify (this=<value optimized out>, receiver=0xe551e0, e=0x1656c10) at kernel/qapplication.cpp:4270
        d = 0x9a6750
        res = false
#18 0x000000362d75ad0c in QCoreApplication::notifyInternal (this=0x7fffffffdc70, receiver=0xe551e0, event=0x1656c10) at kernel/qcoreapplication.cpp:732
        threadData = 0x9a5700
        returnValue = <value optimized out>
        result = false
        cbdata = {0xe551e0, 0x1656c10, 0x7fffffffd72f}
        d = <value optimized out>
#19 0x000000362d75e4b5 in sendEvent (receiver=0x0, event_type=0, data=0x9a5700) at kernel/qcoreapplication.h:215
No locals.
#20 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x9a5700) at kernel/qcoreapplication.cpp:1373
        pe = @0x25b9f60
        e = 0x1656c10
        r = 0xe551e0
        locker = {val = 10114880}
        startOffset = 0
        i = @0x9a5734
#21 0x000000362d785923 in sendPostedEvents (s=<value optimized out>) at kernel/qcoreapplication.h:220
No locals.
#22 postEventSourceDispatch (s=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:276
        source = <value optimized out>
#23 0x00007ffff78c37a3 in g_main_dispatch (context=0x9aa920) at gmain.c:2119
        dispatch = 0x362d785910 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)>
        was_in_call = 0
        user_data = 0x0
        callback = 0
        cb_funcs = 0x0
        cb_data = 0x0
        current_source_link = {data = 0x9ab840, next = 0x0}
        need_destroy = <value optimized out>
        source = 0x9ab840
        current = 0x9a9b20
        i = <value optimized out>
#24 g_main_context_dispatch (context=0x9aa920) at gmain.c:2672
No locals.
#25 0x00007ffff78c3f80 in g_main_context_iterate (context=0x9aa920, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2750
        max_priority = 0
        timeout = 0
        some_ready = 1
        nfds = 11
        allocated_nfds = <value optimized out>
        fds = <value optimized out>
#26 0x00007ffff78c421d in g_main_context_iteration (context=0x9aa920, may_block=1) at gmain.c:2813
        retval = <value optimized out>
#27 0x000000362d785e5f in QEventDispatcherGlib::processEvents (this=0x9a7e70, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
        d = 0x9a7e90
        canWait = true
        savedFlags = {i = 0}
        result = <value optimized out>
#28 0x00000033bc05672e in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
        d = 0x9a7e90
        saved_flags = {i = 0}
        returnValue = false
#29 0x000000362d75a0a2 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
        d = 0x21f31b0
#30 0x000000362d75a2ec in QEventLoop::exec (this=0x7fffffffda00, flags=...) at kernel/qeventloop.cpp:201
        d = 0x21f31b0
        app = 0x7fffffffdc70
#31 0x000000362d75e76b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
        threadData = 0x9a5700
        eventLoop = {<QObject> = {_vptr.QObject = 0x362da8bb50, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0x21f31b0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d828300 "QEventLoop", data = 0x362d828320, extradata = 0x0}}}
        returnCode = <value optimized out>
#32 0x0000000000488a52 in main (argc=1, argv=<value optimized out>) at /usr/src/debug/clementine-0.4.2/src/main.cpp:172
        a = {<QApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x998ad0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0x9a6750}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d8283a0 "QCoreApplication", data = 0x362d828440, extradata = 0x0}}, static self = 0x0}, static staticMetaObject = {d = {superdata = 0x362da8bbe0, stringdata = 0x33bc627760 "QApplication", data = 0x33bc6279a0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x33bca4ae80, stringdata = 0x33b98067c0 "QtSingleApplication", data = 0x33b98068a0, extradata = 0x0}}, peer = 0xb33240, actWin = 0x0}
        mpris = {<QObject> = {_vptr.QObject = 0x5e0b30, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb409a0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x5e0ac0 "MPRIS", data = 0x5e0ae0, extradata = 0x0}}}
        w = {<QMainWindow> = {<QWidget> = {<QObject> = {_vptr.QObject = 0x5db1d0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb40ec0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, <QPaintDevice> = {_vptr.QPaintDevice = 0x5db3a8, painters = 0}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x33bc62b520 "QWidget", data = 0x33bc62bac0, extradata = 0x0}}, data = 0xb41010}, static staticMetaObject = {d = {superdata = 0x999a40, stringdata = 0x33bc682580 "QMainWindow", data = 0x33bc682720, extradata = 0x33bca4abe0}}}, <PlatformInterface> = {_vptr.PlatformInterface = 0x5db3e0}, static staticMetaObject = {d = {superdata = 0x998e40, stringdata = 0x5da8a0 "MainWindow", data = 0x5dadc0, extradata = 0x0}}, static kSettingsGroup = 0x5c6abf "MainWindow", static kMusicFilterSpec = 0x5c6a68 "Music (*.mp3 *.ogg *.flac *.mpc *.m4a *.aac *.wma *.mp4 *.spx *.wav)", static kAllFilesFilterSpec = 0x5c7439 "All Files (*)", ui_ = 0xb41b90, tray_icon_ = 0xb41e90, osd_ = 0xb442e0, edit_tag_dialog_ = {px = 0xb5b240}, task_manager_ = 0xc92950, about_dialog_ = {px = 0xc92aa0}, database_ = 0xc754a0, radio_model_ = 0xd4c880, playlist_backend_ = 0x7fffdc02e770, playlists_ = 0xd26fe0, playlist_parser_ = 0xd26df0, player_ = 0xd48f60, library_ = 0x16fa1a0, global_shortcuts_ = 0xd2bba0, settings_dialog_ = {px = 0x172aef0}, add_stream_dialog_ = {px = 0xd2e770}, cover_manager_ = {px = 0x16f9cd0}, equalizer_ = {px = 0xd33e60}, transcode_dialog_ = {px = 0xa12450}, error_dialog_ = {px = 0xa121d0}, visualisation_ = {px = 0xcdcd40}, playlist_menu_ = 0xdad880, playlist_play_pause_ = 0x19c3a90, playlist_stop_after_ = 0x19c9860, playlist_undoredo_ = 0x19ca010, playlist_menu_index_ = {r = -1, c = -1, p = 0x0, m = 0x0}, library_sort_model_ = 0x16d7a90, track_position_timer_ = 0x16d4c30, settings_ = {<QObject> = {_vptr.QObject = 0x362da8afb0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xe10910}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d827500 "QSettings", data = 0x362d827520, extradata = 0x0}}}, was_maximized_ = false, autoclear_playlist_ = false}
        handler = {<TagLib::ID3v1::StringHandler> = {_vptr.StringHandler = 0x5c1610}, <nsUniversalDetector> = {_vptr.nsUniversalDetector = 0x5c1648, mInputState = ePureAscii, mDone = false, mInTag = false, mStart = false, mGotData = true, mLastChar = 0 '\000', mDetectedCharset = 0x0, mBestGuess = -1, mLanguageFilter = 31, mCharSetProbers = {0x1c7fc50, 0x1c6df30, 0x1c7cce0}, mEscCharSetProber = 0x0}, current_codec_ = 0x0}
        options = {static kHelpText = 0x5c0270 "%1: clementine [%2] [%3]\n\n%4:\n  -p, --play", ' ' <repeats 16 times>, "%5\n  -t, --play-pause          %6\n  -u, --pause", ' ' <repeats 15 times>, "%7\n  -s, --stop", ' ' <repeats 16 times>, "%8\n  -r, --previous", ' ' <repeats 12 times>, "%9\n  -f, --next   "..., argc_ = 1, argv_ = 0x7fffffffdf08, url_list_action_ = CommandlineOptions::UrlList_Append, player_action_ = CommandlineOptions::Player_None, set_volume_ = -1, volume_modifier_ = 0, seek_to_ = -1, seek_by_ = 0, play_track_at_ = -1, show_osd_ = false, engine_ = Engine::Type_GStreamer, urls_ = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x9999c0}, d = 0x9999c0}}}
        network = {<QObject> = {_vptr.QObject = 0x5d5270, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb367f0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x5d5160 "NetworkAccessManager", data = 0x5d51e0, extradata = 0x0}}, network_ = 0xb33e70, cache_ = 0xb37150, pending_replies_ = {{d = 0x999680, e = 0x999680}}}
(gdb)
Comment 11 Tom London 2010-08-07 18:11:33 EDT
If I start playing a song first, the UI freezes when I try to open visualizations, but the music continues to play.

UI completely frozen.  gdb says (after ctrl-c):

Program received signal SIGINT, Interrupt.
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
136	2:	movl	%edx, %eax
Missing separate debuginfos, use: debuginfo-install fluendo-codecs-mp3-10-2.x86_64
(gdb) set pagination off
(gdb) bt full
#0  __lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
No locals.
#1  0x0000003626e094a4 in _L_lock_996 () from /lib64/libpthread.so.0
No symbol table info available.
#2  0x0000003626e092ba in __pthread_mutex_lock (mutex=0x3c5886d290) at pthread_mutex_lock.c:61
        __PRETTY_FUNCTION__ = "__pthread_mutex_lock"
        type = <value optimized out>
        id = 12346
#3  0x0000003c5862685e in __glXInitialize (dpy=0x9e32d0) at glxext.c:828
        info = 0xd83460
        privList = <value optimized out>
        private = <value optimized out>
        found = <value optimized out>
        dpyPriv = <value optimized out>
        dataObj = <value optimized out>
        major = <value optimized out>
        glx_direct = <value optimized out>
        glx_accel = <value optimized out>
#4  0x0000003c586440ed in dri2DestroyDrawable (pdraw=0x11a5be0) at dri2_glx.c:177
        core = 0x7fffea7895d0
        dpyPriv = <value optimized out>
        pdp = <value optimized out>
#5  0x0000003c586251ad in GarbageCollectDRIDrawables (dpy=0x9e32d0, gc=0x1b78a00) at glxcmds.c:108
        draw = 85983287
        pdraw = 0x11a5be0
        xwa = {x = 10367696, y = 0, width = 1483003538, height = 60, border_width = 1485220816, depth = 60, visual = 0x3c5864d55b, root = 0, class = 1483003132, bit_gravity = 60, win_gravity = 0, backing_store = 0, backing_planes = 259180879193, backing_pixel = 10114868, save_under = 651747712, colormap = 68, map_installed = 38150512, map_state = -1728053248, all_event_masks = 38150512, your_event_mask = 10114868, do_not_propagate_mask = 15074288, override_redirect = 648529058, screen = 0xe603f0}
        oldXErrorHandler = 0x33bc01d420 <qt_x_errhandler(Display*, XErrorEvent*)>
#6  DestroyContext (dpy=0x9e32d0, gc=0x1b78a00) at glxcmds.c:586
        req = <value optimized out>
        xid = 85997504
        opcode = 153 '\231'
        imported = 0 '\000'
#7  0x00000033b8c8b28c in QGLTemporaryContext::~QGLTemporaryContext (this=0x2462170, __in_chrg=<value optimized out>) at qgl_x11.cpp:1278
No locals.
#8  0x00000033b8c2ab0d in QGLFormat::openGLVersionFlags () at qgl.cpp:1404
        cachedDefault = true
        currentCtx = 0x0
        tmpContext = 0x2462170
        versionString = {static null = {<No data fields>}, static shared_null = {ref = {_q_value = 1}, alloc = 0, size = 0, data = 0x99967a, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, static shared_empty = {ref = {_q_value = 25184}, alloc = 0, size = 0, data = 0x362da8dafa, clean = 0, simpletext = 0, righttoleft = 0, asciiCache = 0, capacity = 0, reserved = 0, array = {0}}, d = 0x2aebdc0, static codecForCStrings = 0x0}
        defaultVersionFlags = {i = 127}
        versionFlags = {i = 127}
#9  0x00000033b8c2b02f in preferredPaintEngine () at qgl.cpp:176
No locals.
#10 qt_gl_preferGL2Engine () at qgl.cpp:195
No locals.
#11 0x00000033b8c2b0ca in qt_qgl_paint_engine () at qgl.cpp:5051
No locals.
#12 0x00000033bc1b777f in QWidgetPrivate::repaint_sys (this=0xe60600, rgn=...) at painting/qbackingstore.cpp:1583
        q = 0xe603f0
        engine = <value optimized out>
        noPartialUpdateSupport = <value optimized out>
        toBePainted = {d = 0x1, static shared_empty = {ref = {_q_value = 1769}, rgn = 0x0, xrectangles = 0x0, qt_rgn = 0x0}}
#13 0x00000033bbff7e34 in QWidgetPrivate::syncBackingStore (this=0xe60600) at kernel/qwidget.cpp:1767
No locals.
#14 0x00000033bc005242 in QWidget::event (this=0xe603f0, event=0x174c960) at kernel/qwidget.cpp:8450
        d = 0xe60600
#15 0x00000033b8c2d5c1 in QGLWidget::event (this=0xe603f0, e=0x174c960) at qgl.cpp:4135
        d = <value optimized out>
#16 0x00000033bbfb32a4 in QApplicationPrivate::notify_helper (this=0x9a6750, receiver=0xe603f0, e=0x174c960) at kernel/qapplication.cpp:4389
        consumed = <value optimized out>
#17 0x00000033bbfb7d1a in QApplication::notify (this=<value optimized out>, receiver=0xe603f0, e=0x174c960) at kernel/qapplication.cpp:4270
        d = 0x9a6750
        res = false
#18 0x000000362d75ad0c in QCoreApplication::notifyInternal (this=0x7fffffffdc70, receiver=0xe603f0, event=0x174c960) at kernel/qcoreapplication.cpp:732
        threadData = 0x9a5700
        returnValue = <value optimized out>
        result = false
        cbdata = {0xe603f0, 0x174c960, 0x7fffffffd72f}
        d = <value optimized out>
#19 0x000000362d75e4b5 in sendEvent (receiver=0x0, event_type=0, data=0x9a5700) at kernel/qcoreapplication.h:215
No locals.
#20 QCoreApplicationPrivate::sendPostedEvents (receiver=0x0, event_type=0, data=0x9a5700) at kernel/qcoreapplication.cpp:1373
        pe = @0x28b9060
        e = 0x174c960
        r = 0xe603f0
        locker = {val = 10114880}
        startOffset = 0
        i = @0x9a5734
#21 0x000000362d785923 in sendPostedEvents (s=<value optimized out>) at kernel/qcoreapplication.h:220
No locals.
#22 postEventSourceDispatch (s=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:276
        source = <value optimized out>
#23 0x00007ffff78c37a3 in g_main_dispatch (context=0x9aa920) at gmain.c:2119
        dispatch = 0x362d785910 <postEventSourceDispatch(GSource*, GSourceFunc, gpointer)>
        was_in_call = 0
        user_data = 0x0
        callback = 0
        cb_funcs = 0x0
        cb_data = 0x0
        current_source_link = {data = 0x9ab840, next = 0x0}
        need_destroy = <value optimized out>
        source = 0x9ab840
        current = 0x9a9b20
        i = <value optimized out>
#24 g_main_context_dispatch (context=0x9aa920) at gmain.c:2672
No locals.
#25 0x00007ffff78c3f80 in g_main_context_iterate (context=0x9aa920, block=1, dispatch=1, self=<value optimized out>) at gmain.c:2750
        max_priority = 0
        timeout = 0
        some_ready = 1
        nfds = 11
        allocated_nfds = <value optimized out>
        fds = <value optimized out>
#26 0x00007ffff78c421d in g_main_context_iteration (context=0x9aa920, may_block=1) at gmain.c:2813
        retval = <value optimized out>
#27 0x000000362d785e5f in QEventDispatcherGlib::processEvents (this=0x9a7e70, flags=<value optimized out>) at kernel/qeventdispatcher_glib.cpp:412
        d = 0x9a7e90
        canWait = true
        savedFlags = {i = 0}
        result = <value optimized out>
#28 0x00000033bc05672e in QGuiEventDispatcherGlib::processEvents (this=<value optimized out>, flags=<value optimized out>) at kernel/qguieventdispatcher_glib.cpp:204
        d = 0x9a7e90
        saved_flags = {i = 0}
        returnValue = false
#29 0x000000362d75a0a2 in QEventLoop::processEvents (this=<value optimized out>, flags=...) at kernel/qeventloop.cpp:149
        d = 0x203c2f0
#30 0x000000362d75a2ec in QEventLoop::exec (this=0x7fffffffda00, flags=...) at kernel/qeventloop.cpp:201
        d = 0x203c2f0
        app = 0x7fffffffdc70
#31 0x000000362d75e76b in QCoreApplication::exec () at kernel/qcoreapplication.cpp:1009
        threadData = 0x9a5700
        eventLoop = {<QObject> = {_vptr.QObject = 0x362da8bb50, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0x203c2f0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d828300 "QEventLoop", data = 0x362d828320, extradata = 0x0}}}
        returnCode = <value optimized out>
#32 0x0000000000488a52 in main (argc=1, argv=<value optimized out>) at /usr/src/debug/clementine-0.4.2/src/main.cpp:172
        a = {<QApplication> = {<QCoreApplication> = {<QObject> = {_vptr.QObject = 0x998ad0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0x9a6750}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d8283a0 "QCoreApplication", data = 0x362d828440, extradata = 0x0}}, static self = 0x0}, static staticMetaObject = {d = {superdata = 0x362da8bbe0, stringdata = 0x33bc627760 "QApplication", data = 0x33bc6279a0, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x33bca4ae80, stringdata = 0x33b98067c0 "QtSingleApplication", data = 0x33b98068a0, extradata = 0x0}}, peer = 0xb330c0, actWin = 0x0}
        mpris = {<QObject> = {_vptr.QObject = 0x5e0b30, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb408d0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x5e0ac0 "MPRIS", data = 0x5e0ae0, extradata = 0x0}}}
        w = {<QMainWindow> = {<QWidget> = {<QObject> = {_vptr.QObject = 0x5db1d0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb40df0}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, <QPaintDevice> = {_vptr.QPaintDevice = 0x5db3a8, painters = 0}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x33bc62b520 "QWidget", data = 0x33bc62bac0, extradata = 0x0}}, data = 0xb40f40}, static staticMetaObject = {d = {superdata = 0x999a40, stringdata = 0x33bc682580 "QMainWindow", data = 0x33bc682720, extradata = 0x33bca4abe0}}}, <PlatformInterface> = {_vptr.PlatformInterface = 0x5db3e0}, static staticMetaObject = {d = {superdata = 0x998e40, stringdata = 0x5da8a0 "MainWindow", data = 0x5dadc0, extradata = 0x0}}, static kSettingsGroup = 0x5c6abf "MainWindow", static kMusicFilterSpec = 0x5c6a68 "Music (*.mp3 *.ogg *.flac *.mpc *.m4a *.aac *.wma *.mp4 *.spx *.wav)", static kAllFilesFilterSpec = 0x5c7439 "All Files (*)", ui_ = 0xb41ac0, tray_icon_ = 0xb41dc0, osd_ = 0xb44210, edit_tag_dialog_ = {px = 0xb60710}, task_manager_ = 0xb6f2b0, about_dialog_ = {px = 0xb5dcd0}, database_ = 0xc96290, radio_model_ = 0xcc3860, playlist_backend_ = 0x7fffdc02e770, playlists_ = 0xc9dfb0, playlist_parser_ = 0xc9ddc0, player_ = 0x16fdd70, library_ = 0x16fcef0, global_shortcuts_ = 0xca2b70, settings_dialog_ = {px = 0x172b510}, add_stream_dialog_ = {px = 0xca52f0}, cover_manager_ = {px = 0x16fc320}, equalizer_ = {px = 0xcaa530}, transcode_dialog_ = {px = 0xcdf8c0}, error_dialog_ = {px = 0xcdfc00}, visualisation_ = {px = 0xd15390}, playlist_menu_ = 0xd8e650, playlist_play_pause_ = 0x19c3c50, playlist_stop_after_ = 0x19c9a20, playlist_undoredo_ = 0x19ca1d0, playlist_menu_index_ = {r = -1, c = -1, p = 0x0, m = 0x0}, library_sort_model_ = 0x16d8130, track_position_timer_ = 0x16d3190, settings_ = {<QObject> = {_vptr.QObject = 0x362da8afb0, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xe5b830}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x362d827500 "QSettings", data = 0x362d827520, extradata = 0x0}}}, was_maximized_ = false, autoclear_playlist_ = false}
        handler = {<TagLib::ID3v1::StringHandler> = {_vptr.StringHandler = 0x5c1610}, <nsUniversalDetector> = {_vptr.nsUniversalDetector = 0x5c1648, mInputState = ePureAscii, mDone = false, mInTag = false, mStart = false, mGotData = true, mLastChar = 0 '\000', mDetectedCharset = 0x0, mBestGuess = -1, mLanguageFilter = 31, mCharSetProbers = {0x1c7fde0, 0x1c6e0c0, 0x1c7ce70}, mEscCharSetProber = 0x0}, current_codec_ = 0x0}
        options = {static kHelpText = 0x5c0270 "%1: clementine [%2] [%3]\n\n%4:\n  -p, --play", ' ' <repeats 16 times>, "%5\n  -t, --play-pause          %6\n  -u, --pause", ' ' <repeats 15 times>, "%7\n  -s, --stop", ' ' <repeats 16 times>, "%8\n  -r, --previous", ' ' <repeats 12 times>, "%9\n  -f, --next   "..., argc_ = 1, argv_ = 0x7fffffffdf08, url_list_action_ = CommandlineOptions::UrlList_Append, player_action_ = CommandlineOptions::Player_None, set_volume_ = -1, volume_modifier_ = 0, seek_to_ = -1, seek_by_ = 0, play_track_at_ = -1, show_osd_ = false, engine_ = Engine::Type_GStreamer, urls_ = {{p = {static shared_null = {ref = {_q_value = 1}, alloc = 0, begin = 0, end = 0, sharable = 1, array = {0x0}}, d = 0x9999c0}, d = 0x9999c0}}}
        network = {<QObject> = {_vptr.QObject = 0x5d5270, static staticMetaObject = {d = {superdata = 0x0, stringdata = 0x362d816060 "QObject", data = 0x362d816100, extradata = 0x362da83780}}, d_ptr = {d = 0xb36670}, static staticQtMetaObject = {d = {superdata = 0x0, stringdata = 0x362d81ecc0 "Qt", data = 0x362d822400, extradata = 0x0}}}, static staticMetaObject = {d = {superdata = 0x999280, stringdata = 0x5d5160 "NetworkAccessManager", data = 0x5d51e0, extradata = 0x0}}, network_ = 0xb36cd0, cache_ = 0xb37100, pending_replies_ = {{d = 0x999680, e = 0x999680}}}
(gdb)
Comment 12 Tom London 2010-08-07 18:44:44 EDT
If I run clementine under valgrind, and immediately try to open up visualization (before starting music), clementine UI immediately hangs.

I see this valgrind spew:



==12464== Invalid read of size 8
==12464==    at 0x3C5144DCCF: _XReply (xcb_io.c:582)
==12464==    by 0x3C5142B09A: _XGetWindowAttributes (GetWAttrs.c:115)
==12464==    by 0x3C5142B240: XGetWindowAttributes (GetWAttrs.c:150)
==12464==    by 0x3C58625196: DestroyContext (glxcmds.c:104)
==12464==    by 0x33B8C8B28B: QGLTemporaryContext::~QGLTemporaryContext() (qgl_x11.cpp:1278)
==12464==    by 0x33B8C2AB0C: QGLFormat::openGLVersionFlags() (qgl.cpp:1404)
==12464==    by 0x33B8C2B02E: qt_gl_preferGL2Engine() (qgl.cpp:176)
==12464==    by 0x33B8C2B0C9: qt_qgl_paint_engine() (qgl.cpp:5051)
==12464==    by 0x33BC1B777E: QWidgetPrivate::repaint_sys(QRegion const&) (qbackingstore.cpp:1583)
==12464==    by 0x33BBFF7E33: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1767)
==12464==    by 0x33BC005241: QWidget::event(QEvent*) (qwidget.cpp:8450)
==12464==    by 0x33B8C2D5C0: QGLWidget::event(QEvent*) (qgl.cpp:4135)
==12464==  Address 0xfeb4b78 is 8 bytes inside a block of size 24 free'd
==12464==    at 0x4A04D72: free (vg_replace_malloc.c:325)
==12464==    by 0x3C5144DC77: _XReply (xcb_io.c:562)
==12464==    by 0x3C5142B09A: _XGetWindowAttributes (GetWAttrs.c:115)
==12464==    by 0x3C5142B240: XGetWindowAttributes (GetWAttrs.c:150)
==12464==    by 0x3C58625196: DestroyContext (glxcmds.c:104)
==12464==    by 0x33B8C8B28B: QGLTemporaryContext::~QGLTemporaryContext() (qgl_x11.cpp:1278)
==12464==    by 0x33B8C2AB0C: QGLFormat::openGLVersionFlags() (qgl.cpp:1404)
==12464==    by 0x33B8C2B02E: qt_gl_preferGL2Engine() (qgl.cpp:176)
==12464==    by 0x33B8C2B0C9: qt_qgl_paint_engine() (qgl.cpp:5051)
==12464==    by 0x33BC1B777E: QWidgetPrivate::repaint_sys(QRegion const&) (qbackingstore.cpp:1583)
==12464==    by 0x33BBFF7E33: QWidgetPrivate::syncBackingStore() (qwidget.cpp:1767)
==12464==    by 0x33BC005241: QWidget::event(QEvent*) (qwidget.cpp:8450)
==12464==
Comment 13 Orcan Ogetbil 2010-08-08 21:26:29 EDT
There is clearly something wrong with the way the video acceleration is handled in your setup. Can you run glxgears, for example?

I backported a patch from upstream trunk. With this patch, the OpenGL graphics context is not initialized until you open the visualizations window. Note that this does not fix the visualization crash. I am expecting that with this build you can exit cleanly from clementine, if you don't explicitly turn on visualizations. Can you confirm?

   http://koji.fedoraproject.org/koji/taskinfo?taskID=2388607
Comment 14 Tom London 2010-08-09 00:59:36 EDT
Hmm... interesting....

glxgears runs:

[tbl@tlondon ~]$ glxgears
Running synchronized to the vertical refresh.  The framerate should be
approximately the same as the monitor refresh rate.
302 frames in 5.0 seconds = 60.364 FPS
301 frames in 5.0 seconds = 60.018 FPS
301 frames in 5.0 seconds = 60.015 FPS
  
but also hangs in similar fashion:

Loaded symbols for /usr/lib64/libdrm_intel.so.1
__lll_lock_wait () at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
136	2:	movl	%edx, %eax
(gdb) where
#0  __lll_lock_wait ()
    at ../nptl/sysdeps/unix/sysv/linux/x86_64/lowlevellock.S:136
#1  0x0000003626e094a4 in _L_lock_996 () from /lib64/libpthread.so.0
#2  0x0000003626e092ba in __pthread_mutex_lock (mutex=0x3c5886d290)
    at pthread_mutex_lock.c:61
#3  0x0000003c5862685e in __glXInitialize (dpy=0x1979010) at glxext.c:828
#4  0x0000003c58644153 in dri2GetGlxDrawableFromXDrawableId (
    dpy=<value optimized out>, id=<value optimized out>) at dri2_glx.c:774
#5  0x0000003c5864448b in DRI2WireToEvent (dpy=0x1979010, event=0x1cd9698, 
    wire=0x19908c0) at dri2.c:105
#6  0x0000003c514468de in _XEnq (dpy=0x1979010, event=<value optimized out>)
    at XlibInt.c:2431
#7  0x0000003c5144d293 in handle_response (dpy=0x1979010, response=0x19908c0, 
    in_XReply=<value optimized out>) at xcb_io.c:279
#8  0x0000003c5144dc30 in _XReply (dpy=0x1979010, rep=0x7fff3fae6f80, extra=0, 
    discard=1) at xcb_io.c:554
#9  0x0000003c514414b3 in XSync (dpy=0x1979010, discard=0) at Sync.c:46
#10 0x0000003c58625145 in GarbageCollectDRIDrawables (dpy=0x1979010, 
    gc=0x198d1a0) at glxcmds.c:98
#11 DestroyContext (dpy=0x1979010, gc=0x198d1a0) at glxcmds.c:586
#12 0x00000000004032a9 in ?? ()
#13 0x0000003626a1ecdd in __libc_start_main (main=0x4027c0, argc=1, 
    ubp_av=0x7fff3fae7488, init=<value optimized out>, 
---Type <return> to continue, or q <return> to quit---
    fini=<value optimized out>, rtld_fini=<value optimized out>, 
    stack_end=0x7fff3fae7478) at libc-start.c:226
#14 0x00000000004017a9 in ?? ()
#15 0x00007fff3fae7478 in ?? ()
#16 0x000000000000001c in ?? ()
#17 0x0000000000000001 in ?? ()
#18 0x00007fff3fae9288 in ?? ()
#19 0x0000000000000000 in ?? ()
(gdb) 

Guess I'll check BZ for such an issue.

In any case, I downloaded the 'new' clementine:

[root@tlondon ~]# rpm -qa clementine\*
clementine-debuginfo-0.4.2-8.1.fc14.x86_64
clementine-0.4.2-8.1.fc14.x86_64
[root@tlondon ~]# 

I started it up and started and stopped one clip, and then exited.

It terminated fine.  Thanks!
Comment 15 Tom London 2010-08-09 01:09:13 EDT
I've filed a BZ against mesa here: https://bugzilla.redhat.com/show_bug.cgi?id=622365
Comment 16 Fedora Update System 2010-08-11 23:26:14 EDT
clementine-0.4.2-9.fc14 has been submitted as an update for Fedora 14.
http://admin.fedoraproject.org/updates/clementine-0.4.2-9.fc14
Comment 17 Fedora Update System 2010-08-11 23:26:32 EDT
clementine-0.4.2-9.fc13 has been submitted as an update for Fedora 13.
http://admin.fedoraproject.org/updates/clementine-0.4.2-9.fc13
Comment 18 Fedora Update System 2010-08-11 23:26:46 EDT
clementine-0.4.2-9.fc12 has been submitted as an update for Fedora 12.
http://admin.fedoraproject.org/updates/clementine-0.4.2-9.fc12
Comment 19 Fedora Update System 2010-08-12 15:48:03 EDT
clementine-0.4.2-9.fc14 has been pushed to the Fedora 14 testing repository.  If problems still persist, please make note of it in this bug report.
 If you want to test the update, you can install it with 
 su -c 'yum --enablerepo=updates-testing update clementine'.  You can provide feedback for this update here: http://admin.fedoraproject.org/updates/clementine-0.4.2-9.fc14
Comment 20 Fedora Update System 2010-08-26 23:05:06 EDT
clementine-0.4.2-9.fc14 has been pushed to the Fedora 14 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 21 Fedora Update System 2010-08-27 02:49:11 EDT
clementine-0.4.2-9.fc12 has been pushed to the Fedora 12 stable repository.  If problems still persist, please make note of it in this bug report.
Comment 22 Fedora Update System 2010-08-27 02:50:43 EDT
clementine-0.4.2-9.fc13 has been pushed to the Fedora 13 stable repository.  If problems still persist, please make note of it in this bug report.

Note You need to log in before you can comment on or make changes to this bug.