[Pkg-chromium-maint] Bug#848930: kills fellow process if window doesn't have focus

Antoine Beaupré anarcat at debian.org
Tue Dec 20 21:44:44 UTC 2016

Package: chromium
Version: 55.0.2883.75-1~deb8u1
Severity: normal

I am using the Xmonad window manager. I have my browser in workspace
N. When I am in workspace N+1 and I run "chromium http://example.com",
it takes about 20-30 seconds, then it *kills* the browser in workspace
N and starts a *new* one in workspace N+1.

Here's how the browser is started in workspace N:

$ chromium -g
# Env:
#                PATH=/home/anarcat/bin:/home/anarcat/bin:/usr/local/bin:/usr/bin:/bin:/usr/local/games:/usr/games:/usr/local/sbin:/usr/sbin:/sbin:/usr/local/sbin:/usr/sbin:/sbin
#            GTK_PATH=
/usr/bin/gdb /usr/lib/chromium/chromium -x /tmp/chromiumargs.UxIxak
(gdb) run
Starting program: /usr/lib/chromium/chromium 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffeb2aa700 (LWP 14507)]
[14901:14901:1220/161528:ERROR:sandbox_linux.cc(343)] InitializeSandbox() called with multiple threads in process gpu-process. 

Then, in workspace N+1:

$ chromium -g http://example.com/
(gdb) run
Starting program: /usr/lib/chromium/chromium http://example.com/
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
[New Thread 0x7fffeb2aa700 (LWP 14863)]
[New Thread 0x7fffeaaa9700 (LWP 14868)]
[[...]:ERROR:sandbox_linux.cc(343)] InitializeSandbox() called with multiple threads in process gpu-process. 
[...waits approximately 20 seconds...]

Then in workspace N+1:

Thread [...] (LWP [...]) exited
Program terminated with signal SIGKILL, Killed.
The program no longer exists.
(gdb) [89:89:0100/000000:ERROR:broker_posix.cc(41)] Invalid node channel message

If I switch to the N+1 workspace *before* the 20 seconds timeout, the
URL loads without problems. It looks like the message doesn't get sent
or received untill the window is in focus again.

There seems to be a surprisingly large number of places where chromium
kills stuff with such a SIGKILL, so it's hard to track down exactly
wtf is going on here:

chromium-browser-55.0.2883.75$ grep -r 'kill.*SIGKILL' | wc -l 

But I suspect the problem is likely in the "singleton" handling
(chrome/browser/process_singleton_posix.cc) where there is logic to
send a message to an existing process and kill it (with SIGKILL) if it
doesn't answer within a specific timeout (20 attempts in 20 seconds,
coincidentally enough).

I have read parts of the code in that file and everything seems
normal. There's nothing about focus or activity in there. It looks
like the process that is not focused is just suspended and doesn't
answer requests. Here's an strace of workspace N+1:

readlink("/home/anarcat/.config/chromium/SingletonSocket", "/tmp/.org.chromium.Chromium.J1pI"..., 4096) = 50
readlink("/home/anarcat/.config/chromium/SingletonCookie", "11631173611837275778", 4096) = 20
readlink("/tmp/.org.chromium.Chromium.J1pIRs/SingletonCookie", "11631173611837275778", 4096) = 20
connect(47, {sa_family=AF_LOCAL, sun_path="/tmp/.org.chromium.Chromium.J1pIRs/SingletonSocket"}, 110) = 0
readlink("/tmp/.org.chromium.Chromium.J1pIRs/SingletonCookie", "11631173611837275778", 4096) = 20
setsockopt(47, SOL_SOCKET, SO_SNDTIMEO, "\24\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0", 16) = 0
getcwd("/home/anarcat", 4096)           = 14
write(47, "START\0/home/anarcat\0/usr/lib/chr"..., 107) = 107
shutdown(47, SHUT_WR)                   = 0
select(48, [47], NULL, NULL, {20, 0}[21172:21195:1220/164251:ERROR:nss_util.cc(809)] After loading Root Certs, loaded==false: NSS error code: -8018
[21211:21211:1220/164251:ERROR:sandbox_linux.cc(343)] InitializeSandbox() called with multiple threads in process gpu-process. 
)   = 0 (Timeout)
readlink("/home/anarcat/.config/chromium/SingletonLock", "angela-19326", 4096) = 12
uname({sys="Linux", node="angela", ...}) = 0
unlink("/home/anarcat/.config/chromium/SingletonLock") = 0
open("/proc/19326/stat", O_RDONLY)      = 61
fstat(61, {st_mode=S_IFREG|0444, st_size=0, ...}) = 0
mmap(NULL, 4096, PROT_READ|PROT_WRITE, MAP_PRIVATE|MAP_ANONYMOUS, -1, 0) = 0x7f29f7ea8000
read(61, "19326 (chromium) S 19289 5141 51"..., 65536) = 360
read(61, "", 64512)                     = 0
read(61, "", 65536)                     = 0
close(61)                               = 0
munmap(0x7f29f7ea8000, 4096)            = 0
madvise(0x14807f7d000, 921600, MADV_DONTNEED) = 0
readlink("/proc/19289/exe", "/bin/dash", 4096) = 9
kill(19326, SIGKILL)                    = 0
close(47)                               = 0

