Monthly Archives: December 2018

179: CRA and cgroups

Crazy Rich Asians

Sis rented the film two nights ago and we watched as a family. It was better than I expected. I was mostly concerned that the milestone of Asian representation in a large-scale Hollywood production was overshadowing all the other good points in the film. Everyone I’ve spoken to mostly has technical nitpicks with the film (e.g. Ah-ma‘s distinctly mainland-esque accent – is this really a problem though?) and the strange anti-spread of “diversity” in the Singapore depicted onscreen.

I for one enjoyed the film enormously. I appreciate no-frills romances, even when no gimmicks are involved. Dress up a story appropriately and you’ll win me over just like that.

I do nag myself a little about on what terms did I appreciate CRA? I was raised on a modest amount of Mahjong, so I understood full well the significance of the Mahjong parlor sequence and felt all the more moved for it. Would a non-Asian audience, less exposed to Mahjong, take it the same way? I wager most would walk away (justifiably) confused, only inferring from context what transpired.

Actually, I confess here to being an inadequate Mahjong player – I didn’t read Rachel’s hand quickly enough to positively affirm what she had done. But from the context I thought her point was clear.

This is all a distraction – the film makes sense to and resonates emotionally with me. I walked away with satisfaction that I had fully grasped the story being told.

Firefox cgroups annoyance

On occasion, Firefox will eat all my memory. This does some awful things to the system at large and takes a while to recover. Eventually I relegated it to its own memory hierarchy out of annoyance; my launcher aliases have all been prefixed with cgexec. Now, Firefox is only allowed to chew through 8 GB of memory (ha!).

Firefox presently uses several different processes to perform different purposes (or so I deduce from their names):

[j39m@SERN ~/Downloads]
$ pstree -aTp 8346
firefox,8346 -P default-1473025815439
├─Web Content,8444 -contentproc -childID 1 -isForBrowser -prefsLen 1 -prefMapSize 203416 -schedulerPrefs 0001,2 -parentBuildID 20181121183716 -greomni/usr/lib64
├─Web Content,8529 -contentproc -childID 2 -isForBrowser -prefsLen 79 -prefMapSize 203416 -schedulerPrefs 0001,2 -parentBuildID 20181121183716 -greomni/usr/lib6
├─Web Content,8540 -contentproc -childID 3 -isForBrowser -prefsLen 79 -prefMapSize 203416 -schedulerPrefs 0001,2 -parentBuildID 20181121183716 -greomni/usr/lib6
├─Web Content,8863 -contentproc -childID 6 -isForBrowser -prefsLen 4920 -prefMapSize 203416 -schedulerPrefs 0001,2 -parentBuildID 20181121183716 -greomni/usr/li
├─WebExtensions,2894 -contentproc -childID 17 -isForBrowser -prefsLen 7076 -prefMapSize 203416 -schedulerPrefs 0001,2 -parentBuildID 20181121183716 -greomni/usr/l
└─plugin-containe,8928 /home/kalvin/.mozilla/firefox/pgxfzusi.default-1473025815439/gmp-widevinecdm/ -greomni /usr/lib64/firefox/omni.ja -appomni

This past week, something started leaking memory while I was browsing Google Maps. I noticed the system slowly dramatically before the OOM-killer kicked in and decided to kill the WebExtensions process.

The immediate aftermath is not visible: since none of your content rendering processes are killed, you might not even notice anything wrong. I have 3 addons of consequence: NoScript, HTTPS Everywhere, and Vimium. Vimium mostly ceased to work (visibly so) and would not work until I had opened and closed a few tabs here and there. (I don’t know the exact mapping from tab to content process to WebExtensions process – but things were messed up).

The more exciting fallout was when I opened a Bloomberg article and was suddenly treated to an irksome auto-playing ad. I smacked the Alt+M and opened the NoScript menu with annoyance. It drew a blank – that was when I noticed the toolbar icon was superimposed with a question mark, indicating a non-functional NoScript.

So far, no sequence of opening new / closing old tabs has recovered this. The next step is to restart Firefox to see if that fixes things. While I hesitate to prognosticate, it follows that any reliance on your addons for security must always be tempered with some understanding that the architecture is not perfect.

I hesitate to prognosticate – so I will refrain – but I believe this reproducible by

  1. Opening Firefox,
  2. Finding the content process with pstree (not sure why pgrep is showing a different cmdline),
  3. Killing it with your favorite signal (SIGKILL to simulate OOM-killer?), and
  4. Checking if NoScript dies.