objdir/dist/include/nsIHttpChannel.h:251:27: error: unknown type name 'UniqueProfilerBacktrace'
Categories
(Core :: Gecko Profiler, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox71 | --- | fixed |
People
(Reporter: jbeich, Assigned: bas.schouten)
References
(Regression)
Details
(Keywords: regression)
Attachments
(1 file)
GeckoProfiler is not supported on Tier3 platforms: Linux powerpc/sparc/s390x, DragonFly/FreeBSD/NetBSD/OpenBSD, Solaris. Until bug 1371159 reproducing on Tier1 requires hacking gecko_profiler()
in toolkit/moz.configure to return None
.
$ c++ --version
FreeBSD clang version 8.0.1 (tags/RELEASE_801/final 366581) (based on LLVM 8.0.1)
Target: x86_64-unknown-freebsd13.0
Thread model: posix
InstalledDir: /usr/bin
$ rustc -vV
rustc 1.39.0-nightly
binary: rustc
commit-hash: a6946a817a1345ce739acd8b12255c0a595e9b39
commit-date: 2019-09-13
host: x86_64-unknown-freebsd
release: 1.39.0-nightly
LLVM version: 9.0
$ ./mach bootstrap
$ ./mach build
[...]
[style 0.0.1] cargo:rerun-if-changed=build_gecko.rs
[style 0.0.1] cargo:rerun-if-changed=objdir/layout/style/bindgen.toml
[style 0.0.1] cargo:rerun-if-changed=layout/style/ServoBindings.toml
[...]
objdir/dist/include/nsIHttpChannel.h:251:27: error: unknown type name 'UniqueProfilerBacktrace', err: true
thread 'main' panicked at 'Failed to generate bindings, flags: ["objdir/dist/include/GeckoProfiler.h", ...]',
servo/components/style/build_gecko.rs:192:13
stack backtrace:
0: 0x12e2b07 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hd5babae120fb09d5
1: 0x12fc1c1 - core::fmt::write::h89de83151e33fa64
2: 0x12dea72 - std::io::Write::write_fmt::hed853f77c08d92a5
3: 0x12d1a5d - std::panicking::default_hook::{{closure}}::ha01368b259222fe0
4: 0x12d1784 - std::panicking::default_hook::ha6060fc624ff0ae5
5: 0x12d2155 - std::panicking::rust_panic_with_hook::hb8425dae7984dcac
6: 0x12d1cf7 - std::panicking::continue_panic_fmt::hbbe5ab25243a40d8
7: 0x12d1c47 - std::panicking::begin_panic_fmt::h278ba6fee46e57b4
8: 0x111465d - build_script_build::build_gecko::generate_structs::ha3122a2bcdee4ffa
9: 0x11161b0 - build_script_build::main::h20c5775070929d10
10: 0x10fce46 - std::rt::lang_start::{{closure}}::h1eb4abb3a12ea798
11: 0x12d1b78 - std::panicking::try::do_call::h25644839f24dcd8b
12: 0x12e333f - __rust_maybe_catch_panic
13: 0x12d6e6d - std::rt::lang_start_internal::h7cbdf229ab61a40e
14: 0x1116c6a - main
15: 0x10fa11d - _start
at /usr/src/lib/csu/amd64/crt1.c:76
Assignee | ||
Comment 1•5 years ago
|
||
On windows other stuff doesn't compile either when I apply that hack to moz.configure :(. I'll try to figure it out though.
Assignee | ||
Comment 2•5 years ago
|
||
Assignee | ||
Updated•5 years ago
|
Assignee | ||
Comment 3•5 years ago
|
||
This feels like the least invasive way of doing this. It'd be nice to prevent littering the code itself with #ifdefs.
Comment 4•5 years ago
|
||
With this patch, linking fails on ppc64le
with a whole bunch of repeated complaints about multiple definitions:
20:08.37 /usr/bin/ld.bfd: ../../../security/apps/Unified_cpp_security_apps0.o: in function `profiler_get_backtrace()':
20:08.37 /home/spectre/src/mozilla-central/obj-powerpc64le-unknown-linux-gnu/dist/include/GeckoProfiler.h:76: multiple definition of `profiler_get_backtrace()'; ../../../security/certverifier/Unified_cpp_certverifier0.o:/home/spectre/src/mozilla-central/obj-powerpc64le-unknown-linux-gnu/dist/include/GeckoProfiler.h:76: first defined here
20:08.37 /usr/bin/ld.bfd: ../../../xpcom/base/nsDumpUtils.o: in function `profiler_get_backtrace()':
20:08.37 /home/spectre/src/mozilla-central/obj-powerpc64le-unknown-linux-gnu/dist/include/GeckoProfiler.h:76: multiple definition of `profiler_get_backtrace()'; ../../../security/certverifier/Unified_cpp_certverifier0.o:/home/spectre/src/mozilla-central/obj-powerpc64le-unknown-linux-gnu/dist/include/GeckoProfiler.h:76: first defined here
Comment 5•5 years ago
|
||
This is incredibly cheesy, but instead of actually having a function, hacking in
#define profiler_get_backtrace() nullptr
compiles and works. I don't know how acceptable that is.
FreeBSD amd64 hits the same error as comment 4. Maybe mark profiler_get_backtrace
as inline
or static inline
(plain static
triggers -Werror=unused-function
). If you go macro try to align with bug 1403868 intent.
toolkit/library/build/libxul.so
ld.lld: error: duplicate symbol: profiler_get_backtrace()
>>> defined at Unified_cpp_certverifier0.cpp
>>> ../../../security/certverifier/Unified_cpp_certverifier0.o:(profiler_get_backtrace())
>>> defined at Unified_cpp_security_apps0.cpp
>>> ../../../security/apps/Unified_cpp_security_apps0.o:(.text._Z22profiler_get_backtracev+0x0)
[...]
ld.lld: error: too many errors emitted, stopping now (use -error-limit=0 to see all errors)
clang++: error: linker command failed with exit code 1 (use -v to see invocation)
Updated•5 years ago
|
Pushed by bschouten@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/29b8be50a6f4 Define UniqueProfilerBacktrace and profiler_get_backtrace() to be no-ops on a build without profiling. r=njn
Comment 8•5 years ago
|
||
bugherder |
Updated•2 years ago
|
Updated•2 years ago
|
Description
•