Opened 10 years ago

Last modified 6 weeks ago

#45321 reopened defect

port:phonon_backend_gstreamer causes digikam 4.3.0 to abort when $DISPLAY is set

Reported by: RJVB (René Bertin) Owned by: michaelld (Michael Dickens)
Priority: High Milestone:
Component: ports Version:
Keywords: haspatch Cc: mkae (Marko Käning), cooljeanius (Eric Gallager)
Port: phonon-backend-gstreamer

Description

I installed phonon_backend_gstreamer in hopes to improve audio capabilities in Qt4/KDE. It did not make a noticeable difference (the relevant controls remain inactive in qtconfig), and now I did notice an annoying side-effect of having it installed.

Launching digikam with $DISPLAY set, either from an xterm or through LaunchServices, causes it to abort due to a call to XGetWindowAttributes without first connecting to an X11 server:

(lldb) b XGetWindowAttributes
breakpoint set --name 'XGetWindowAttributes'
Breakpoint created: 2: name = 'XGetWindowAttributes', locations = 1
(lldb) r
Process 57949 launched: '/Applications/MacPorts/KDE4/digikam.app/Contents/MacOS/digikam' (x86_64)
Process 57949 stopped
* thread #1: tid = 0x2d03, 0x00000001002c1c2e digikam`main + 30 at main.cpp:71, stop reason = breakpoint 1.1
    frame #0: 0x00000001002c1c2e digikam`main + 30 at main.cpp:71
   68   
   69   int main(int argc, char* argv[])
   70   {
-> 71       KAboutData aboutData("digikam",
   72                            0,
   73                            ki18n("digiKam"),
   74                            digiKamVersion().toAscii(),
(lldb) c
Process 57949 resuming
QSqlDatabasePrivate::removeDatabase: connection 'ConnectionTest' is still in use, all queries will cease to work.
WARNING: Disabling PulseAudio integration for lack of GLib event loop.
StartNotification name = default 
Process 57949 stopped
* thread #1: tid = 0x2d03, 0x000000010660249a libX11.6.dylib`XGetWindowAttributes, stop reason = breakpoint 2.1
    frame #0: 0x000000010660249a libX11.6.dylib`XGetWindowAttributes
(lldb) bt
* thread #1: tid = 0x2d03, 0x000000010660249a libX11.6.dylib`XGetWindowAttributes, stop reason = breakpoint 2.1
    frame #0: 0x000000010660249a libX11.6.dylib`XGetWindowAttributes
    frame #1: 0x000000012953b948 libgstximagesink.so`gst_ximagesink_set_window_handle + 230
    frame #2: 0x00000001267c838a phonon_gstreamer.so`Phonon::Gstreamer::X11Renderer::setOverlay() + 122
    frame #3: 0x00000001267c89ab phonon_gstreamer.so`Phonon::Gstreamer::X11Renderer::X11Renderer(Phonon::Gstreamer::VideoWidget*) + 427
    frame #4: 0x00000001267a304b phonon_gstreamer.so`Phonon::Gstreamer::DeviceManager::createVideoRenderer(Phonon::Gstreamer::VideoWidget*) + 187
    frame #5: 0x00000001267c4198 phonon_gstreamer.so`Phonon::Gstreamer::VideoWidget::setupVideoBin() + 40
    frame #6: 0x00000001267c45b6 phonon_gstreamer.so`Phonon::Gstreamer::VideoWidget::VideoWidget(Phonon::Gstreamer::Backend*, QWidget*) + 246
    frame #7: 0x000000012679ea84 phonon_gstreamer.so`Phonon::Gstreamer::Backend::createObject(Phonon::BackendInterface::Class, QObject*, QList<QVariant> const&) + 388
    frame #8: 0x0000000100b7bd5a libphonon.4.dylib`Phonon::Factory::createVideoWidget(QObject*) + 122
    frame #9: 0x0000000100ba96c6 libphonon.4.dylib`Phonon::VideoWidgetPrivate::createBackendObject() + 54
    frame #10: 0x0000000100ba893a libphonon.4.dylib`Phonon::VideoWidget::VideoWidget(QWidget*) + 202
    frame #11: 0x0000000100ba801b libphonon.4.dylib`Phonon::VideoPlayerPrivate::ensureCreated() const + 123
    frame #12: 0x0000000100ba85c5 libphonon.4.dylib`Phonon::VideoPlayer::mediaObject() const + 21
    frame #13: 0x000000010024bb15 digikam`MediaPlayerView + 1413 at mediaplayerview.cpp:166
    frame #14: 0x0000000100238f45 digikam`StackedView + 437 at stackedview.cpp:115
    frame #15: 0x00000001002430cb digikam`DigikamView + 715 at digikamview.cpp:262
    frame #16: 0x0000000100124b11 digikam`Digikam::DigikamApp::setupView() + 145 at digikamapp.cpp:551
    frame #17: 0x00000001001243d1 digikam`DigikamApp + 2017 at digikamapp.cpp:265
    frame #18: 0x00000001002c3204 digikam`main + 5620 at main.cpp:189
    frame #19: 0x000000010000f004 digikam`start + 52
(lldb) f 4
Process 57949 stopped
* thread #1: tid = 0x2d03, 0x000000010660249a libX11.6.dylib`XGetWindowAttributes, stop reason = signal SIGSTOP
    frame #0: 0x000000010660249a libX11.6.dylib`XGetWindowAttributes

Uninstalling phonon_backend_gstreamer resolves this issue, but it might be useful to understand why this happens and see if one can work around it. Phonon being a Qt4 package there is no reason it would ever want to do X11-related things on OS X, or is there?

Attachments (2)

phononBGSTr-avoid-x11renderer.patch (517 bytes) - added by RJVB (René Bertin) 10 years ago.
This patch resolves the issue by excluding the code that would pick an X11 renderer
PBGS-repatch.diff (2.9 KB) - added by RJVB (René Bertin) 2 months ago.
Fix port:phonon-backend-gstreamer (#8142ad6b5bc52b1f55903c48fc947f901244d55c)

Download all attachments as: .zip

Change History (8)

comment:1 Changed 10 years ago by mf2k (Frank Schima)

Cc: michaelld@… removed
Owner: changed from macports-tickets@… to michaelld@…
Port: phonon-backend-gstreamer added; phonon_backend_gstreamer removed

Changed 10 years ago by RJVB (René Bertin)

This patch resolves the issue by excluding the code that would pick an X11 renderer

comment:2 Changed 10 years ago by mkae (Marko Käning)

Cc: mk@… added

Cc Me!

comment:3 Changed 10 years ago by mkae (Marko Käning)

Resolution: fixed
Status: newclosed

Done in r129223

comment:4 in reply to:  description Changed 2 months ago by barracuda156

Replying to RJVB:

Oh wow, this is again broken, apparently, and that is why digikam crashed for me. Deactivating phonon-backend-gstreamer fixed it.

comment:5 Changed 2 months ago by RJVB (René Bertin)

Keywords: haspatch added
Priority: NormalHigh
Resolution: fixed
Status: closedreopened
Version: 2.3.1

The patch that was included turned out to be pointless (modifying the default of a CMake variable that was going to be set to that same value a few lines later), and upstream missed a code path that needs to be excluded too when not building the "X11 renderer".

I'm attaching a new patch that fixes the port.

Changed 2 months ago by RJVB (René Bertin)

Attachment: PBGS-repatch.diff added

Fix port:phonon-backend-gstreamer (#8142ad6b5bc52b1f55903c48fc947f901244d55c)

comment:6 Changed 6 weeks ago by cooljeanius (Eric Gallager)

Cc: cooljeanius added
Note: See TracTickets for help on using tickets.