audio_thread_priority is always built even if unused
Categories
(Core :: Audio/Video: cubeb, defect)
Tracking
()
Tracking | Status | |
---|---|---|
firefox69 | --- | fixed |
People
(Reporter: jbeich, Assigned: padenot)
References
(Regression)
Details
(Keywords: regression)
Attachments
(1 file, 1 obsolete file)
Remoting is not enabled on Tier3 platforms, so building audio_thread_priority brings no benefit.
https://searchfox.org/mozilla-central/rev/543e1fbd04a8/dom/media/CubebUtils.cpp#60-63
https://searchfox.org/mozilla-central/rev/543e1fbd04a8/toolkit/library/rust/gkrust-features.mozbuild#26-29
$ c++ -v
FreeBSD clang version 8.0.1 (branches/release_80 363030) (based on LLVM 8.0.1)
Target: x86_64-unknown-freebsd13.0
Thread model: posix
InstalledDir: /usr/bin
$ rustc -vV
rustc 1.37.0-nightly
binary: rustc
commit-hash: b25ee644971a
commit-date: 2019-06-17
host: x86_64-unknown-freebsd
release: 1.37.0-nightly
LLVM version: 8.0
$ ./mach bootstrap
$ ./mach build
[...]
error[E0412]: cannot find type `RtPriorityHandleInternal` in this scope
--> third_party/rust/audio_thread_priority/src/lib.rs:52:29
|
52 | pub type RtPriorityHandle = RtPriorityHandleInternal;
| ^^^^^^^^^^^^^^^^^^^^^^^^ help: a type alias with a similar name exists: `RtPriorityHandle`
error[E0425]: cannot find function `promote_current_thread_to_real_time_internal` in this scope
--> third_party/rust/audio_thread_priority/src/lib.rs:73:12
|
73 | return promote_current_thread_to_real_time_internal(audio_buffer_frames, audio_samplerate_hz);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `promote_current_thread_to_real_time`
error[E0425]: cannot find function `demote_current_thread_from_real_time_internal` in this scope
--> third_party/rust/audio_thread_priority/src/lib.rs:87:12
|
87 | return demote_current_thread_from_real_time_internal(handle);
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ help: a function with a similar name exists: `demote_current_thread_from_real_time`
warning: unused `#[macro_use]` import
--> third_party/rust/audio_thread_priority/src/lib.rs:9:1
|
9 | #[macro_use]
| ^^^^^^^^^^^^
|
= note: #[warn(unused_imports)] on by default
error: aborting due to 3 previous errors
Some errors have detailed explanations: E0412, E0425.
For more information about an error, try `rustc --explain E0412`.
error: Could not compile `audio_thread_priority`.
[...]
toolkit/library/libxul.so
ld.lld: error: undefined symbol: atp_promote_current_thread_to_real_time
>>> referenced by Unified_cpp_dom_media4.cpp
>>> ../../dom/media/Unified_cpp_dom_media4.o:(mozilla::GraphRunner::Run())
ld.lld: error: undefined symbol: atp_demote_current_thread_from_real_time
>>> referenced by Unified_cpp_dom_media4.cpp
>>> ../../dom/media/Unified_cpp_dom_media4.o:(mozilla::GraphRunner::Run())
c++: error: linker command failed with exit code 1 (use -v to see invocation)
Sorry, I can't submit on Phabricator due to bug 1536716.
https://treeherder.mozilla.org/#/jobs?repo=try&revision=ea9275bd663590e8e6b74153b24ad25613d936c9
Can you help landing a fix? MOZ_CUBEB_REMOTING should probably be factored out into toolkit/moz.configure. However, doing so myself is kinda pointless without ability to iterate on review feedback via Phabricator.
Assignee | ||
Comment 3•5 years ago
|
||
(In reply to Jan Beich from comment #0)
Remoting is not enabled on Tier3 platforms, so building audio_thread_priority brings no benefit.
It's not only useful for remoting, and quite critical for AudioWorklet
, that we're rolling out soon. I don't know how to promote a thread on FreeBSD, but I can at least unbreak the build.
Assignee | ||
Comment 4•5 years ago
|
||
Comment on attachment 9073620 [details]
Bug 1560720 - Provide a blanket/noop implementation of audio_thread_priority for platform without a backend. r?kinetik
Built fine on FreeBSD.
(In reply to Paul Adenot (:padenot) from comment #3)
I don't know how to promote a thread on FreeBSD...
What do you mean by "promote"? Give a thread a realtime priority without requiring root? rtkit hasn't been ported to non-Linux kernels. And Tier3 also includes Solaris, DragonFly, NetBSD, OpenBSD, each one implementing threading differently. Besides, sandboxing isn't implemented on Tier3 to protect from audio thread being a DoS vector.
Comment 8•5 years ago
|
||
bugherder |
Updated•5 years ago
|
Comment 9•5 years ago
|
||
(In reply to Jan Beich from comment #7)
What do you mean by "promote"? Give a thread a realtime priority without requiring root? rtkit hasn't been ported to non-Linux kernels.
Oh, there's already a DBus daemon for giving processes realtime priority after PolKit authorization? Nice, I was thinking of writing a similar thing myself, I'll try porting this one instead! Thanks for the link!! :)
Besides, sandboxing isn't implemented on Tier3 to protect from audio thread being a DoS vector.
IIRC OpenBSD pledge support was merged? Not sure if audio process is enabled there though.
I'll probably get around to trying to add FreeBSD Capsicum sandboxing sometime soon..
Reporter | ||
Comment 10•5 years ago
•
|
||
(In reply to greg v [:myfreeweb] from comment #9)
IIRC OpenBSD pledge support was merged?
Not sure how much bug 1457092 really covers. For one, RDD was disabled in bug 1536126.
https://searchfox.org/mozilla-central/source/xpcom/build/GeckoProcessTypes.h
https://searchfox.org/mozilla-central/search?q=symbol:_ZN7mozilla3dom12ContentChild14SetProcessNameERK12nsTSubstringIDsE
Not sure if audio process is enabled there though.
Bug 1467982 plans to. May help wih https://marc.info/?t=155920584900002
Updated•3 years ago
|
Updated•3 years ago
|
Description
•