cpal + dioxus_desktop: eats memory and dies
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 4/5
- Tiempo estimado
- 3-5 días
- Aptitud para principiantes
- 32/100
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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!!
- Lenguaje dominante
- Rust
- Estrellas
- 4k
- Forks
- 554
- Merge medio
- 3 d 3 h
- PR fusionados (30 d)
- 4
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de RustAudio/cpal
-
aaudio: dynamic buffer tuning never grows the buffer (set_buffer_size_in_frames reports Err on success)Posiblemente ocupada @dannyward630 la tomó hace 3 días. Abiertohost - aaudio platform - android
Dificultad 2/5 1-3 horas Aptitud para principiantes 79/100
Los mantenedores suelen responder en 1 día
-
WebAudio wasm build fails with wasm-bindgen panic=unwind closuresPosiblemente ocupada @bogusyogi la tomó hace 11 días. Abiertohost - webaudio platform - web
Dificultad 2/5 1-3 horas Aptitud para principiantes 75/100
RustAudio/cpal#1394 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
New WASAPI implementationAbiertocode quality dependencies host - wasapi platform - windows
Dificultad 5/5 Más de una semana Aptitud para principiantes 35/100
RustAudio/cpal#1416 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
host - pipewire platform - linux
Dificultad 4/5 1-2 días Aptitud para principiantes 52/100
RustAudio/cpal#1405 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
WASAPI: default-device activation fails with RPC_E_CHANGED_MODE after endpoint-notification callbacks put thread-pool threads into an STAPosiblemente ocupada @dannyward630 la tomó hace 4 días. Abiertocorrectness host - wasapi platform - windows
Dificultad 4/5 3-5 días Aptitud para principiantes 20/100
RustAudio/cpal#1402 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de RustAudio/cpal
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 85/100
FalkorDB/FalkorDB#3597 · 1 comentario ·
Los mantenedores suelen responder en 2 días
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Los mantenedores suelen responder en 1 día
-
needs triage
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
mozilla-services/syncstorage-rs#2715 ·
Los mantenedores suelen responder en 1 día