Zeal: crash on wayland

Created on 8 Jun 2019  路  7Comments  路  Source: zealdocs/zeal

using arch-linux currently zeal stopped working

$ zeal
qt5ct: using qt5ct plugin
zeal.core.applicationsingleton: Singleton ID: s2nnkKhrreB1s5P0GVM88n0vsVn3MyLXd9Vdsi3m8rk
zeal.core.applicationsingleton: Starting as a primary instance. (PID: 13305)
Segmentation fault (core dumped)

$ coredumpctl gdb zeal reveals the following:

[Thread debugging using libthread_db enabled]
Using host libthread_db library "/usr/lib/libthread_db.so.1".
Core was generated by `zeal'.
Program terminated with signal SIGSEGV, Segmentation fault.
#0  0x00007f6d248ea0ce in xcb_send_request_with_fds64 () from /usr/lib/libxcb.so.1
[Current thread is 1 (Thread 0x7f6d1b692880 (LWP 13305))]
Traceback (most recent call last):
  File "/usr/share/gdb/auto-load/usr/lib/libgstreamer-1.0.so.0.1600.0-gdb.py", line 9, in <module>
    from gst_gdb import register
ModuleNotFoundError: No module named 'gst_gdb'

gstreamer is installed with the latest arch version.
on x11 everything works fine, but on wayland it crashes
unsure if compiling from source fixes it

platforlinux resolutiodone scopuglobal-shortcuts typdefect

Most helpful comment

Ah yes, the global shortcut would do it. I have that unset myself, possibly because I encountered this at one point as well.

As a workaround, you can unset the global shortcut. If you are unable to start Zeal to do so, you can edit ~/.config/Zeal/Zeal.conf to contain this:

[global_shortcuts]
show=

All 7 comments

The Arch Linux package works fine for me on Wayland.

I confirm it crashes for me in ArchLinux: at least in swaywm and plasma+wayland. No issues in X11. I have attached the crashlog generated in plasma.
zeal-20190619-134926.kcrash.txt

Crashes under Fedora 30 too (zeal version 0.6.1). Here's full backtrace from current git master:

(gdb) bt full
#0  0x00007ffff3b00dc8 in xcb_send_request_with_fds64 (c=0x0, flags=flags@entry=1, vector=vector@entry=0x7fffffffbe70, req=req@entry=0x7ffff3b14a70 <xcb_req>, num_fds=num_fds@entry=0, fds=fds@entry=0x0)
    at xcb_out.c:223
        request = <optimized out>
        prefix = {3, 48}
        veclen = <optimized out>
        workaround = <optimized out>
        __PRETTY_FUNCTION__ = "xcb_send_request_with_fds64"
#1  0x00007ffff3b0132f in xcb_send_request64 (c=<optimized out>, flags=flags@entry=1, vector=vector@entry=0x7fffffffbe70, req=req@entry=0x7ffff3b14a70 <xcb_req>) at xcb_out.c:349
#2  0x00007ffff3b0133d in xcb_send_request (c=<optimized out>, flags=flags@entry=1, vector=vector@entry=0x7fffffffbe70, req=req@entry=0x7ffff3b14a70 <xcb_req>) at xcb_out.c:355
#3  0x00007ffff3b090fd in xcb_grab_key_checked
    (c=<optimized out>, owner_events=<optimized out>, grab_window=<optimized out>, modifiers=<optimized out>, key=<optimized out>, pointer_mode=<optimized out>, keyboard_mode=1 '\001') at xproto.c:4608
        xcb_req = {count = 2, ext = 0x0, opcode = 33 '!', isvoid = 1 '\001'}
        xcb_parts = {{iov_base = 0x7ffff3b272a0, iov_len = 16088625659521747200}, {iov_base = 0x561f10, iov_len = 4294967295}, {iov_base = 0x7fffffffbe40, iov_len = 16}, {iov_base = 0x0, iov_len = 0}}
        xcb_ret = <optimized out>
        xcb_out = {major_opcode = 80 'P', owner_events = 1 '\001', length = 65535, grab_window = 0, modifiers = 64, key = 0 '\000', pointer_mode = 1 '\001', keyboard_mode = 1 '\001', pad0 = "\000\000"}
#4  0x000000000049e404 in QxtGlobalShortcutPrivate::registerShortcut(unsigned int, unsigned int) (nativeKey=0, nativeMods=64) at /tmp/zeal/src/libs/ui/qxtglobalshortcut/qxtglobalshortcut_x11.cpp:146
        maskMods = 0
        __for_range = @0x4fde90: {0, 16, 2, 18}
        __for_begin = 0x4fde90 <(anonymous namespace)::maskModifiers>
        __for_end = 0x4fdea0
        xcbConnection = 0x0
        xcbCookies = 
            {<QListSpecialMethods<xcb_void_cookie_t>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7ffff770ea80 <QListData::shared_null>}, d = 0x7ffff770ea80 <QListData::shared_null>}}
        failed = false
#5  0x000000000049d03e in QxtGlobalShortcutPrivate::setShortcut(QKeySequence const&) (this=0x678750, shortcut=...) at /tmp/zeal/src/libs/ui/qxtglobalshortcut/qxtglobalshortcut.cpp:95
        q = 0x69cf10
        allMods = {i = 503316480}
        nativeKey = 0
        nativeMods = 64
        res = false
#6  0x000000000049d711 in QxtGlobalShortcut::setShortcut(QKeySequence const&) (this=0x69cf10, shortcut=...) at /tmp/zeal/src/libs/ui/qxtglobalshortcut/qxtglobalshortcut.cpp:219
        d = 0x678750
#7  0x000000000049d555 in QxtGlobalShortcut::QxtGlobalShortcut(QKeySequence const&, QObject*) (this=0x69cf10, shortcut=..., parent=0x661c50) at /tmp/zeal/src/libs/ui/qxtglobalshortcut/qxtglobalshortcut.cpp:178
#8  0x0000000000439944 in Zeal::WidgetUi::MainWindow::MainWindow(Zeal::Core::Application*, QWidget*) (this=0x661c50, app=0x5b49a0, parent=0x0) at /tmp/zeal/src/libs/ui/mainwindow.cpp:71
#9  0x00000000004291bf in Zeal::Core::Application::Application(QObject*) (this=0x5b49a0, parent=0x0) at /tmp/zeal/src/libs/core/application.cpp:81
#10 0x000000000042567a in main(int, char**) (argc=1, argv=0x7fffffffc958) at /tmp/zeal/src/app/main.cpp:223
        qapp = {d = 0x552ff0}
        clParams = 
              {force = false, preventActivation = false, query = {m_query = {static null = {<No data fields>}, d = 0x573150}, m_keywords = {<QList<QString>> = {<QListSpecialMethods<QString>> = {<No data fields>}, {p = {static shared_null = {ref = {atomic = {_q_value = {<std::__atomic_base<int>> = {static _S_alignment = 4, _M_i = -1}, <No data fields>}}}, alloc = 0, begin = 0, end = 0, array = {0x0}}, d = 0x7ffff770ea80 <QListData::shared_null>}, d = 0x7ffff770ea80 <QListData::shared_null>}}, <No data fields>}, m_keywordPrefix = {static null = {<No data fields>}, d = 0x7ffff770cb40 <QArrayData::shared_null>}}}
        appSingleton = {d = 0x572f10}
        app = {d = 0x0}

If I comment out all references to m_globalShortcut in mainwindow.cpp, zeal starts fine.

Ah yes, the global shortcut would do it. I have that unset myself, possibly because I encountered this at one point as well.

As a workaround, you can unset the global shortcut. If you are unable to start Zeal to do so, you can edit ~/.config/Zeal/Zeal.conf to contain this:

[global_shortcuts]
show=

Disabling global shortcuts in ~/.config/Zeal/Zeal.conf works great. Thanks @auscompgeek !

Zeal uses XCB for global shortcuts, obviously it wouldn't work in Wayland. For now we should just skip global shortcut initialization when QGuiApplication::platformName() == "wayland".

This thread has been automatically locked since there has not been any recent activity after it was closed. Please open a new issue for a related request.

Was this page helpful?
0 / 5 - 0 ratings

Related issues

ngirard picture ngirard  路  4Comments

rugk picture rugk  路  8Comments

cccaballero picture cccaballero  路  7Comments

Rohaq picture Rohaq  路  3Comments

trollixx picture trollixx  路  8Comments