libFuzzer broken with undefined symbol: _ZN9dav1dfuzz24dav1d_set_cpu_flags_maskEj
Categories
(Core :: Fuzzing, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox-esr115 | --- | unaffected |
firefox121 | --- | unaffected |
firefox122 | --- | unaffected |
firefox123 | --- | fixed |
People
(Reporter: truber, Assigned: truber)
References
(Regression)
Details
(Keywords: regression, Whiteboard: fuzzblocker)
Attachments
(2 files)
$ ./mach build && ./mach gtest -- '-*'
...
0:04.72 Your build was successful!
One or more Android-only options will be ignored
0:04.72 /home/truber/src/m/u/obj/ff-asan-fuzzing/dist/bin/firefox -unittest --gtest_death_test_style=threadsafe
XPCOMGlueLoad error for file /home/truber/src/m/u/obj/ff-asan-fuzzing/dist/bin/gtest/libxul.so:
/home/truber/src/m/u/obj/ff-asan-fuzzing/dist/bin/gtest/libxul.so: undefined symbol: _ZN9dav1dfuzz24dav1d_set_cpu_flags_maskEj
Couldn't load XPCOM.
Assignee | ||
Comment 1•1 year ago
|
||
Above error is from m-c b29d6ace45f4.
Applying f1a486575f57 in reverse fixes the build.
Comment 2•1 year ago
|
||
Set release status flags based on info from the regressing bug 1359918
Assignee | ||
Updated•1 year ago
|
Comment 3•1 year ago
|
||
The real cause is that bug 1533092 never worked, or nothing is calling whatever is calling dav1d_set_cpu_flags_mask, because the namespacing is definitely wrong: dav1d_fuzzer.c is compiled as C++ in a dav1dfuzz namespace, which puts things from cpu.h in the same namespace, but the corresponding definitions in cpu.c are not namespaced.
Assignee | ||
Comment 4•1 year ago
|
||
Updated•1 year ago
|
Assignee | ||
Comment 5•1 year ago
|
||
(In reply to Mike Hommey [:glandium] from comment #3)
The real cause is that bug 1533092 never worked, or nothing is calling whatever is calling dav1d_set_cpu_flags_mask, because the namespacing is definitely wrong: dav1d_fuzzer.c is compiled as C++ in a dav1dfuzz namespace, which puts things from cpu.h in the same namespace, but the corresponding definitions in cpu.c are not namespaced.
Thanks! That explains it. dav1d/dav1d.h
contains extern "C"
so is not affected, only cpu.h
. And that symbol was only used by LLVMFuzzerInitialize
which we were not calling.
Comment 7•1 year ago
|
||
bugherder |
Description
•