Bug 1833831 Comment 0 Edit History

Note: The actual edited comment in the bug view page will always show the original commenter’s name and original timestamp.

So there's a first problem, which is we do this for every single langpack:

```
[task 2023-05-17T13:04:09.772Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\langpack-xh@firefox.mozilla.org before opening first browser window - 
[task 2023-05-17T13:04:09.772Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   get nsIFile.lastModifiedTime
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   getModTime (resource://gre/modules/addons/XPIProvider.jsm:591:12)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   addFile (resource://gre/modules/addons/XPIProvider.jsm:824:9)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   scanForChanges (resource://gre/modules/addons/XPIProvider.jsm:1438:16)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   XREMain::XRE_main
```

That's not good but at least, on our very-fast-disk infra machines, it's not very slow, "only" 20 or so ms. It's probably a bunch slower on spinny disk user machines, but I don't have data for that right now.

The second bit is worse, however, we do [this](https://share.firefox.dev/3BCNf6P) which takes about 300ms on the same very-fast-disk machines:

```
[task 2023-05-17T13:04:09.810Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\langpack-ach@firefox.mozilla.org before opening first browser window - 
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   nsLocalFile::ResolveAndStat
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   nsIFile.moveTo
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   _installFile (resource://gre/modules/addons/XPIInstall.jsm:1106:14)
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   moveUnder (resource://gre/modules/addons/XPIInstall.jsm:1145:11)
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   uninstallAddon (resource://gre/modules/addons/XPIInstall.jsm:3383:16)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   addMetadata (resource://gre/modules/addons/XPIDatabase.jsm:3062:13)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   processFileChanges (resource://gre/modules/addons/XPIDatabase.jsm:3504:20)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   XREMain::XRE_main
[task 2023-05-17T13:04:09.813Z] 13:04:09     INFO - (PoisonIOInterposer) stat - C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\langpack-ach@firefox.mozilla.org
[task 2023-05-17T13:04:09.813Z] 13:04:09     INFO - Not taking screenshot here: see the one that was previously logged
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\trash before opening first browser window - 
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO -   nsLocalFile::ResolveAndStat
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   nsIFile.moveTo
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   _installFile (resource://gre/modules/addons/XPIInstall.jsm:1106:14)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   moveUnder (resource://gre/modules/addons/XPIInstall.jsm:1145:11)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   uninstallAddon (resource://gre/modules/addons/XPIInstall.jsm:3383:16)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   addMetadata (resource://gre/modules/addons/XPIDatabase.jsm:3062:13)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   processFileChanges (resource://gre/modules/addons/XPIDatabase.jsm:3504:20)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   XREMain::XRE_main
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO - (PoisonIOInterposer) stat - C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\trash
[task 2023-05-17T13:04:09.817Z] 13:04:09     INFO - Not taking screenshot here: see the one that was previously logged
[task 2023-05-17T13:04:09.818Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\trash before opening first browser window - 
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   set nsIFile.permissions
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   setFilePermissions (resource://gre/modules/addons/XPIInstall.jsm:1046:27)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   recursiveRemove (resource://gre/modules/addons/XPIInstall.jsm:992:24)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   uninstallAddon (resource://gre/modules/addons/XPIInstall.jsm:3383:16)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   addMetadata (resource://gre/modules/addons/XPIDatabase.jsm:3062:13)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   processFileChanges (resource://gre/modules/addons/XPIDatabase.jsm:3504:20)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   XREMain::XRE_main
```

So we try to move the add-on file to `trash` (after, btw, [checking if trash exists, if so recursively removing it and all its contents, and then recreating it, all also on the main thread](https://searchfox.org/mozilla-central/rev/2ca95198a2a0806de358a0484d96d4354e3cbaab/toolkit/mozapps/extensions/internal/XPIInstall.jsm#3271-3289)), which involves another stat call on the add-on dir, plus 2 of them on the `trash` dir, and presumably the actual IO of moving the file (not captured by the profiler or test).

I don't know exactly how msix stuff works so I have a lot of questions like:

- why do we need to check the LM time of all these add-ons
- why are we uninstalling all these add-ons
- does that even work, ie does the user running Firefox normally have permissions to mess with the app dir, where these langpacks live?
- what's up with the "trash" dir - do we really need to empty it, synchronously on the main thread? Could we not just pick a unique name and create a separate one for the lifetime of the process, and queue an async off-mainthread idle priority task to clean up the old stuff?

I'm hoping Ben or Luca know some of the background here. :-)
So there's a first problem, which is we do this for every single langpack:

```
[task 2023-05-17T13:04:09.772Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\langpack-xh@firefox.mozilla.org before opening first browser window - 
[task 2023-05-17T13:04:09.772Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   get nsIFile.lastModifiedTime
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   getModTime (resource://gre/modules/addons/XPIProvider.jsm:591:12)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   addFile (resource://gre/modules/addons/XPIProvider.jsm:824:9)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   scanForChanges (resource://gre/modules/addons/XPIProvider.jsm:1438:16)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.774Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.775Z] 13:04:09     INFO -   XREMain::XRE_main
```

That's not good but at least, on our very-fast-disk infra machines, it's not very slow, ["only" 20 or so ms](https://share.firefox.dev/3pMf0Hj). It's probably a bunch slower on spinny disk user machines, but I don't have data for that right now.

The second bit is worse, however, we do [this](https://share.firefox.dev/3BCNf6P) which takes about 300ms on the same very-fast-disk machines:

```
[task 2023-05-17T13:04:09.810Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\langpack-ach@firefox.mozilla.org before opening first browser window - 
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   nsLocalFile::ResolveAndStat
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   nsIFile.moveTo
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   _installFile (resource://gre/modules/addons/XPIInstall.jsm:1106:14)
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   moveUnder (resource://gre/modules/addons/XPIInstall.jsm:1145:11)
[task 2023-05-17T13:04:09.811Z] 13:04:09     INFO -   uninstallAddon (resource://gre/modules/addons/XPIInstall.jsm:3383:16)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   addMetadata (resource://gre/modules/addons/XPIDatabase.jsm:3062:13)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   processFileChanges (resource://gre/modules/addons/XPIDatabase.jsm:3504:20)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.812Z] 13:04:09     INFO -   XREMain::XRE_main
[task 2023-05-17T13:04:09.813Z] 13:04:09     INFO - (PoisonIOInterposer) stat - C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\langpack-ach@firefox.mozilla.org
[task 2023-05-17T13:04:09.813Z] 13:04:09     INFO - Not taking screenshot here: see the one that was previously logged
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\trash before opening first browser window - 
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.814Z] 13:04:09     INFO -   nsLocalFile::ResolveAndStat
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   nsIFile.moveTo
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   _installFile (resource://gre/modules/addons/XPIInstall.jsm:1106:14)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   moveUnder (resource://gre/modules/addons/XPIInstall.jsm:1145:11)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   uninstallAddon (resource://gre/modules/addons/XPIInstall.jsm:3383:16)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   addMetadata (resource://gre/modules/addons/XPIDatabase.jsm:3062:13)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   processFileChanges (resource://gre/modules/addons/XPIDatabase.jsm:3504:20)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.815Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO -   XREMain::XRE_main
[task 2023-05-17T13:04:09.816Z] 13:04:09     INFO - (PoisonIOInterposer) stat - C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\trash
[task 2023-05-17T13:04:09.817Z] 13:04:09     INFO - Not taking screenshot here: see the one that was previously logged
[task 2023-05-17T13:04:09.818Z] 13:04:09     INFO - TEST-UNEXPECTED-FAIL | browser/base/content/test/performance/browser_startup_mainthreadio.js | unexpected stat on C:\Users\task_168432394098143\AppData\Local\Temp\tmpyvbcg1x8.mozrunner\extensions\trash before opening first browser window - 
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO - Stack trace:
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   0x7ffcad362450
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   set nsIFile.permissions
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   setFilePermissions (resource://gre/modules/addons/XPIInstall.jsm:1046:27)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   recursiveRemove (resource://gre/modules/addons/XPIInstall.jsm:992:24)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   uninstallAddon (resource://gre/modules/addons/XPIInstall.jsm:3383:16)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   addMetadata (resource://gre/modules/addons/XPIDatabase.jsm:3062:13)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   processFileChanges (resource://gre/modules/addons/XPIDatabase.jsm:3504:20)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   checkForChanges (resource://gre/modules/addons/XPIProvider.jsm:3043:17)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   startup (resource://gre/modules/addons/XPIProvider.jsm:2496:9)
[task 2023-05-17T13:04:09.819Z] 13:04:09     INFO -   callProvider (resource://gre/modules/AddonManager.jsm:240:21)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   _startProvider (resource://gre/modules/AddonManager.jsm:545:16)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:609:9)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   startup (resource://gre/modules/AddonManager.jsm:3665:9)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   observe (resource://gre/modules/addonManager.js:72:9)
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   XPCWrappedJS method call
[task 2023-05-17T13:04:09.820Z] 13:04:09     INFO -   XREMain::XRE_main
```

So we try to move the add-on file to `trash` (after, btw, [checking if trash exists, if so recursively removing it and all its contents, and then recreating it, all also on the main thread](https://searchfox.org/mozilla-central/rev/2ca95198a2a0806de358a0484d96d4354e3cbaab/toolkit/mozapps/extensions/internal/XPIInstall.jsm#3271-3289)), which involves another stat call on the add-on dir, plus 2 of them on the `trash` dir, and presumably the actual IO of moving the file (not captured by the profiler or test).

I don't know exactly how msix stuff works so I have a lot of questions like:

- why do we need to check the LM time of all these add-ons
- why are we uninstalling all these add-ons
- does that even work, ie does the user running Firefox normally have permissions to mess with the app dir, where these langpacks live?
- what's up with the "trash" dir - do we really need to empty it, synchronously on the main thread? Could we not just pick a unique name and create a separate one for the lifetime of the process, and queue an async off-mainthread idle priority task to clean up the old stuff?

I'm hoping Ben or Luca know some of the background here. :-)

Back to Bug 1833831 Comment 0