Menu

#67 Kplayer crashes on close after movie is finished

open
nobody
None
5
2008-09-21
2008-09-21
Regnaron
No

Steps to reproduce:

1) Open a movie in kplayer (SVN checkout from Sept 16th)
2) Scroll to the end of the movie (I used rightarrow)
3) After the movie is done and the screen is black, quit kplayer ("x" in upper right corner)
4) See kplayer crash with the following backtrace:

Application: KPlayer (kplayer), signal SIGSEGV
[Current thread is 0 (LWP 4533)]

Thread 2 (Thread 0xb48eab90 (LWP 4534)):
#0 0xffffe424 in __kernel_vsyscall ()
#1 0xb6624021 in select () from /lib/libc.so.6
#2 0xb7731227 in QProcessManager::run (this=0x81b0c98) at io/qprocess_unix.cpp:307
#3 0xb7661a24 in QThreadPrivate::start (arg=0x81b0c98) at thread/qthread_unix.cpp:191
#4 0xb75e2160 in start_thread (arg=0xb48eab90) at pthread_create.c:297
#5 0xb662ac0e in clone () from /lib/libc.so.6

Thread 1 (Thread 0xb5f5f700 (LWP 4533)):
[KCrash Handler]
#6 0x0806347e in KPlayerWidgetUnmapHandler (wid=46137345) at /var/tmp/portage/media-video/kplayer-9999/work/kplayer/kplayer/kplayer/kplayerengine.h:184
#7 0x08063198 in KPlayerProcessX11Event (event=0xbfaec9f8) at /var/tmp/portage/media-video/kplayer-9999/work/kplayer/kplayer/kplayer/x11.cpp:240
#8 0x08155848 in KPlayerApplication::x11EventFilter (this=0xbfaecb84, event=0xbfaec9f8) at /var/tmp/portage/media-video/kplayer-9999/work/kplayer/kplayer/kplayer/kplayer.cpp:368
#9 0xb6cee21c in qt_x11EventFilter (ev=0xbfaec9f8) at kernel/qapplication_x11.cpp:367
#10 0xb6cfdc19 in QApplication::x11ProcessEvent (this=0xbfaecb84, event=0xbfaec9f8) at kernel/qapplication_x11.cpp:2924
#11 0xb6d2496d in QEventDispatcherX11::processEvents (this=0x81ad728, flags={i = -1079063912}) at kernel/qeventdispatcher_x11.cpp:134
#12 0xb77516b0 in QEventLoop::processEvents (this=0xbfaecb10, flags={i = -1079063848}) at kernel/qeventloop.cpp:149
#13 0xb7751852 in QEventLoop::exec (this=0xbfaecb10, flags={i = -1079063784}) at kernel/qeventloop.cpp:200
#14 0xb7753c6f in QCoreApplication::exec () at kernel/qcoreapplication.cpp:851
#15 0xb6c8ed43 in QApplication::exec () at kernel/qapplication.cpp:3337
#16 0x081617ef in main (argc=3, argv=0xbfaecd24) at /var/tmp/portage/media-video/kplayer-9999/work/kplayer/kplayer/kplayer/main.cpp:102

