Build failure with "-mfunction-return=thunk -mindirect-branch=thunk" flags due to elf hack: malloc(): corrupted top size

RESOLVED FIXED in Firefox 68

Status

defect
RESOLVED FIXED
a month ago
29 days ago

People

(Reporter: Arfrever.FTA, Assigned: froydnj)

Tracking

66 Branch
mozilla68

Firefox Tracking Flags

(firefox68 fixed)

Details

Attachments

(6 attachments)

User Agent: Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Falkon/3.0.99 Chrome/69.0.3497.128 Safari/537.36

Steps to reproduce:

Firefox failed to build due to elf hack.
Problem reproduced with Firefox 66.0.2, but earlier versions most likely also affected.

Build environment:
Gentoo GNU/Linux
x86_64 architecture
glibc 2.29
GCC 8.3.0
GNU Binutils 2.32
Rust 1.33.0
CFLAGS="-march=native -O2 -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Wpointer-sign"
CXXFLAGS="-march=native -O2 -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Werror=terminate"
LDFLAGS="-Wl,-O1 -Wl,--as-needed -Wl,--defsym=gentoo_check_ldflags=0 -Wl,--gc-sections -Wl,--sort-common -Wl,-z,now"

Actual results:

522:48.11 gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.11 /usr/bin/x86_64-pc-linux-gnu-g++ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++1z-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=multistatement-macros -Wno-error=class-memaccess -Wformat -Wformat-security -Wformat-overflow=2 -fno-sized-deallocation -march=native -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Werror=terminate -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns -fno-schedule-insns2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-math-errno -pthread -pipe -fexceptions -freorder-blocks -O2 -fomit-frame-pointer -funwind-tables -fPIC -shared -Wl,-z,defs -Wl,--gc-sections -Wl,-h,test-ctors.so -o test-ctors.so -lpthread -Wl,-O1 -Wl,--as-needed -Wl,--defsym=gentoo_check_ldflags=0 -Wl,--gc-sections -Wl,--sort-common -Wl,-z,now -Wl,-rpath=/usr/lib64/firefox,--enable-new-dtags -Wl,--compress-debug-sections=zlib -fuse-ld=bfd -Wl,-z,noexecstack -Wl,-z,text -Wl,-z,relro -Wl,-z,nocopyreloc -Wl,-Bsymbolic-functions -Wl,-rpath-link,/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/dist/bin -Wl,-rpath-link,/usr/lib -fdiagnostics-color test-ctors.o -nostartfiles
522:48.12 ===
522:48.13 === If you get failures below, please file a bug describing the error
522:48.13 === and your environment (compiler and linker versions), and
522:48.13 === provide the pre-elfhacked library as an attachment.
522:48.13 === Use --disable-elf-hack until this is fixed.
522:48.16 ===
522:48.16 # Fail if the library doesn't have INIT .dynamic info
522:48.17 readelf -d test-ctors.so | grep '(INIT)'
522:48.17 0x000000000000000c (INIT) 0x5000
522:48.18 /var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack/elfhack -b -f test-ctors.so
522:48.18 test-ctors.so: malloc(): corrupted top size
522:48.18 gmake[4]: *** [Makefile:28: test-ctors.so] Aborted (core dumped)
522:48.18 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.18 gmake[4]: *** Waiting for unfinished jobs....
522:48.18 gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.19 /usr/bin/x86_64-pc-linux-gnu-g++ -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -Wall -Wempty-body -Wignored-qualifiers -Woverloaded-virtual -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wwrite-strings -Wno-invalid-offsetof -Wc++1z-compat -Wduplicated-cond -Wimplicit-fallthrough -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=multistatement-macros -Wno-error=class-memaccess -Wformat -Wformat-security -Wformat-overflow=2 -fno-sized-deallocation -march=native -fno-ident -frecord-gcc-switches -fstack-clash-protection -fstack-protector-all -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -pipe -Wall -Werror=terminate -fno-delete-null-pointer-checks -fno-lifetime-dse -fno-schedule-insns -fno-schedule-insns2 -U_FORTIFY_SOURCE -D_FORTIFY_SOURCE=2 -fstack-protector-strong -fno-strict-aliasing -fno-rtti -ffunction-sections -fdata-sections -fno-math-errno -pthread -pipe -fexceptions -freorder-blocks -O2 -fomit-frame-pointer -funwind-tables -fPIC -shared -Wl,-z,defs -Wl,--gc-sections -Wl,-h,test-array.so -o test-array.so -lpthread -Wl,-O1 -Wl,--as-needed -Wl,--defsym=gentoo_check_ldflags=0 -Wl,--gc-sections -Wl,--sort-common -Wl,-z,now -Wl,-rpath=/usr/lib64/firefox,--enable-new-dtags -Wl,--compress-debug-sections=zlib -fuse-ld=bfd -Wl,-z,noexecstack -Wl,-z,text -Wl,-z,relro -Wl,-z,nocopyreloc -Wl,-Bsymbolic-functions -Wl,-rpath-link,/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/dist/bin -Wl,-rpath-link,/usr/lib -fdiagnostics-color test-array.o -nostartfiles
522:48.19 ===
522:48.19 === If you get failures below, please file a bug describing the error
522:48.20 === and your environment (compiler and linker versions), and
522:48.20 === provide the pre-elfhacked library as an attachment.
522:48.20 === Use --disable-elf-hack until this is fixed.
522:48.20 ===
522:48.21 # Fail if the library doesn't have INIT_ARRAY .dynamic info
522:48.21 readelf -d test-array.so | grep '(INIT_ARRAY)'
522:48.21 0x0000000000000019 (INIT_ARRAY) 0x9de0
522:48.21 /var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack/elfhack -b -f test-array.so
522:48.22 test-array.so: malloc(): corrupted top size
522:48.22 gmake[4]: *** [Makefile:28: test-array.so] Aborted (core dumped)
522:48.22 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/ff/build/unix/elfhack'
522:48.23 gmake[3]: *** [/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/config/recurse.mk:101: build/unix/elfhack/libs] Error 2
522:48.23 gmake[2]: *** [/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/config/recurse.mk:34: libs] Error 2
522:48.23 gmake[1]: *** [/var/tmp/portage/www-client/firefox-66.0.2/work/firefox-66.0.2/config/rules.mk:415: default] Error 2
522:48.93 gmake: *** [client.mk:125: build] Error 2
522:51.67 10 compiler warnings present.

(test-array.so and test-ctors.so are empty files.)

Component: Untriaged → General
Product: Firefox → Firefox Build System

Using of -mfunction-return=thunk -mindirect-branch=thunk flags in CFLAGS / CXXFLAGS is required to reproduce this bug.
These flags are used for mitigation of Spectre vulnerability (variant 2).

Summary of available flags for mitigation of Spectre vulnerability (variant 2):
GCC (firstly released in 8, later backported to 7.3, 6.5): -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register
Clang (>=7): -mretpoline

Summary: Build failure due to elf hack: malloc(): corrupted top size → Build failure with "-mfunction-return=thunk -mindirect-branch=thunk" flags due to elf hack: malloc(): corrupted top size
Assignee

Updated

a month ago
Status: UNCONFIRMED → NEW
Ever confirmed: true
OS: Unspecified → All
Hardware: Unspecified → All
Assignee

Comment 5

a month ago

I can elfhack the provided files with an elfhack built locally. Can you provide information on how elfhack gets built for you? (Compiler commands, linker commands, etc.)

Flags: needinfo?(Arfrever.FTA)

That part of Firefox build system ignores user-provided CFLAGS, CXXFLAGS and LDFLAGS:

gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
build/unix/elfhack/host_elfhack.o
/usr/bin/x86_64-pc-linux-gnu-g++ -o host_elfhack.o -c  -freorder-blocks -O2 -DNDEBUG=1 -DTRIMMED=1 -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/build/unix/elfhack -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/dist/include -MD -MP -MF .deps/host_elfhack.o.pp -I/usr/include/nspr /var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/build/unix/elfhack/elfhack.cpp
gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
build/unix/elfhack/elfhack
/usr/bin/x86_64-pc-linux-gnu-g++ -o elfhack -freorder-blocks -O2  host_elf.o host_elfhack.o
/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/_virtualenvs/init/bin/python -m mozbuild.action.check_binary --host elfhack
gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack'
Flags: needinfo?(Arfrever.FTA)
Posted file elfhack
Assignee

Comment 8

a month ago

We were allocating ElfSection's data with new[] and modifying it with
realloc in some places, which causes allocator mismatches.
Consistently manage the data with malloc, realloc, and free instead.

Assignee

Comment 9

a month ago

(In reply to Arfrever Frehtes Taifersar Arahesis from comment #6)

That part of Firefox build system ignores user-provided CFLAGS, CXXFLAGS and LDFLAGS:

Thanks for providing the information on compiling elfhack. Compiling elfhack is supposed to ignore those flags, since elfhack is a host binary, and we have separate HOST_CFLAGS, HOST_CXXFLAGS, etc. for host compilation.

I ran things with Valgrind, and it did point out some allocator mismatches, which I suppose could cause the errors seen, if gentoo is running with a hardened malloc of some kind. Can you apply the patch I posted and re-run the build? Thanks.

Flags: needinfo?(Arfrever.FTA)

I have tested this patch.
Unfortunately the same error (malloc(): corrupted top size) still occurs.

Flags: needinfo?(Arfrever.FTA)
Assignee

Comment 11

a month ago

(In reply to Arfrever Frehtes Taifersar Arahesis from comment #4)

Using of -mfunction-return=thunk -mindirect-branch=thunk flags in CFLAGS / CXXFLAGS is required to reproduce this bug.
These flags are used for mitigation of Spectre vulnerability (variant 2).

Can you confirm that not using these flags results in a successful build?

Flags: needinfo?(Arfrever.FTA)

I have been able to reproduce malloc(): corrupted top size error on two separate systems with similar configuration (the same version of GCC, glibc etc.).
In one of these systems, I tried building Firefox in multiple variants of flags, and not using -mfunction-return=thunk -mindirect-branch=thunk resulted in successful build. Specifically, error has been occurring when using both these flags, not only one of them.
It may be that there are other conditions required to reproduce this error.

Flags: needinfo?(Arfrever.FTA)

When analyzing more of build log and reading elfhack.cpp, I noticed that elfhack at run-time magically uses inject/x86_64.o.
The rule for building inject/x86_64.o actually respects user-provided CFLAGS and this is what actually matters.
Flags used for test-array.c -> test-array.o -> test-array.so and test-ctors.c -> test-ctors.o -> test-ctors.so seem to not matter for reproduction of this problem.

gmake[4]: Entering directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject'
build/unix/elfhack/inject/x86_64.o
/usr/bin/x86_64-pc-linux-gnu-gcc -std=gnu99 -o x86_64.o -c  -DNDEBUG=1 -DTRIMMED=1 -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/build/unix/elfhack/inject -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/dist/include -I/usr/include/nspr -I/usr/include/nss -I/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/dist/include/nss -I/usr/include/pixman-1 -fPIC -include /var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/mozilla-config.h -DMOZILLA_CLIENT -march=native -mfunction-return=thunk -mindirect-branch=thunk -mindirect-branch-register -O2 -fno-stack-protector -fno-lto -Wall -Wempty-body -Wignored-qualifiers -Wpointer-arith -Wsign-compare -Wtype-limits -Wunreachable-code -Wduplicated-cond -Wno-error=maybe-uninitialized -Wno-error=deprecated-declarations -Wno-error=array-bounds -Wno-error=free-nonheap-object -Wno-error=multistatement-macros -Wno-error=class-memaccess -Wformat -Wformat-security -Wformat-overflow=2  -MD -MP -MF .deps/x86_64.o.pp  -fdiagnostics-color  /var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject/x86_64.c
 1:11.62 gmake[4]: Leaving directory '/var/tmp/portage/www-client/firefox-66.0.3/work/firefox-66.0.3/ff/build/unix/elfhack/inject'

So you need to rebuild inject/x86_64.o with both -mfunction-return=thunk -mindirect-branch=thunk to reproduce problem.

Assignee

Comment 15

a month ago

Can you provide a copy of inject/x86_64.o built with such options?

Flags: needinfo?(Arfrever.FTA)

Comment 16

a month ago
Pushed by nfroyd@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/04eccd9f23a1
avoid malloc/delete[] mismatches in elfhack; r=glandium
Assignee

Updated

a month ago
Keywords: leave-open
Posted file inject/x86_64.o
Flags: needinfo?(Arfrever.FTA)
Assignee

Comment 19

a month ago

Ah, thanks for the inject file. valgrind now complains:

test-ctors.so.bak: ==16305== Invalid write of size 8
==16305==    at 0x4C326CB: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305==    by 0x40ED5E: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==  Address 0x5ae63f0 is 240 bytes inside a block of size 241 alloc'd
==16305==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305==    by 0x40ED25: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305== 
==16305== Invalid write of size 2
==16305==    at 0x4C32723: memcpy@@GLIBC_2.14 (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305==    by 0x40ED5E: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==  Address 0x5ae6400 is 15 bytes after a block of size 241 alloc'd
==16305==    at 0x4C2DB8F: malloc (in /usr/lib/valgrind/vgpreload_memcheck-amd64-linux.so)
==16305==    by 0x40ED25: ElfRelHackCode_Section::ElfRelHackCode_Section(serializable<Elf_Shdr_Traits>&, Elf&, ElfRelHack_Section&, unsigned int, unsigned int, unsigned int) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x413C3C: int do_relocation_section<Elf_Rela>(Elf*, unsigned int, unsigned int, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x40C69A: do_file(char const*, bool, bool) (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
==16305==    by 0x402137: main (in /opt/build/froydnj/build-icecc-mc/build/unix/elfhack/elfhack)
Assignee

Comment 20

a month ago

We were never adjusting last in this loop, so we were computing the
wrong addresses for all sections beyond the first. Which in turn meant
that we would compute the wrong size for the section data we needed to
allocate.

Assignee

Comment 21

a month ago

The new patch makes elfhacking the tests with the modified inject/x86_64.o file succeed. I could trigger crashes prior to the patch without valgrind, so I think things are in a better state now. And valgrind no longer complains.

Assignee: nobody → nfroyd
Keywords: leave-open

(In reply to Nathan Froyd [:froydnj] from comment #20)

Created attachment 9059488 [details]
Bug 1542958 - fix code section adjustments in elfhack; r=glandium

We were never adjusting last in this loop, so we were computing the
wrong addresses for all sections beyond the first. Which in turn meant
that we would compute the wrong size for the section data we needed to
allocate.

I confirm that this patch works for me.

I have one additional suggestion.
The message printed by build system currently is:

===
=== If you get failures below, please file a bug describing the error
=== and your environment (compiler and linker versions), and
=== provide the pre-elfhacked library as an attachment.
=== Use --disable-elf-hack until this is fixed.
===

I suggest that this message also ask to provide inject/*.o file, since this bug revealed that appropriate inject/*.o file can be required to reproduce a problem.

--- build/unix/elfhack/Makefile.in
+++ build/unix/elfhack/Makefile.in
@@ -10,7 +10,7 @@
        @echo ===
        @echo === If you get failures below, please file a bug describing the error
        @echo === and your environment \(compiler and linker versions\), and
-       @echo === provide the pre-elfhacked library as an attachment.
+       @echo === provide the pre-elfhacked libraries (*.so.bak) and inject/*.o file as attachments.
        @echo === Use --disable-elf-hack until this is fixed.
        @echo ===
        # Fail if the library doesn't have $(DT_TYPE) .dynamic info

Parentheses and * would need escaping, but better to fully quote arguments:

--- build/unix/elfhack/Makefile.in
+++ build/unix/elfhack/Makefile.in
@@ -7,12 +7,12 @@
 
 test-array$(DLL_SUFFIX) test-ctors$(DLL_SUFFIX): %$(DLL_SUFFIX): %.$(OBJ_SUFFIX) elfhack
        $(MKSHLIB) $(LDFLAGS) $< -nostartfiles
-       @echo ===
-       @echo === If you get failures below, please file a bug describing the error
-       @echo === and your environment \(compiler and linker versions\), and
-       @echo === provide the pre-elfhacked library as an attachment.
-       @echo === Use --disable-elf-hack until this is fixed.
-       @echo ===
+       @echo "==="
+       @echo "=== If you get failures below, please file a bug describing the error"
+       @echo "=== and your environment (compiler and linker versions, *FLAGS variables), and"
+       @echo "=== provide the pre-elfhacked libraries (*.so.bak) and inject/*.o file as attachments."
+       @echo "=== Use --disable-elf-hack until this is fixed."
+       @echo "==="
        # Fail if the library doesn't have $(DT_TYPE) .dynamic info
        $(TOOLCHAIN_PREFIX)readelf -d $@ | grep '($(DT_TYPE))'
        @rm -f $@.bak

Comment 24

a month ago
Pushed by nfroyd@mozilla.com:
https://hg.mozilla.org/integration/autoland/rev/09240f7397c1
fix code section adjustments in elfhack; r=glandium

Comment 25

a month ago
bugherder
Status: NEW → RESOLVED
Last Resolved: a month ago
Resolution: --- → FIXED
Target Milestone: --- → mozilla68
Assignee

Comment 26

a month ago

Comment on attachment 9059488 [details]
Bug 1542958 - fix code section adjustments in elfhack; r=glandium

Beta/Release Uplift Approval Request

  • User impact if declined: Possible weird crashes (?), third parties unable to build Firefox in certain build configurations.
  • Is this code covered by automated tests?: Yes
  • Has the fix been verified in Nightly?: Yes
  • Needs manual test from QE?: No
  • If yes, steps to reproduce:
  • List of other uplifts needed: None
  • Risk to taking this patch: Low
  • Why is the change risky/not risky? (and alternatives if risky): This is a weird patch. It fixes an obvious problem, but the problem has been around for a long long time (a good chunk of the time we've run elfhack on our binaries) and we've never noticed it. It does fix some valgrind errors in certain build configurations, so it seems worth uplifting as a safety measure. Low risk overall.
  • String changes made/needed: None.
Attachment #9059488 - Flags: approval-mozilla-beta?
Assignee

Updated

a month ago
Attachment #9057935 - Flags: approval-mozilla-beta?

Comment on attachment 9059488 [details]
Bug 1542958 - fix code section adjustments in elfhack; r=glandium

We are in our last betas before RC and we have shipped with this bug for a very long time without even noticing so I think it can ride the 68 train.

Attachment #9059488 - Flags: approval-mozilla-beta? → approval-mozilla-beta-
Attachment #9057935 - Flags: approval-mozilla-beta? → approval-mozilla-beta-
You need to log in before you can comment on or make changes to this bug.