Uploaded image for project: 'Qt'
  1. Qt
  2. QTBUG-49594

Qt5 Python apps segfault on exit when ibus-daemon is running

    XMLWordPrintable

Details

    • Bug
    • Resolution: Out of scope
    • P3: Somewhat important
    • None
    • 5.5.1
    • Core: Plugins
    • None
    • * Linux 4.3.0-gentoo
      * LxQt 0.9.0
      * ibus 1.5.11

    Description

      When exiting any Python-based Qt5 application with QT_IM_MODULE=ibus, the application crashes with a segmentation fault:

      ~ $ QT_IM_MODULE=xim ipython3 qtconsole
      iconTheme "Adwaita"
      [JupyterQtConsoleApp] shutdown: {'restart': False, 'status': 'ok'}
      ~ $ QT_IM_MODULE=ibus ipython3 qtconsole
      iconTheme "Adwaita"
      [JupyterQtConsoleApp] shutdown: {'restart': False, 'status': 'ok'}
      Speicherzugriffsfehler (Speicherabzug geschrieben)
      

      The complete backtrace looks as follows:

      Core was generated by `/usr/bin/python3.4 /usr/lib/python-exec/python3.4/ipython3 qtconsole'.
      Program terminated with signal SIGSEGV, Segmentation fault.
      #0  0x00007fa564efb260 in ?? ()
      [Current thread is 1 (Thread 0x7fa57acde700 (LWP 8445))]
      (gdb) bt
      #0  0x00007fa564efb260 in ?? ()
      #1  0x00007fa571158f83 in QInternal::activateCallbacks (cb=cb@entry=QInternal::EventNotifyCallback, 
          parameters=parameters@entry=0x7ffd7b187ae0) at global/qglobal.cpp:3817
      #2  0x00007fa57135b575 in QCoreApplication::notifyInternal (this=0x55e6b51e5900, receiver=0x55e6b55b53b0, event=event@entry=
          0x7ffd7b187b50) at kernel/qcoreapplication.cpp:954
      #3  0x00007fa571394319 in QCoreApplication::sendEvent (event=0x7ffd7b187b50, receiver=<optimized out>)
          at kernel/qcoreapplication.h:224
      #4  QObjectPrivate::setParent_helper (this=this@entry=0x55e6b55cfc40, o=o@entry=0x0) at kernel/qobject.cpp:1972
      #5  0x00007fa5713949d8 in QObject::~QObject (this=<optimized out>, __in_chrg=<optimized out>) at kernel/qobject.cpp:1031
      #6  0x00007fa5713999ef in QSocketNotifier::~QSocketNotifier (this=0x55e6b55c89e0, __in_chrg=<optimized out>)
          at kernel/qsocketnotifier.cpp:159
      #7  0x00007fa568041dff in qDBusRemoveWatch (watch=0x55e6b553f1f0, data=0x55e6b55b53b0) at qdbusintegrator.cpp:295
      #8  0x00007fa565fb6c26 in _dbus_watch_list_remove_watch (watch_list=0x55e6b553f050, watch=0x55e6b553f1f0)
          at /var/tmp/paludis/sys-apps-dbus-1.8.20/work/dbus-1.8.20/dbus/dbus-watch.c:420
      #9  0x00007fa565f99a64 in protected_change_watch (enabled=0, toggle_function=0x0, remove_function=<optimized out>, 
          add_function=0x0, watch=<optimized out>, connection=<optimized out>)
          at /var/tmp/paludis/sys-apps-dbus-1.8.20/work/dbus-1.8.20/dbus/dbus-connection.c:717
      #10 _dbus_connection_remove_watch_unlocked (connection=<optimized out>, watch=<optimized out>)
          at /var/tmp/paludis/sys-apps-dbus-1.8.20/work/dbus-1.8.20/dbus/dbus-connection.c:764
      #11 0x00007fa565fb4c54 in free_watches (transport=transport@entry=0x55e6b553f090)
          at /var/tmp/paludis/sys-apps-dbus-1.8.20/work/dbus-1.8.20/dbus/dbus-transport-socket.c:81
      #12 0x00007fa565fb4d0f in socket_disconnect (transport=0x55e6b553f090)
          at /var/tmp/paludis/sys-apps-dbus-1.8.20/work/dbus-1.8.20/dbus/dbus-transport-socket.c:1011
      #13 0x00007fa565fb392a in _dbus_transport_disconnect (transport=0x55e6b553f090)
          at /var/tmp/paludis/sys-apps-dbus-1.8.20/work/dbus-1.8.20/dbus/dbus-transport.c:511
      #14 0x00007fa565f9c8e8 in _dbus_connection_close_possibly_shared_and_unlock (connection=0x55e6b553f730)
          at /var/tmp/paludis/sys-apps-dbus-1.8.20/work/dbus-1.8.20/dbus/dbus-connection.c:2869
      #15 0x00007fa56803c382 in q_dbus_connection_close (connection=<optimized out>) at qdbus_symbols_p.h:186
      #16 QDBusConnectionPrivate::closeConnection (this=0x55e6b55b53b0) at qdbusintegrator.cpp:1091
      #17 0x00007fa568032013 in QDBusConnectionManager::~QDBusConnectionManager (
          this=0x7fa5680a5500 <(anonymous namespace)::Q_QGS__q_manager::innerFunction()::holder>, __in_chrg=<optimized out>)
          at qdbusconnection.cpp:88
      #18 0x00007fa5680320bb in (anonymous namespace)::Q_QGS__q_manager::innerFunction()::Holder::~Holder() ()
          at qdbusconnection.cpp:59
      #19 0x00007fa57a0c1660 in __run_exit_handlers (status=0, listp=0x7fa57a42f618 <__exit_funcs>, 
          run_list_atexit=run_list_atexit@entry=true) at exit.c:82
      #20 0x00007fa57a0c16c8 in __GI_exit (status=<optimized out>) at exit.c:104
      #21 0x00007fa57a0aa73b in __libc_start_main (main=0x55e6b478ab20 <main>, argc=3, argv=0x7ffd7b188008, init=<optimized out>, 
          fini=<optimized out>, rtld_fini=<optimized out>, stack_end=0x7ffd7b187ff8) at libc-start.c:323
      #22 0x000055e6b478ad59 in _start () at ../sysdeps/x86_64/start.S:108
      

      Terminating the ibus-daemon or setting QM_IM_MODULE=xim makes the segmentation fault go away.

      Since C++ based Qt applications terminate correctly I assume that it must have something to do with PyQt5, but the segmentation fault still happens in the C++ code itself.

      Attachments

        No reviews matched the request. Check your Options in the drop-down menu of this sections header.

        Activity

          People

            laknoll Lars Knoll
            dev-zero Tiziano Müller
            Votes:
            0 Vote for this issue
            Watchers:
            3 Start watching this issue

            Dates

              Created:
              Updated:
              Resolved:

              Gerrit Reviews

                There are no open Gerrit changes