systemd versus chrome: fight!
Over the years many technologies have taken a 'kitchen-sink' strategy, pulling in all adjacencies until they are the world. Java tried to become an operating system. Windows moved the graphics drivers into the kernel. The smartphone.
In the desktop space, I present two contenders. My perennial favourite, systemd. It has subsumed grub and will soon graduate from pid-1 to OS is my prediction. But, what about chrome? You know that thing with the billions of open tabs you have?
Well, I tried out a new tool, pscircle. Its pretty cool, it allows you to visualise what is running on your desktop. Lets take a look when mine is kind of idle (no VM's running, no builds running). Cuz 'top' is for squares 🙂
But, as we can see, chrome is given systemd a run for its money. So many 'nacl_helpers' and 'chrome' and 'cat' (why does chrome run cat?)
OK, and on the general principle of 'chrome shouldn't run shell tools', I 'killed the cats' (no actual cats were harmed in this experiment).
don 16461 16456 0 Jun28 ? 00:00:00 [cat] <defunct> don 16462 16456 0 Jun28 ? 00:00:00 [cat] <defunct> don 23691 23686 0 Jun30 ? 00:00:00 [cat] <defunct> don 23692 23686 0 Jun30 ? 00:00:00 [cat] <defunct>
Poor form chrome, you don't even reap your dead children? (by calling wait(2)). This is how you get zombies.
Anyone else want to try pscircle and see if it gives them some insights?
Anyone have any input on what would cause chrome to call cat? strace doesn't show it waking up.
lsof shows the mystery file:
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME cat 27856 don 0r FIFO 0,12 0t0 306400482 pipe cat 27856 don 1w REG 253,3 5369084 9962684 /home/don/.xsession-errors cat 27856 don 2w REG 253,3 5369084 9962684 /home/don/.xsession-errors
so if I can find node '306400482'. Hmm, it seems like its a bunch of output items from chrome and its various sub-processes, all sent to one pipe, and then cat dumps them into .xsession-errors, where stuff like:
[27890:27890:0702/221815.494260:ERROR:sandbox_linux.cc(378)] InitializeSandbox() called with multiple threads in process gpu-process.