On Thu, 11 Nov 2021 23:06:44 +1100 =?UTF-8?B?4oCN5bCP5aSq?=
<nos...@kota.moe> wrote:
> So either the change needs to be backported to v94, or we'll just have to wait
> until v95 (or compile the browser ourselves)

I was a bit adventurous and tried doing a binary patch on the current debian
version (94.0-1), and got it working.

If you open /usr/lib/firefox/libxul.so in a hex editor and go to file offset
0x46a4703, you can perform a find and replace with the below hex strings:
find:    498B5C2408904889DFFF157FBD9703EBF5
replace: 4D8B6C2408904C89EFFF157FBD9703EBDA

This effectively performs the following changes to the binary:

--- libxul.so.S.before    2021-11-12 03:15:52.985702747 +1100
+++ libxul.so.S.after    2021-11-12 04:13:27.364102267 +1100
@@ -18661992,15 +18661992,15 @@
  4e956f2:    41 ff d5                 call   *%r13
  4e956f5:    48 8d 0d cc 87 96 03     lea    0x39687cc(%rip),%rcx
   # 87fdec8 
<_ZZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEclEcE5__nul@@xul94+0xaed18>
  4e956fc:    48 8d 15 cd 87 96 03     lea    0x39687cd(%rip),%rdx
   # 87fded0 
<_ZZNKSt8__detail11_AnyMatcherINSt7__cxx1112regex_traitsIcEELb0ELb0ELb0EEclEcE5__nul@@xul94+0xaed20>
  4e95703:    48 83 7b 40 00           cmpq   $0x0,0x40(%rbx)
  4e95708:    74 11                    je     4e9571b
<atp_promote_thread_to_real_time@@xul94+0xd18bb>
- 4e9570a:    49 8b 5c 24 08           mov    0x8(%r12),%rbx
+ 4e9570a:    4d 8b 6c 24 08           mov    0x8(%r12),%r13
  4e9570f:    90                       nop
- 4e95710:    48 89 df                 mov    %rbx,%rdi
+ 4e95710:    4c 89 ef                 mov    %r13,%rdi
  4e95713:    ff 15 7f bd 97 03        call   *0x397bd7f(%rip)
# 8811498 <nspr_use_zone_allocator@@xul94+0x5258>
- 4e95719:    eb f5                    jmp    4e95710
<atp_promote_thread_to_real_time@@xul94+0xd18b0>
+ 4e95719:    eb da                    jmp    4e956f5
<atp_promote_thread_to_real_time@@xul94+0xd1895>
  4e9571b:    8b 02                    mov    (%rdx),%eax
  4e9571d:    83 c0 ff                 add    $0xffffffff,%eax
  4e95720:    83 f8 01                 cmp    $0x1,%eax
  4e95723:    0f 87 13 02 00 00        ja     4e9593c
<atp_promote_thread_to_real_time@@xul94+0xd1adc>
  4e95729:    4c 8b 29                 mov    (%rcx),%r13

This basically changes the binary such that it no longer infinite loops in the
PulseStream::stop() function, and actually checks self.drain_timer every loop as
it's supposed to

Reply via email to