tesselode / kira

Library for expressive game audio.
https://crates.io/crates/kira
Apache License 2.0
836 stars 42 forks source link

Playing StreamingSoundData panics in 0.8 #49

Open vdrn opened 1 year ago

vdrn commented 1 year ago

After updating from 0.7.0 -> 0.8.1 I'm getting an error when trying to play StreamingSoundData. Here's the stack trace, let me know if anything else might be helpful.

thread '<unnamed>' panicked at 'did not get expected frame after seeking decoder', /vendor/kira/src/sound/streaming/sound/decode_scheduler.rs:159:22
   0:     0x55f1096ae84a - std::backtrace_rs::backtrace::libunwind::trace::heb3166a6cb1fd02b
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/../../backtrace/src/backtrace/libunwind.rs:93:5
   1:     0x55f1096ae84a - std::backtrace_rs::backtrace::trace_unsynchronized::h34837841e045a1d4
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/../../backtrace/src/backtrace/mod.rs:66:5
   2:     0x55f1096ae84a - std::sys_common::backtrace::_print_fmt::h4348a4b63f328ee4
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/sys_common/backtrace.rs:65:5
   3:     0x55f1096ae84a - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::h1bad440d01eeeb29
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/sys_common/backtrace.rs:44:22
   4:     0x55f1096d386e - core::fmt::write::hb5a073c651a6cb64
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/fmt/mod.rs:1232:17
   5:     0x55f1096ab875 - std::io::Write::write_fmt::h97cc768331421fb2
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/io/mod.rs:1682:15
   6:     0x55f1096ae615 - std::sys_common::backtrace::_print::h23bd93d6897965f3
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/sys_common/backtrace.rs:47:5
   7:     0x55f1096ae615 - std::sys_common::backtrace::print::h4d41ae33ce7a824f
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/sys_common/backtrace.rs:34:9
   8:     0x55f1096affcf - std::panicking::default_hook::{{closure}}::h8ab48635107c713a
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panicking.rs:267:22
   9:     0x55f1096afd0b - std::panicking::default_hook::h6305ca3c910e41d2
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panicking.rs:286:9
  10:     0x55f1096b06d9 - std::panicking::rust_panic_with_hook::ha8dfad8ee636a9a3
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panicking.rs:688:13
  11:     0x55f1096b0479 - std::panicking::begin_panic_handler::{{closure}}::h4fcf608bbbd27b26
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panicking.rs:579:13
  12:     0x55f1096aecfc - std::sys_common::backtrace::__rust_end_short_backtrace::h86f63ffb2338c5c8
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/sys_common/backtrace.rs:137:18
  13:     0x55f1096b0182 - rust_begin_unwind
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panicking.rs:575:5
  14:     0x55f108d82353 - core::panicking::panic_fmt::ha12d43373dd0f588
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/panicking.rs:64:14
  15:     0x55f1096d15d1 - core::panicking::panic_display::h17cae662562d6a06
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/panicking.rs:147:5
  16:     0x55f1096d157b - core::panicking::panic_str::hfa275bfdfc298aa4
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/panicking.rs:131:5
  17:     0x55f108d82316 - core::option::expect_failed::h09e72beb5cdbcf2e
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/option.rs:1924:5
  18:     0x55f1092987cc - core::option::Option<T>::expect::h45a4a6c94b2112a8
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/option.rs:786:21
  19:     0x55f1092987cc - kira::sound::streaming::sound::decode_scheduler::DecodeScheduler<Error>::frame_at_index::h1ffee1aa2b581f79
                               at /vendor/kira/src/sound/streaming/sound/decode_scheduler.rs:159:7
  20:     0x55f109298fc5 - kira::sound::streaming::sound::decode_scheduler::DecodeScheduler<Error>::run::ha0b5650e36e80c0c
                               at /vendor/kira/src/sound/streaming/sound/decode_scheduler.rs:120:15
  21:     0x55f10929971f - kira::sound::streaming::sound::decode_scheduler::DecodeScheduler<Error>::start::{{closure}}::h8d76de61f9a6d530
                               at /vendor/kira/src/sound/streaming/sound/decode_scheduler.rs:85:10
  22:     0x55f109270e10 - std::sys_common::backtrace::__rust_begin_short_backtrace::ha54d63d75c2749dc
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/sys_common/backtrace.rs:121:18
  23:     0x55f10926cd40 - std::thread::Builder::spawn_unchecked_::{{closure}}::{{closure}}::h35a6626b5833273f
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/thread/mod.rs:558:17
  24:     0x55f109443294 - <core::panic::unwind_safe::AssertUnwindSafe<F> as core::ops::function::FnOnce<()>>::call_once::hfdabcee9c49c59f1
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/panic/unwind_safe.rs:271:9
  25:     0x55f109443110 - std::panicking::try::do_call::hedb9f28a17b1b15a
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panicking.rs:483:40
  26:     0x55f10944321b - __rust_try
  27:     0x55f109442f2c - std::panicking::try::hbb5be7c505a66fc5
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panicking.rs:447:19
  28:     0x55f1092d60b0 - std::panic::catch_unwind::h698223ec4512f974
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/panic.rs:140:14
  29:     0x55f10926c640 - std::thread::Builder::spawn_unchecked_::{{closure}}::h9231232d909805a1
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/thread/mod.rs:557:30
  30:     0x55f1092b83af - core::ops::function::FnOnce::call_once{{vtable.shim}}::hc087fc5fef99e45e
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/core/src/ops/function.rs:250:5
  31:     0x55f1096b4d13 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h9646bd6a135081c9
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/alloc/src/boxed.rs:1988:9
  32:     0x55f1096b4d13 - <alloc::boxed::Box<F,A> as core::ops::function::FnOnce<Args>>::call_once::h180d98f11b902552
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/alloc/src/boxed.rs:1988:9
  33:     0x55f1096b4d13 - std::sys::unix::thread::Thread::new::thread_start::h83489d4028ebb6e1
                               at /rustc/ef982929c0b653436a6ea6892a2a839fba7c8b57/library/std/src/sys/unix/thread.rs:108:17
  34:     0x7fd40599e609 - start_thread
                               at /build/glibc-SzIz7B/glibc-2.31/nptl/pthread_create.c:477:8
  35:     0x7fd40576c133 - clone
                               at /build/glibc-SzIz7B/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
  36:                0x0 - <unknown>
tesselode commented 1 year ago

Can you post a small project to replicate the issue? Preferably with the audio in question?

vdrn commented 1 year ago

While creating the example, I've noticed that it only panics for .ogg files, and not .mp3.

Here's the project: https://github.com/vdrn/kira_streaming_ogg_panics

Edit: also tested with .wav and .flac and they seem to be working fine. So its just .oggs that crash as far as I can tell.

tesselode commented 1 year ago

I can reproduce the issue and am working on a fix.

tesselode commented 1 year ago

I released a new version that makes your ogg work, but I found a couple more issues that I think are bugs in Symphonia, but they may not be. More to come on that.