Discussion

  • Andriy Gapon

    Andriy Gapon - 2010-06-15

    I've got the same issue I think.
    Here's a better backtrace produced with kplayer --nocrashhandler and gdb :
    (gdb) bt
    #0 0x000000000042646a in KPlayerEngine::widget (this=0x0) at kplayerengine.h:184
    #1 0x00000000004264e1 in kPlayerWidget () at kplayerengine.h:577
    #2 0x00000000004233f3 in KPlayerWidgetUnmapHandler (wid=50331962)
    at /usr/obj/usr/ports/multimedia/kplayer-kde4/work/kplayer-0.7/kplayer/kplayerwidget.cpp:45
    #3 0x0000000000422d75 in KPlayerProcessX11Event (event=0x7fffffffd7a0)
    at /usr/obj/usr/ports/multimedia/kplayer-kde4/work/kplayer-0.7/kplayer/x11.cpp:240
    #4 0x000000000058cf3c in KPlayerApplication::x11EventFilter (this=0x7fffffffdfb0, event=0x7fffffffd7a0)
    at /usr/obj/usr/ports/multimedia/kplayer-kde4/work/kplayer-0.7/kplayer/kplayer.cpp:368
    #5 0x000000080361fbf9 in _ZL17qt_x11EventFilterP7_XEvent () from /usr/local/lib/qt4/libQtGui.so.4
    #6 0x000000080362e7bf in QApplication::x11ProcessEvent () from /usr/local/lib/qt4/libQtGui.so.4
    #7 0x0000000803658a68 in _ZL22x11EventSourceDispatchP8_GSourcePFiPvES1_ () from /usr/local/lib/qt4/libQtGui.so.4
    #8 0x000000080758d859 in g_main_context_dispatch () from /usr/local/lib/libglib-2.0.so.0
    #9 0x0000000807591233 in g_main_context_prepare () from /usr/local/lib/libglib-2.0.so.0
    #10 0x0000000807591422 in g_main_context_iteration () from /usr/local/lib/libglib-2.0.so.0
    #11 0x000000080291ce45 in QEventDispatcherGlib::processEvents () from /usr/local/lib/qt4/libQtCore.so.4
    #12 0x0000000803658686 in QGuiEventDispatcherGlib::processEvents () from /usr/local/lib/qt4/libQtGui.so.4
    #13 0x00000008028f2e7a in QEventLoop::processEvents () from /usr/local/lib/qt4/libQtCore.so.4
    #14 0x00000008028f323c in QEventLoop::exec () from /usr/local/lib/qt4/libQtCore.so.4
    #15 0x00000008028f7c1e in QCoreApplication::exec () from /usr/local/lib/qt4/libQtCore.so.4
    #16 0x00000000005a2844 in main (argc=2, argv=0x7fffffffe068) at /usr/obj/usr/ports/multimedia/kplayer-kde4/work/kplayer-0.7/kplayer/main.cpp:102
    (gdb) fr 0
    #0 0x000000000042646a in KPlayerEngine::widget (this=0x0) at kplayerengine.h:184
    184 { return m_widget; }
    (gdb) p this
    $1 = (const class KPlayerEngine * const) 0x0

     
  • Andriy Gapon

    Andriy Gapon - 2010-06-15

    It seems that there problem is that KPlayerEngine is already NULL when KPlayerEngine::widget is called on it.
    Here's a patch that I used to fix/workaround this issue.
    Sorry if it comes mangled, but I couldn't find a way to attach rather than paste into a comment.

    --- kplayer/kplayerengine.h.orig 2010-06-15 14:26:22.055340072 +0300
    +++ kplayer/kplayerengine.h 2010-06-15 14:23:27.311957650 +0300
    @@ -559,26 +559,31 @@ inline KPlayerEngine* kPlayerEngine (voi

    inline KPlayerProcess* kPlayerProcess (void)
    {
    + if ( kPlayerEngine() == 0 ) return 0;
    return kPlayerEngine() -> process();
    }

    inline KConfig* kPlayerConfig (void)
    {
    + if ( kPlayerEngine() == 0 ) return 0;
    return kPlayerEngine() -> config();
    }

    inline KPlayerSettings* kPlayerSettings (void)
    {
    + if ( kPlayerEngine() == 0 ) return 0;
    return kPlayerEngine() -> settings();
    }

    inline KPlayerWidget* kPlayerWidget (void)
    {
    + if ( kPlayerEngine() == 0 ) return 0;
    return kPlayerEngine() -> widget();
    }

    inline KPlayerWorkspace* kPlayerWorkspace (void)
    {
    + if ( kPlayerEngine() == 0 ) return 0;
    return kPlayerEngine() -> workspace();
    }

     

Log in to post a comment.