Firefox: problematic extensions, slow closing, extensions data loss

For (at least) several months, the first start-up of Firefox after a Linux logout gives me a session-restore page, indicating that it did not stopped properly. It also causes data loss in some add-ons. After some investigation, it turned out the causes were the following:

  • Some add-ons made closing Firefox very slow (about 1 minute!): there is a conflict between « Privacy Badger » et « Self Destructing Cookies« , and also « Tab Memory Usage » by itself is a problem.
  • When closing the Linux session, the session managers of the desktop environments (KDE, XFCE, Unity) gives the programs some time to shutdown properly (7-15 seconds I think). In my case, Firefox was killed every single time. This timeout not being configurable (without modifying the code et recompiling), the only solutions were either make the closing faster or manually closing Firefox before disconnecting. I find the way Windows handles it better: after the timeout, it asks the user if he wants to kill the remaining programs.
    Now that I disabled « Self Destructing Cookies » and « Tab Memory Usage », it takes a bit less that 10s for Firefox to stop, which it still not enough for it to close properly 100% of the time.
  • The add-ons using the « Simple storage » API (like MyKanji) save their data on the disk when the browser stops (even if the data was not modified recently!), and the data may be lost if the browser is killed at this moment.


  • It may be one of the reasons why Mozilla wants to normalize the add-ons API (in addition to the security and the multi-process browser). Investigating the conflicting add-ons can be time-consuming, and a majority of users may think that Firefox itself is slow. Once I disabled the offending add-ons, my browser had a second youth.
  • Hard-coded time-outs (also known as « magic numbers ») are bad. It’s better to have a default value and a configurable setting (even if not documented).

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *