Skip to content

Devel GTK crashstack

Simeon Andreev edited this page Feb 23, 2023 · 1 revision

When eclipse crashes, the stack trace often doesn't contain line number or other details:

E.g:

0 0x00007f40313f0ecc in WTFCrash () at /lib64/libjavascriptcoregtk-4.0.so.18
1 0x00007f4031c93fe1 in WebKit::WebCookieManagerProxy::processPoolDestroyed() () at /lib64/libwebkit2gtk-4.0.so.37
2 0x00007f4031cd939a in WebKit::WebProcessPool::\~WebProcessPool() ()at /lib64/libwebkit2gtk-4.0.so.37
3 0x00007f4031cd9859 in WebKit::WebProcessPool::\~WebProcessPool() ()at /lib64/libwebkit2gtk-4.0.so.37
4 0x00007f4031e91ad0 in webkit_web_c

You can get a more detailed stack trace with gdb, ex: (gdb) bt

0 WTFCrash() () at Source/WTF/wtf/Assertions.cpp:278
1 WebKit::CallbackMap::invalidate(WebKit::CallbackBase::Error)
(error=WebKit::CallbackBase::Error::OwnerWasInvalidated)
/WebKit/UIProcess/GenericCallback.h:225

2 WebKit::WebCookieManagerProxy::processPoolDestroyed() /WebKit/UIProcess/WebCookieManagerProxy.cpp:76
3 WebKit::WebProcessPool::\~WebProcessPool() __in_chrg=.. /Source/WebKit/UIProcess/WebProcessPool.cpp:298
4 WebKit::WebProcessPool::\~WebProcessPool() WebKit/UIProcess/WebProcessPool.cpp:317
5 WTF::ThreadSafeRefCounted<API::Object>::deref() const .. WTF/wtf/ThreadSafeRefCounted.h:71
6 WTF::derefIfNotNull<WebKit::WebProcessPool>(WebKit::WebProcessPool\*)(ptr=../WTF/wtf/RefPtr.h:45

To do so, you need to attach your gdb to a currently running eclipse:

gdb -p 1234   #where 1234 is pid of eclipse
c         #Continue
# < do something to make eclipse crash
bt          # print back trace

Note, as you attach gdb to eclipse, it might complain about missing debug information and it will prompt you to install them. An example might look like as following:

sudo dnf debuginfo-install\
         dbus-libs-1.11.14-1.fc26.x86_64\
         libblkid-2.30-1.fc26.x86_64\
         libmount-2.30-1.fc26.x86_64\
         libsoup-2.58.1-2.fc26.x86_64\
         libuuid-2.30-1.fc26.x86_64\
         mesa-libwayland-egl-17.1.4-1.fc26.x86_64\
         nss-softokn-freebl-3.31.0-1.0.fc26.x86_64\
         webkitgtk4-2.18.0-1.fc26.x86_64\
         webkitgtk4-jsc-2.18.0-1.fc26.x86_64

You can view available debug info packages via:

sudo dnf --enablerepo=fedora-debuginfo list available

As a note, debuginfo puts the source code into:

/usr/src/debug/        #E.g 'webkitgtk-2.18.0' folder will contain webkitgtk source code.

Folders such as 'webkitgtk' can be imported into eclipse as a project (or link) and you can connect to an instance of eclipse with CDT via "Debug Attached Executable" and debug the C part of an eclipse visually. (See sections on debugging GTK).