unofficial mirror of bug-guix@gnu.org 
 help / color / mirror / code / Atom feed
From: Thomas Danckaert <post@thomasdanckaert.be>
To: Mark H Weaver <mhw@netris.org>
Cc: 24445@debbugs.gnu.org, Mohammed Sadiq <sadiq@sadiqpk.org>
Subject: bug#24445: GNOME desktop session crash when re-arranging dock
Date: Sun, 08 Oct 2017 15:50:51 +0200	[thread overview]
Message-ID: <87a811n3yc.fsf@thomasdanckaert.be> (raw)
In-Reply-To: <87efql9z5l.fsf@netris.org> (Mark H. Weaver's message of "Mon, 02 Oct 2017 14:34:46 -0400")

[-- Attachment #1: Type: text/plain, Size: 2759 bytes --]

Mark H Weaver <mhw@netris.org> writes:

> I can confirm that the problem does not occur on Debian, and I've not
> found reports of it happening on any other mainstream distro.  I would
> guess that our unusual filesystem layout prevents GNOME Shell from
> finding something that it's looking for, and that the error handling in
> that case is deficient or non-existent.

Hi,

I think I understand what's going on, and I may even have a solution ;-)

What's happening is that gnome-shell wants certain cursors, but can't
find them.  These cursors are provided by Adwaita icon theme, but
gnome-shell somehow isn't looking in Adwaita's location (unless you
symlink adwaita's icons into ${HOME}/.icons as I mentioned before).
I've attached an strace from gnome-shell, the relevant part is here:

open("/home/thomas/.icons/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/default/cursors/dnd-none", O_RDONLY) = -1
ENOENT (No such file or directory)
[...]
--- SIGTRAP {si_signo=SIGTRAP, si_code=SI_KERNEL} ---
+++ killed by SIGTRAP +++

I've been looking through the sources, and
gtk+-3.22.15/gdk/x11/gdkcursor-x11.c makes me think that cursor lookup
in our case is ultimately done by libxcursor.

libxcursor's configure script has an option "--with-cursorpath=<paths>"
to set a default search path for cursors.  If no option is given (as is
the case with our package), the default is
DEF_CURSORPATH="~/.icons:${datadir}/icons:${datadir}/pixmaps", which is
exactly the set of directories in the strace (${HOME}/.icons and
${INSTALLPREFIX}/share/icons).

So I guess that adding relevant directories to the libxcursor search
path would solve the problem.  For Guix, it'd be useful to add
/run/current-system/profile/share/icons, as well as
~/.guix-profile/share/icons (for users installing other icon themes in
their profile).  Would this be ok?

I'll go and test this, but building everything from libxcursor up to gnome-desktop
will probably take a while :).

Comments are welcome!

Thomas


[-- Attachment #2: strace from gnome-shell --]
[-- Type: application/octet-stream, Size: 9926 bytes --]

futex(0x7fce88461468, FUTEX_WAKE_PRIVATE, 2147483647) = 0
open("/home/thomas/.icons/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/default/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/default/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/default/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLOUT}])
writev(5, [{iov_base="\2\0\4\0\20\0\240\0\0@\0\0\0\0\0\0", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
recvmsg(5, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
open("/home/thomas/.icons/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/Adwaita/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/Adwaita/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/default/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/home/thomas/.icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/default/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/icons/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/default/cursors/dnd-none", O_RDONLY) = -1 ENOENT (No such file or directory)
open("/gnu/store/14f4vh3y3wdf3rfpzkpqfqbl9i81hyw8-libxcursor-1.1.14/share/pixmaps/default/index.theme", O_RDONLY) = -1 ENOENT (No such file or directory)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=12, revents=POLLOUT}])
writev(12, [{iov_base="\2\31\4\0\4\1\0\0\0@\0\0\0\0\0\0", iov_len=16}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 16
recvmsg(12, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5c030) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5bfa0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5c090) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5c000) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a600) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_TILING, 0x7fff1ce5a590) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a600) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_TILING, 0x7fff1ce5a590) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a610) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a750) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_TILING, 0x7fff1ce5a6e0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a6f0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_TILING, 0x7fff1ce5a680) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a610) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a750) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_TILING, 0x7fff1ce5a6e0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_CREATE, 0x7fff1ce5a6f0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_TILING, 0x7fff1ce5a680) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5bf30) = 0
ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff1ce5bf30) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5c030) = 0
ioctl(6, DRM_IOCTL_I915_GEM_MMAP, 0x7fff1ce5bfe0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5bfa0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5c1e0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5c150) = 0
ioctl(6, DRM_IOCTL_I915_GEM_EXECBUFFER2, 0x7fff1ce5bf80) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5bea0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff1ce5bea0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5be90) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5bdf0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff1ce5bdf0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5bde0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5f2d0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5f240) = 0
ioctl(6, DRM_IOCTL_I915_GEM_EXECBUFFER2, 0x7fff1ce5f490) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5f430) = 0
ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff1ce5f400) = 0
ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff1ce5f400) = 0
ioctl(6, DRM_IOCTL_I915_GEM_BUSY, 0x7fff1ce5f3b0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_MADVISE, 0x7fff1ce5f3b0) = 0
ioctl(6, DRM_IOCTL_I915_GEM_SET_DOMAIN, 0x7fff1ce5f3a0) = 0
poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLIN|POLLOUT}])
recvmsg(5, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="#\203\377\34\32\0\0\0\6\0\2\0O\234\217\0\0\0\0\0\4\1\0\0\20\0\240\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 264
writev(5, [{iov_base="_\0\2\0\0\0\0\0", iov_len=8}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 8
poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLOUT}])
writev(5, [{iov_base="\223\1\22\0\20\0\240\0%\0\240\0\372\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=72}], 1) = 72
poll([{fd=5, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=5, revents=POLLIN|POLLOUT}])
recvmsg(5, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\6\0\35\0\0\0\0\0\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
writev(5, [{iov_base="\223\2\n\0\20\0\240\0\373\6\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=40}], 1) = 40
poll([{fd=5, events=POLLIN}], 1, -1)    = 1 ([{fd=5, revents=POLLIN}])
recvmsg(5, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="#\223\2\35\2\0\0\0\1\0\1\0$\0\240\0\20\0\240\0\373\6\0\0h\253\3720\2\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 40
recvmsg(5, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=12, revents=POLLIN|POLLOUT}])
recvmsg(12, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="W\0\254)\4\1\0\0\234\0\0\0M\234\217\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 64
writev(12, [{iov_base="_\31\2\0\0\0\0\0", iov_len=8}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 8
recvmsg(12, {msg_namelen=0}, 0)         = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=4, events=POLLIN}, {fd=5, events=POLLIN}, {fd=11, events=POLLIN}, {fd=12, events=POLLIN}, {fd=13, events=POLLIN}, {fd=21, events=POLLIN}, {fd=22, events=POLLIN}, {fd=23, events=POLLIN}, {fd=24, events=POLLIN}, {fd=26, events=POLLIN}, {fd=27, events=POLLIN}, {fd=34, events=POLLIN}, {fd=35, events=POLLIN}], 13, 0) = 2 ([{fd=4, revents=POLLIN}, {fd=12, revents=POLLIN}])
read(4, "\1\0\0\0\0\0\0\0", 16)         = 8
write(4, "\1\0\0\0\0\0\0\0", 8)         = 8
recvmsg(5, {msg_namelen=0}, 0)          = -1 EAGAIN (Resource temporarily unavailable)
poll([{fd=12, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=12, revents=POLLIN|POLLOUT}])
recvmsg(12, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\0\6\256)\0\0\0\0\0\0_\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 32
writev(12, [{iov_base="\211\31\1\0", iov_len=4}, {iov_base=NULL, iov_len=0}, {iov_base="", iov_len=0}], 3) = 4
poll([{fd=12, events=POLLIN}], 1, -1)   = 1 ([{fd=12, revents=POLLIN}])
recvmsg(12, {msg_name=NULL, msg_namelen=0, msg_iov=[{iov_base="\1\0\257)\0\1\0\0*\0|\1\20\0\20\0\7\0\7\0\1\0\0\0\0\0\0\0\0\0\0\0"..., iov_len=4096}], msg_iovlen=1, msg_controllen=0, msg_flags=0}, 0) = 1056
open("/gnu/store/np05q8mf1y9y4bk5y4ssj99m0dss2b1q-libx11-1.6.5/share/X11/XErrorDB", O_RDONLY) = 28
fstat(28, {st_mode=S_IFREG|0444, st_size=42077, ...}) = 0
read(28, "!\n! Copyright 1993, 1995, 1998  "..., 42077) = 42077
close(28)                               = 0
ioctl(2, TCGETS, {B38400 opost isig icanon echo ...}) = 0
getpid()                                = 6291
write(2, "\n(.gnome-shell-real:6291): Gdk-\33"..., 653) = 653
--- SIGTRAP {si_signo=SIGTRAP, si_code=SI_KERNEL} ---
+++ killed by SIGTRAP +++

  reply	other threads:[~2017-10-08 13:52 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2016-09-15 13:45 bug#24445: GNOME desktop session crash when re-arranging dock Ravishankar S
2017-09-27  7:48 ` Thomas Danckaert
2017-09-30  5:51 ` bug#24445: [No Subject] Mohammed Sadiq
2017-10-02 14:51   ` bug#24445: GNOME desktop session crash when re-arranging dock Ludovic Courtès
2017-10-02 18:01     ` Mohammed Sadiq
2017-10-02 18:34     ` Mark H Weaver
2017-10-08 13:50       ` Thomas Danckaert [this message]
2017-10-08 15:08         ` Ludovic Courtès
2017-10-08 15:38           ` Thomas Danckaert
2017-10-08 19:18             ` Ludovic Courtès
2017-10-09  8:58               ` Thomas Danckaert
2017-10-09  9:51                 ` Ludovic Courtès
2017-10-09 10:47                   ` Thomas Danckaert
2017-10-10  8:29                   ` Thomas Danckaert

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87a811n3yc.fsf@thomasdanckaert.be \
    --to=post@thomasdanckaert.be \
    --cc=24445@debbugs.gnu.org \
    --cc=mhw@netris.org \
    --cc=sadiq@sadiqpk.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).