Bug#730177: I can't really understand whats happening.

John Hughes john at calva.com
Fri Jan 3 12:33:56 UTC 2014


Fed up with strace I've been looking at the gdm3 log files, and I think 
I see an earlier difference in the behaviour.

A working session has this in :0-greeter.log

gnome-session[]: DEBUG(+): GsmAutostartApp: started pid:2489
gnome-session[]: DEBUG(+): GsmManager: ending phase APPLICATION
gnome-session[]: DEBUG(+): GsmManager: starting phase RUNNING

gnome-session[]: DEBUG(+): gsm_xsmp_server_start
gnome-session[]: DEBUG(+): GsmPresence: adding idle watch (1) for 300 secs
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameOwnerChanged
...
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameOwnerChanged
gnome-session[]: DEBUG(+): GsmShell: Connected to the shell
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameOwnerChanged
...
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/gnome/SessionManager/Presence interface=org.freedesktop.DBus.Properties method=GetAll
gnome-session[]: DEBUG(+): Detected that screensaver has appeared on the bus
... much exciting looking stuff
gnome-session[]: DEBUG(+): emitting SessionIsActive


But the failed sessions look like:

gnome-session[]: DEBUG(+): GsmAutostartApp: started pid:2626
gnome-session[]: DEBUG(+): GsmManager: ending phase APPLICATION
gnome-session[]: DEBUG(+): GsmManager: starting phase RUNNING

gnome-session[]: DEBUG(+): gsm_xsmp_server_start
gnome-session[]: DEBUG(+): GsmPresence: adding idle watch (1) for 300 secs
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameOwnerChanged
...
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameOwnerChanged
gnome-session[]: DEBUG(+): GsmShell: Connected to the shell
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameOwnerChanged
...
     JS ERROR: !!!   Exception was: Gio.IOErrorEnum: Permission denied
     JS ERROR: !!!     message = '"Permission denied"'
     JS ERROR: !!!     fileName = '"/usr/share/gnome-shell/js/misc/fileUtils.js"'
     JS ERROR: !!!     lineNumber = '13'
     JS ERROR: !!!     stack = '"0 anonymous("res" = [object GObject_Object], "obj" = [object GObject_Object])@/usr/share/gnome-shell/js/misc/fileUtils.js:13
"'
gnome-session[]: DEBUG(+): GsmDBusClient: obj_path=/org/freedesktop/DBus interface=org.freedesktop.DBus method=NameOwnerChanged
gnome-session[]: DEBUG(+): emitting SessionIsActive


The failed session jumps over screeds of stuff after the javascript error.

Going back to the strace output I can see this error here:

2638  writev(6, [{"\2036\n\0\326\2\0\0\326\2\0\0\0\0\0\0o\0\0\0\3\0\1\0\1\0\1\0\1\0\0\0\f\0\0\0\36\0\0\0", 40}, {NULL, 0}, {"", 0}], 3) = 40
2638  poll([{fd=6, events=POLLIN}], 1, 4294967295)              = 1 ([{fd=6, revents=POLLIN}])
2638  recvfrom(6, "\0016\213\6\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\0", 4096, 0, NULL, NULL) = 32
2638  recvfrom(6, 0x13c1e64, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
2638  recvfrom(6, 0x13c1e64, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
2638  recvfrom(6, 0x13c1e64, 4096, 0, 0, 0) = -1 EAGAIN (Resource temporarily unavailable)
2638  poll([{fd=5, events=POLLIN}, {fd=3, events=POLLIN}, {fd=6, events=POLLIN}, {fd=13, events=POLLIN}, {fd=11, events=POLLIN}], 5, 0) = 0 (Timeout)
2638  fstat(2, {st_mode=S_IFREG|0644, st_size=12814, ...}) = 0
2638  lseek(2, 12814, SEEK_SET)         = 12814
2638  write(2, "      JS LOG: Permission denied", 31) = 31
2638  write(2, "\n", 1)

(The log message is slightly different because I tried to add a 
try/catch around the error in fileUtils.js but I obviously did it in the 
wrong place).

The closest EACCES in the strace log is (vastly simplified - I hate 
looking at strace for threaded code):

2680  lstat("/usr/share/gdm/greeter/gnome-shell/modes", 0x7faa75efe990) = -1 ENOENT (No such file or directory)
2681  lstat("/usr/local/share/gnome-shell/modes", 0x7faa756fd990) = -1 EACCES (Permission denied)
2681  openat(AT_FDCWD, "/usr/local/share/gnome-shell/modes", O_RDONLY|O_NONBLOCK|O_DIRECTORY|O_CLOEXEC) = -1 EACCES (Permission denied)

And the corresponding output in a session that works just has the two 
lstats, returning ENOENT and not the openat, so someone thinks the 
directory /usr/local/share/gnome-shell/modes exists because it didn't 
get an ENOENT when it did an lstat on it, tries to open it and gets all 
bent out of shape when the open doesn't work.

But where?










:



More information about the pkg-gnome-maintainers mailing list