ie. the socket exists and can be written to, but nothing answers on
the other end.

I checked the ~/.config/chromium/Singleton* files and they seem
alright: the process IDs match, and the socket points to the /tmp
directory in use by the chromium process. They all get cleaned up
properly when chrome stops and are re-created properly when it starts.

I *feel* this has started happening in the recent 53->55 upgrade,
which happened here on the 14th, but I can't be sure of that

Any advice would be greatly appreciated, as this bug is annoying as
hell. :)


-- System Information:
Debian Release: 8.6
  APT prefers stable-updates
  APT policy: (500, 'stable-updates'), (500, 'proposed-updates'), (500, 'stable'), (1, 'testing')
Architecture: amd64 (x86_64)

Kernel: Linux 4.7.0-0.bpo.1-amd64 (SMP w/2 CPU cores)
Locale: LANG=fr_CA.UTF-8, LC_CTYPE=fr_CA.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)

Versions of packages chromium depends on:
ii  libasound2           1.0.28-1
ii  libatk1.0-0          2.14.0-1
ii  libc6                2.19-18+deb8u7
ii  libcairo2            1.14.0-2.1+deb8u1
ii  libcups2             1.7.5-11+deb8u1
ii  libdbus-1-3          1.8.22-0+deb8u1
ii  libexpat1            2.1.0-6+deb8u3
ii  libfontconfig1       2.11.0-6.3+deb8u1
ii  libfreetype6         2.5.2-3+deb8u1
ii  libgcc1              1:4.9.2-10
ii  libgdk-pixbuf2.0-0   2.31.1-2+deb8u5
ii  libglib2.0-0         2.42.1-1+b1
ii  libgtk2.0-0          2.24.25-3+deb8u1
ii  libjpeg62-turbo      1:1.3.1-12
ii  libnspr4             2:4.12-1+debu8u1
ii  libnss3              2:3.26-1+debu8u1
ii  libpango-1.0-0       1.36.8-3
ii  libpangocairo-1.0-0  1.36.8-3
ii  libpng12-0           1.2.50-2+deb8u2
ii  libstdc++6           4.9.2-10
ii  libwebp5             0.4.1-1.2+b2
ii  libwebpdemux1        0.4.1-1.2+b2
ii  libx11-6             2:1.6.2-3
ii  libx11-xcb1          2:1.6.2-3
ii  libxcb1              1.10-3+b1
ii  libxcomposite1       1:0.4.4-1
ii  libxcursor1          1:1.1.14-1+b1
ii  libxdamage1          1:1.1.4-2+b1
ii  libxext6             2:1.3.3-1
ii  libxfixes3           1:5.0.1-2+b2
ii  libxi6               2:1.7.4-1+b2
ii  libxml2              2.9.1+dfsg1-5+deb8u3
ii  libxrandr2           2:1.4.2-1+b1
ii  libxrender1          1:0.9.8-1+b1
ii  libxslt1.1           1.1.28-2+deb8u2
ii  libxss1              1:1.2.2-1
ii  libxtst6             2:1.2.2-1+b1
ii  x11-utils            7.7+2
ii  xdg-utils            1.1.0~rc1+git20111210-7.4

chromium recommends no packages.

Versions of packages chromium suggests:
ii  chromium-inspector  55.0.2883.75-1~deb8u1
ii  chromium-l10n       55.0.2883.75-1~deb8u1

-- no debconf information

More information about the Pkg-chromium-maint mailing list