Same for me with Xtightvnc server under Xubuntu jammy. I recompiled xiccd in debug version and could track the crash I experienced down to (inline) function setup_events(), where member dpy of argument conn was null :
(gdb) bt #0 0x00005650eb1cc6cf in setup_events (conn=0x565116b89400) at src/randr-conn-private.c:358 #1 0x00005650eb1cc732 in randr_conn_private_start (conn=0x565116b89400) at src/randr-conn-private.c:374 #2 0x00005650eb1cb82b in randr_conn_start (conn=0x565116b89430) at src/randr-conn.c:111 #3 0x00005650eb1ca162 in cd_connect_cb (src=0x565116b8a420, res=0x565116b8e820, user_data=0x7ffe19846ba0) at src/xiccd.c:577 #4 0x00007f38de68be39 in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #5 0x00007f38de68c05b in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #6 0x00007f38de7c7729 in () at /lib/x86_64-linux-gnu/libcolord.so.2 #7 0x00007f38de68be39 in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #8 0x00007f38de68c05b in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #9 0x00007f38de6f563d in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #10 0x00007f38de68be39 in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #11 0x00007f38de68c05b in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #12 0x00007f38de6f7518 in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #13 0x00007f38de68be39 in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #14 0x00007f38de68c05b in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #15 0x00007f38de6ed73f in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #16 0x00007f38de68be39 in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #17 0x00007f38de68be7d in () at /lib/x86_64-linux-gnu/libgio-2.0.so.0 #18 0x00007f38de9a8c44 in g_main_context_dispatch () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #19 0x00007f38de9fe2b8 in () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #20 0x00007f38de9a82b3 in g_main_loop_run () at /lib/x86_64-linux-gnu/libglib-2.0.so.0 #21 0x00005650eb1ca31a in main (argc=1, argv=0x7ffe19846ce8) at src/xiccd.c:617 (gdb) print conn $1 = (struct randr_conn *) 0x565116b89400 (gdb) print conn->dpy $2 = (Display *) 0x0 (gdb) Function setup_events() has the following code: static inline void setup_events (struct randr_conn *conn) { int s; for (s = 0; s < ScreenCount (conn->dpy); ++s) { Window w = RootWindow (conn->dpy, s); XRRSelectInput (conn->dpy, w, RRScreenChangeNotifyMask | RRCrtcChangeNotifyMask | RROutputChangeNotifyMask); } GSource *src = randr_source_new (conn); g_source_attach (src, NULL); g_source_unref (src); } Macro ScreenCount() is defined as follows in /usr/include/X11/Xlib.h: #define ScreenCount(dpy) (((_XPrivDisplay)(dpy))->nscreens) Therefore, using ScreenCount (conn->dpy) results in a null-pointer dereferencing. Now for the cause: AFAICS, it seems that despite xiccd is already running on the target system, a new instance of xiccd is launched everytime VNC server is killed/restarted, and this new instance is the one which crashes. This may result from the custom version of $HOME/.vnc/Xstartup which is necessary to run Xtightvnc server on Xubuntu. Mine is as follows: #!/bin/sh #x-terminal-emulator -geometry 80x24+10+10 -ls -title "$VNCDESKTOP Desktop" & # Fix to make GNOME and GTK stuff work export XKL_XMODMAP_DISABLE=1 unset SESSION_MANAGER unset DBUS_SESSION_BUS_ADDRESS # exec /etc/X11/xinit/xinitrc xrdb $HOME/.Xresources xsetroot -solid grey xfce4-session & # before Ubuntu 18.04: # gnome-settings-daemon & # Ubuntu 18.04 and later: /usr/lib/gnome-settings-daemon/gsd-xsettings & Hope everything above makes sense, last time I performed some debugging is a long time ago... -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/1965531 Title: xiccd crashed with SIGSEGV in update_device_cb() To manage notifications about this bug go to: https://bugs.launchpad.net/xiccd/+bug/1965531/+subscriptions -- ubuntu-bugs mailing list ubuntu-bugs@lists.ubuntu.com https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs