Linker errors when trying to compile the canvas fuzzer

107 views
Skip to first unread message

Elias Myllymäki

unread,
Oct 11, 2025, 7:14:59 PM (14 days ago) Oct 11
to Chromium-dev
Hi!

I am trying to build the canvas fuzzer binary for security research purposes with these commands here:

```
gn gen out/canvasfuzz \
  --args='is_debug=false use_libfuzzer=true is_asan=true symbol_level=1 use_dawn=false clang_use_chrome_plugins=false skia_use_dawn=false build_dawn_tests=false'

autoninja -C out/canvasfuzz canvas_fuzzer
```

but then I face these linker errors:

```
oof@oof-h8-1440eo:~/chromiumstuff/source/src$ autoninja -C out/canvasfuzz canvas_fuzzer
ninja: Entering directory `out/canvasfuzz'
[1/1] LINK ./canvas_fuzzer
FAILED: canvas_fuzzer
"python3" "../../build/toolchain/gcc_link_wrapper.py" --output="./canvas_fuzzer" -- ../../third_party/llvm-build/Release+Asserts/bin/clang++ -Werror -fuse-ld=lld -Wl,--fatal-warnings -Wl,--build-id=fast -fPIC -Wl,-z,noexecstack -Wl,-z,relro -Wl,-z,now -Wl,--color-diagnostics -Wl,--undefined-version -Wl,--no-call-graph-profile-sort --target=x86_64-unknown-linux-gnu -no-canonical-prefixes -Wl,--gc-sections -nostdlib++ --sysroot=../../build/linux/debian_bullseye_amd64-sysroot -fsanitize=leak -fsanitize=address -fsanitize=fuzzer-no-link -Wl,-wrap,dlclose -rdynamic -pie -Wl,--disable-new-dtags -Wl,-rpath=\$ORIGIN -fsanitize=leak -fsanitize=address -fsanitize=fuzzer-no-link -Wl,-wrap,dlclose -Wl,-u_sanitizer_options_link_helper -o "./canvas_fuzzer" -Wl,--start-group @"./canvas_fuzzer.rsp" -Wl,--end-group  ./libtest_trace_processor.so ../../third_party/llvm-build/Release+Asserts/lib/clang/21/lib/x86_64-unknown-linux-gnu/libclang_rt.builtins.a -ldl -lpthread -lrt -lglib-2.0 -lgmodule-2.0 -lgobject-2.0 -lgthread-2.0 -lnspr4 -lnss3 -lnssutil3 -lplc4 -lplds4 -lsmime3 -ldbus-1 -lgio-2.0 -latk-1.0 -latk-bridge-2.0 -luuid -lresolv -lxcb -lxkbcommon -lgbm -lX11 -lXi -lXext -lpci -lffi_pic -lcairo -lharfbuzz -lpango-1.0 -lpangocairo-1.0 -ludev -lXcomposite -lXdamage -lXfixes -lXrandr -lXrender -lXtst -ldrm -lasound -lm -lz -latspi -lxshmfence -lcups -Wl,--start-group obj/third_party/rust/cxx/v1/lib/libcxx_lib.rlib obj/third_party/rust/foldhash/v0_1/lib/libfoldhash_lib.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_std.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/liballoc_alloc.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcompiler_builtins_compiler_builtins.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_core_rustc_std_workspace_core.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcore_core.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libprofiler_builtins_profiler_builtins.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libcfg_if_cfg_if.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libhashbrown_hashbrown.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_alloc_rustc_std_workspace_alloc.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_abort_panic_abort.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libpanic_unwind_panic_unwind.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunwind_unwind.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/liblibc_libc.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_demangle_rustc_demangle.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libstd_detect_std_detect.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libaddr2line_addr2line.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgimli_gimli.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libminiz_oxide_miniz_oxide.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libadler2_adler2.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libobject_object.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libmemchr_memchr.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libgetopts_getopts.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/librustc_std_workspace_std_rustc_std_workspace_std.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libunicode_width_unicode_width.rlib local_rustc_sysroot/lib/rustlib/x86_64-unknown-linux-gnu/lib/libtest_test.rlib obj/build/rust/allocator/libbuild_srust_sallocator_callocator.rlib obj/build/rust/allocator/liballoc_error_handler_impl_ffi.rlib obj/base/libbase_crust_ulogger.rlib obj/base/libbase_clogging_ulog_useverity_ubindgen.rlib obj/third_party/rust/log/v0_4/lib/liblog_lib.rlib obj/build/rust/chromium_prelude/libchromium.rlib obj/third_party/rust/serde_json_lenient/v0_2/wrapper/libthird_uparty_srust_sserde_ujson_ulenient_sv0_u2_swrapper_cwrapper.rlib obj/third_party/rust/serde/v1/lib/libserde_lib.rlib obj/third_party/rust/serde_json_lenient/v0_2/lib/libserde_json_lenient_lib.rlib obj/third_party/rust/itoa/v1/lib/libitoa_lib.rlib obj/third_party/rust/memchr/v2/lib/libmemchr_lib.rlib obj/third_party/rust/ryu/v1/lib/libryu_lib.rlib obj/skia/libskia_cbridge_urust_uside.rlib obj/third_party/rust/font_types/v0_8/lib/libfont_types_lib.rlib obj/third_party/rust/bytemuck/v1/lib/libbytemuck_lib.rlib obj/third_party/rust/read_fonts/v0_27/lib/libread_fonts_lib.rlib obj/third_party/rust/skrifa/v0_29/lib/libskrifa_lib.rlib obj/skia/libskia_crust_upng_uffi.rlib obj/third_party/rust/png/v0_18/lib/libpng_lib.rlib obj/third_party/rust/bitflags/v2/lib/libbitflags_lib.rlib obj/third_party/rust/crc32fast/v1/lib/libcrc32fast_lib.rlib obj/third_party/rust/cfg_if/v1/lib/libcfg_if_lib.rlib obj/third_party/rust/fdeflate/v0_3/lib/libfdeflate_lib.rlib obj/third_party/rust/simd_adler32/v0_3/lib/libsimd_adler32_lib.rlib obj/third_party/rust/flate2/v1/lib/libflate2_lib.rlib obj/third_party/rust/miniz_oxide/v0_8/lib/libminiz_oxide_lib.rlib obj/third_party/rust/adler2/v2/lib/libadler2_lib.rlib obj/third_party/blink/common/rust_crash/libthird_uparty_sblink_scommon_srust_ucrash_crs.rlib obj/third_party/rust/temporal_capi/v0_0_9/lib/libtemporal_capi_lib.rlib obj/third_party/rust/diplomat_runtime/v0_12/lib/libdiplomat_runtime_lib.rlib obj/third_party/rust/icu_calendar/v2/lib/libicu_calendar_lib.rlib obj/third_party/rust/calendrical_calculations/v0_2/lib/libcalendrical_calculations_lib.rlib obj/third_party/rust/core_maths/v0_1/lib/libcore_maths_lib.rlib obj/third_party/rust/libm/v0_2/lib/liblibm_lib.rlib obj/third_party/rust/icu_calendar_data/v2/lib/libicu_calendar_data_lib.rlib obj/third_party/rust/icu_locale/v2/lib/libicu_locale_lib.rlib obj/third_party/rust/icu_collections/v2/lib/libicu_collections_lib.rlib obj/third_party/rust/potential_utf/v0_1/lib/libpotential_utf_lib.rlib obj/third_party/rust/zerovec/v0_11/lib/libzerovec_lib.rlib obj/third_party/rust/yoke/v0_8/lib/libyoke_lib.rlib obj/third_party/rust/stable_deref_trait/v1/lib/libstable_deref_trait_lib.rlib obj/third_party/rust/zerofrom/v0_1/lib/libzerofrom_lib.rlib obj/third_party/rust/icu_locale_core/v2/lib/libicu_locale_core_lib.rlib obj/third_party/rust/litemap/v0_8/lib/liblitemap_lib.rlib obj/third_party/rust/tinystr/v0_8/lib/libtinystr_lib.rlib obj/third_party/rust/writeable/v0_6/lib/libwriteable_lib.rlib obj/third_party/rust/either/v1/lib/libeither_lib.rlib obj/third_party/rust/icu_locale_data/v2/lib/libicu_locale_data_lib.rlib obj/third_party/rust/icu_provider/v2/lib/libicu_provider_lib.rlib obj/third_party/rust/zerotrie/v0_2/lib/libzerotrie_lib.rlib obj/third_party/rust/num_traits/v0_2/lib/libnum_traits_lib.rlib obj/third_party/rust/temporal_rs/v0_0_9/lib/libtemporal_rs_lib.rlib obj/third_party/rust/combine/v4/lib/libcombine_lib.rlib obj/third_party/rust/bytes/v1/lib/libbytes_lib.rlib obj/third_party/rust/ixdtf/v0_5/lib/libixdtf_lib.rlib obj/third_party/rust/jiff_tzdb/v0_1/lib/libjiff_tzdb_lib.rlib obj/third_party/rust/timezone_provider/v0_0_9/lib/libtimezone_provider_lib.rlib obj/third_party/rust/tzif/v0_3/lib/libtzif_lib.rlib obj/third_party/crabbyavif/libthird_uparty_scrabbyavif_ccrabbyavif.rlib obj/third_party/crabbyavif/libdav1d_sys.rlib obj/third_party/crabbyavif/liblibyuv_sys.rlib obj/third_party/rust/libc/v0_2/lib/liblibc_lib.rlib obj/base/test/libbase_stest_ctest_urust_ulogger_uconsumer.rlib obj/third_party/rust/llguidance/v0_7/lib/libllguidance_lib.rlib obj/third_party/rust/anyhow/v1/lib/libanyhow_lib.rlib obj/third_party/rust/derivre/v0_3/lib/libderivre_lib.rlib obj/third_party/rust/hashbrown/v0_15/lib/libhashbrown_lib.rlib obj/third_party/rust/regex_syntax/v0_8/lib/libregex_syntax_lib.rlib obj/third_party/rust/strum/v0_27/lib/libstrum_lib.rlib obj/third_party/rust/indexmap/v2/lib/libindexmap_lib.rlib obj/third_party/rust/equivalent/v1/lib/libequivalent_lib.rlib obj/third_party/rust/serde_json/v1/lib/libserde_json_lib.rlib obj/third_party/rust/toktrie/v0_7/lib/libtoktrie_lib.rlib -Wl,--end-group
ld.lld: error: undefined symbol: content::SessionStorageNamespaceImpl::IsFromContext(content::DOMStorageContextWrapper*)
>>> referenced by web_contents_impl.cc:5169 (../../content/browser/web_contents/web_contents_impl.cc:5169)
>>>               obj/content/browser/browser/web_contents_impl.o:(content::WebContentsImpl::CreateNewWindow(content::RenderFrameHostImpl*, content::mojom::CreateNewWindowParams const&, bool, bool, content::SessionStorageNamespace*))
>>> referenced by navigation_controller_impl.cc:3058 (../../content/browser/renderer_host/navigation_controller_impl.cc:3058)
>>>               obj/content/browser/browser/navigation_controller_impl.o:(content::NavigationControllerImpl::GetSessionStorageNamespace(content::StoragePartitionConfig const&))

ld.lld: error: undefined symbol: content::SessionStorageNamespaceImpl::Clone()
>>> referenced by navigation_controller_impl.cc:2593 (../../content/browser/renderer_host/navigation_controller_impl.cc:2593)
>>>               obj/content/browser/browser/navigation_controller_impl.o:(content::NavigationControllerImpl::CopyStateFrom(content::NavigationController*, bool))

ld.lld: error: undefined symbol: content::SessionStorageNamespaceImpl::Create(scoped_refptr<content::DOMStorageContextWrapper>)
>>> referenced by navigation_controller_impl.cc:3066 (../../content/browser/renderer_host/navigation_controller_impl.cc:3066)
>>>               obj/content/browser/browser/navigation_controller_impl.o:(content::NavigationControllerImpl::GetSessionStorageNamespace(content::StoragePartitionConfig const&))

ld.lld: error: undefined symbol: content::SessionStorageNamespaceImpl::Create(scoped_refptr<content::DOMStorageContextWrapper>, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>>)
>>> referenced by dom_storage_context_wrapper.cc:207 (../../content/browser/dom_storage/dom_storage_context_wrapper.cc:207)
>>>               obj/content/browser/browser/dom_storage_context_wrapper.o:(content::DOMStorageContextWrapper::RecreateSessionStorage(std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>> const&))
>>> referenced by render_frame_host_impl.cc:9795 (../../content/browser/renderer_host/render_frame_host_impl.cc:9795)
>>>               obj/content/browser/browser/render_frame_host_impl.o:(content::RenderFrameHostImpl::CreateNewWindow(mojo::StructPtr<content::mojom::CreateNewWindowParams>, base::OnceCallback<void (content::mojom::CreateNewWindowStatus, mojo::StructPtr<content::mojom::CreateNewWindowReply>)>))

ld.lld: error: undefined symbol: content::DataURLBlobReader::ReadDataURLFromBlob(mojo::PendingRemote<blink::mojom::Blob>, base::OnceCallback<void (GURL)>)
>>> referenced by render_frame_host_impl.cc:7471 (../../content/browser/renderer_host/render_frame_host_impl.cc:7471)
>>>               obj/content/browser/browser/render_frame_host_impl.o:(content::RenderFrameHostImpl::DownloadURL(mojo::StructPtr<blink::mojom::DownloadURLParams>))

ld.lld: error: undefined symbol: content::SessionStorageNamespaceImpl::CloneFrom(scoped_refptr<content::DOMStorageContextWrapper>, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>>, std::__Cr::basic_string<char, std::__Cr::char_traits<char>, std::__Cr::allocator<char>> const&, bool)
>>> referenced by render_frame_host_impl.cc:9791 (../../content/browser/renderer_host/render_frame_host_impl.cc:9791)
>>>               obj/content/browser/browser/render_frame_host_impl.o:(content::RenderFrameHostImpl::CreateNewWindow(mojo::StructPtr<content::mojom::CreateNewWindowParams>, base::OnceCallback<void (content::mojom::CreateNewWindowStatus, mojo::StructPtr<content::mojom::CreateNewWindowReply>)>))
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
ninja: build stopped: subcommand failed.
```

I am using commit 3c0c63879314a21b291188c4678d7d126d2e6b28 .

Does anyone know how to get rid of these linker errors and compile the binary succesfully?

Thanks in advance!


Reply all
Reply to author
Forward
0 new messages