I'd finally like to stop playing this whack-a-mole game and come to a better solution. Meanwhile, we can stop enabling XSS protection given that those experiences seriously risk users abandoning Tor Browser, claiming it is broken, and moving on to a much worse solution for their privacy requirements.
To upload designs, you'll need to enable LFS and have an admin enable hashed storage. More information
Child items ...
Show closed items
Linked items 0
Link issues together to show that they're related.
Learn more.
I doubt it's the same defect, or even similar, as the implementation of the filter has radically changed with WebExtensions, and now it runs asynchronously in its own process and shouldn't be able to block the browser, let alone the whole computer.
Could you please provide me steps to reproduce reliably?
Is it Tor Browser specific or does it affect Firefox too.
Might it be related to the pseudo-modal warning dialog (which must go away anyway anyway, with the UI redesign), rather than the filter itself?
Thanks.
NVM, I managed to reproduce. It freezes the browser for a few seconds on 8.5 (where browser.webextensions.remote is false) while the firefox.real process gets 100% CPU.
What's more annoying, it appears to affect more than just the browser on my Ubuntu box if I turn extensions.webextensions.remote to true, which is counterintuitive (the extension should be doing its thing in its own process while the facebook HTTP subrequest is suspended) but might be due to some kind of IPC bug: this time nothing really freezes, but again for a few seconds other application become sluggish as well while a WebExtensions process takes 100% CPU.
Do Tor Browser 9.0 have extensions.webextensions.remote set to false or true?
Either way, since it's already executed asyncronously, I wanna try breaking the main InjectionChecker loop into time-capped chunks (e.g. 100ms max) which would relinquish the CPU back periodically while checking very costly payloads like this, and possibly (but it might not be necessary) move the whole in a dedicated worker.
No, the info was not there. However I've installed 9.0a1, and extensions.webextensions.remote is still false like in 8.5.
The proposed fix should work either way, though.
The proposed fix should work either way, though.
Did you test that in TB?
No I couldn't, I'm sorry: I was paralyzed in awe of the grace and the usefulness of your comments.
Not nearly as useful, and maybe exceedingly mundane, but would you by chance have also any patch (or idea for a fix) to contribute?
Thanks.
This should prevent any freeze, even on the heaviest payload.
Tested on 8.5 and 9.0a1.
Not for me. While I can't reproduce on https://zeit.de anymore https://www.sravni.ru/kredity/na-1000000-rublej/ still freezes my browser (or makes it extremely sluggish) with 10.6.3rc3 (that's 9.0a1). Disabling NoScript's XSS feature gets back a smooth experience.
. While I can't reproduce on https://zeit.de anymore https://www.sravni.ru/kredity/na-1000000-rublej/ still freezes my browser (or makes it extremely sluggish) with 10.6.3rc3 (that's 9.0a1). Disabling NoScript's XSS feature gets back a smooth experience.
Sadly, it looks like my first asynchronous work around attempt is not doing as good as it could, because apparently the resistFingerprinting clamping of Date.now() affects not just web content but WebExtensions too, causing the CPU to be relinquished every 100ms (which is the artificially imposed resolution), rather than 10ms as intended, therefore making long-running checks 10 times more sluggish than they should :(
. While I can't reproduce on https://zeit.de anymore https://www.sravni.ru/kredity/na-1000000-rublej/ still freezes my browser (or makes it extremely sluggish) with 10.6.3rc3 (that's 9.0a1). Disabling NoScript's XSS feature gets back a smooth experience.
Sadly, it looks like my first asynchronous work around attempt is not doing as good as it could, because apparently the resistFingerprinting clamping of Date.now() affects not just web content but WebExtensions too,
Sadly, it looks like my first asynchronous work around attempt is not doing as good as it could, because apparently the resistFingerprinting clamping of Date.now() affects not just web content but WebExtensions too, causing the CPU to be relinquished every 100ms (which is the artificially imposed resolution), rather than 10ms as intended, therefore making long-running checks 10 times more sluggish than they should :(
@gk: You should probably raise this with Mozilla, WebExt have now their own process in moz-central so it should theoretically be easy to let resistFingerprinting conquer almost everything except the WebExt process.
Thanks, fixed in tor-browser-build with commit 07961f94a1d956c33c1d0448b6e5f69df6b03ea4 (on master) and 26a5d9739b7e0d30f03da46b316ac15546e79eef (on maint-8.5).
Trac: Resolution: N/Ato fixed Status: new to closed