cpal + dioxus_desktop: eats memory and dies
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 4/5
- Tempo stimato
- 3-5 giorni
- Idoneità per principianti
- 32/100
Direzione di ricerca
Start by reproducing the memory spike with the minimal CPAL stream and Dioxus Desktop launch shown in the issue, then compare each program running alone. The payload names no repository files or tests and does not identify which library causes the interaction, so debugging will require tracing both libraries' startup paths. Done means the combined program opens its window without unbounded memory use while the audio stream runs.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
With latest versions:
cpal = { version = "0.15.2", features=["jack"] }
dioxus = "0.3.2"
dioxus-ssr = "0.3.0"
dioxus-desktop = "0.3.0"
Consider this minimal code:
use cpal::traits::{DeviceTrait, HostTrait, StreamTrait};
use cpal::{BufferSize, Device, Stream, StreamConfig, SupportedBufferSize};
use std::cmp::max;
fn main() {
let _stream = start_cpal();
loop {}
}
fn start_cpal() -> Stream {
let device = get_device();
let config = get_config(&device);
let stream = device
.build_output_stream(
&config,
move |_: &mut [f32], _: &cpal::OutputCallbackInfo| {},
move |_| {},
None,
)
.unwrap();
stream.play().unwrap();
stream
}
fn get_device() -> Device {
let host_id = cpal::available_hosts()[0];
let host = cpal::host_from_id(host_id).unwrap();
host.default_output_device().unwrap()
}
fn get_config(device: &Device) -> StreamConfig {
let mut supported_configs_range = device.supported_output_configs().unwrap();
let supported_config = supported_configs_range
.next()
.unwrap()
.with_max_sample_rate();
let mut config = supported_config.config();
config.buffer_size = BufferSize::Fixed(get_some_buffer_size(supported_config.buffer_size()));
config
}
fn get_some_buffer_size(spec: &SupportedBufferSize) -> u32 {
match spec {
SupportedBufferSize::Range { min, .. } => max(*min, 64),
SupportedBufferSize::Unknown => 64,
}
}
It works as expected (program runs; nothing happens). I also get sound if I put something in the data callback.
Enter dioxus desktop:
fn main() {
let _stream = start_cpal();
dioxus_desktop::launch(app);
}
use dioxus::prelude::*;
fn app(cx: Scope) -> Element {
cx.render(rsx!("lol"))
}
// .. same code as before
Expected result: cpal still works; Dioxus window shows up.
Actual result: program eats all the memory and the OS kills it. No window shows up.
The start of the spike is where I run the program. It falls back down after a few seconds when the process is killed.
The issue is not with Dioxus alone, because this program works as expected:
fn main() {
dioxus_desktop::launch(app);
}
The problem only occurs when I use cpal and Dioxus in the same program.
I don't know if this is an issue with Dioxus or cpal, and I have no idea where to begin debugging this. Any ideas please?
I'm on Ubuntu 22.04.2 LTS. Lemme know if you need any other details. Thank you!!
- Lingua principale
- Rust
- Stelle
- 4k
- Fork
- 554
- Merge medio
- 3g 3h
- PR unite (30g)
- 4
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di RustAudio/cpal
-
aaudio: dynamic buffer tuning never grows the buffer (set_buffer_size_in_frames reports Err on success)Forse già presa @dannyward630 l’ha presa 3 giorni fa. Apertahost - aaudio platform - android
Difficoltà 2/5 1-3 ore Idoneità per principianti 79/100
I maintainer di solito rispondono entro 1 giorno
-
WebAudio wasm build fails with wasm-bindgen panic=unwind closuresForse già presa @bogusyogi l’ha presa 12 giorni fa. Apertahost - webaudio platform - web
Difficoltà 2/5 1-3 ore Idoneità per principianti 75/100
RustAudio/cpal#1394 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
New WASAPI implementationApertacode quality dependencies host - wasapi platform - windows
Difficoltà 5/5 Più di una settimana Idoneità per principianti 35/100
RustAudio/cpal#1416 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
host - pipewire platform - linux
Difficoltà 4/5 1-2 giorni Idoneità per principianti 52/100
RustAudio/cpal#1405 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
WASAPI: default-device activation fails with RPC_E_CHANGED_MODE after endpoint-notification callbacks put thread-pool threads into an STAForse già presa @dannyward630 l’ha presa 4 giorni fa. Apertacorrectness host - wasapi platform - windows
Difficoltà 4/5 3-5 giorni Idoneità per principianti 20/100
RustAudio/cpal#1402 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di RustAudio/cpal
Issue simili
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
swc-project/swc-next#1165 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 2/5 1-3 ore Idoneità per principianti 73/100
Alive24/shea-symphony#574 ·
-
bug tests Windows
Difficoltà 2/5 1-3 ore Idoneità per principianti 78/100
I maintainer di solito rispondono entro 1 giorno
-
documentation good first issue help wanted
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
dev-five-git/devup-ui#879 ·
I maintainer di solito rispondono entro 11 giorni
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 77/100
farion1231/cc-switch#9038 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno