Skip to content

Panic when probing broken mp3 file #439

@ARoese

Description

@ARoese

When probing a specific invalid MP3 file with enable_gapless set to true, a panic occurs. I encountered this error when using rodio to play the mp3, but since the panic occurred in Symphonia, I made a minimum reproduction to post the issue here.

Sample Code

use std::fs::File;
use symphonia::core::formats::FormatOptions;
use symphonia::core::io::MediaSourceStream;
use symphonia::default;

fn main() {
    let probe = default::get_probe();
    let mss = MediaSourceStream::new(
        Box::new(File::open("bad_mp3.mp3").expect("open audio file")),
        Default::default()
    );
    let pr = probe.format(&Default::default(), mss, &FormatOptions {
        enable_gapless:true,
        ..Default::default()
    }, &Default::default()).expect("probe failed");
}

Sample mp3:
bad_mp3.mp3

Unwind

thread 'main' (2861667) panicked at /home/atomr/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/symphonia-bundle-mp3-0.5.5/src/demuxer.rs:128:42:
attempt to subtract with overflow
stack backtrace:
   0:     0x6319d1137b02 - std::backtrace_rs::backtrace::libunwind::trace::hd57362190422746d
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/../../backtrace/src/backtrace/libunwind.rs:117:9
   1:     0x6319d1137b02 - std::backtrace_rs::backtrace::trace_unsynchronized::he61be86f5e8dfc7b
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/../../backtrace/src/backtrace/mod.rs:66:14
   2:     0x6319d1137b02 - std::sys::backtrace::_print_fmt::hd233ea33e70c29e2
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/sys/backtrace.rs:66:9
   3:     0x6319d1137b02 - <std::sys::backtrace::BacktraceLock::print::DisplayBacktrace as core::fmt::Display>::fmt::h718e2d17a1928e63
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/sys/backtrace.rs:39:26
   4:     0x6319d1147fdf - core::fmt::rt::Argument::fmt::hdeda3281325c4830
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/fmt/rt.rs:173:76
   5:     0x6319d1147fdf - core::fmt::write::h1d2246b072ea91eb
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/fmt/mod.rs:1469:25
   6:     0x6319d11156b3 - std::io::default_write_fmt::h4ebfe695aebd90ac
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/io/mod.rs:639:11
   7:     0x6319d11156b3 - std::io::Write::write_fmt::haf55272405c09d9b
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/io/mod.rs:1954:13
   8:     0x6319d111adb2 - std::sys::backtrace::BacktraceLock::print::h61c3bd81a9458a03
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/sys/backtrace.rs:42:9
   9:     0x6319d111c81c - std::panicking::default_hook::{{closure}}::haf1ffb5d1e33a97f
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:301:27
  10:     0x6319d111c676 - std::panicking::default_hook::hc32245deb6eaa988
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:328:9
  11:     0x6319d111cdf5 - std::panicking::panic_with_hook::h43adc00fd0e494cb
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:834:13
  12:     0x6319d111cc56 - std::panicking::panic_handler::{{closure}}::h44391079756da3e7
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:700:13
  13:     0x6319d111aef9 - std::sys::backtrace::__rust_end_short_backtrace::h934e1568393e5b8f
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/sys/backtrace.rs:174:18
  14:     0x6319d1109f0d - __rustc[d9b87f19e823c0ef]::rust_begin_unwind
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:698:5
  15:     0x6319d114bd10 - core::panicking::panic_fmt::h62031895f6e012da
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/panicking.rs:80:14
  16:     0x6319d114b8c7 - core::panicking::panic_const::panic_const_sub_overflow::heaac45fefd120943
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/panicking.rs:180:17
  17:     0x6319d1075ad3 - <symphonia_bundle_mp3::demuxer::MpaReader as symphonia_core::formats::FormatReader>::try_new::haa8cc10d5392dcb7
                               at /home/atomr/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/symphonia-bundle-mp3-0.5.5/src/demuxer.rs:128:42
  18:     0x6319d10764ee - <symphonia_bundle_mp3::demuxer::MpaReader as symphonia_core::probe::QueryDescriptor>::query::{{closure}}::h8618c1f931333fde
                               at /home/atomr/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/symphonia-core-0.5.5/src/probe.rs:360:65
  19:     0x6319d1067cb0 - core::ops::function::FnOnce::call_once::h44e9ac6c9ba447be
                               at /home/atomr/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  20:     0x6319d11024b8 - symphonia_core::probe::Probe::format::h443e241fc9adcd82
                               at /home/atomr/.cargo/registry/src/index.crates.io-1949cf8c6b5b557f/symphonia-core-0.5.5/src/probe.rs:326:34
  21:     0x6319d0f71c19 - profileTest::main::hd77074c68507a100
                               at /home/atomr/Documents/code/RustProjects/profileTest/src/main.rs:12:20
  22:     0x6319d0f72c0b - core::ops::function::FnOnce::call_once::h6744bff2907e3f34
                               at /home/atomr/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/core/src/ops/function.rs:250:5
  23:     0x6319d0f7192e - std::sys::backtrace::__rust_begin_short_backtrace::h53f783c6046259cf
                               at /home/atomr/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/sys/backtrace.rs:158:18
  24:     0x6319d0f72221 - std::rt::lang_start::{{closure}}::h50b223a6835adf87
                               at /home/atomr/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:206:18
  25:     0x6319d1116800 - core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &F>::call_once::hef272b0bbce060cb
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/core/src/ops/function.rs:287:21
  26:     0x6319d1116800 - std::panicking::catch_unwind::do_call::hb8c4cc43eed9a08c
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
  27:     0x6319d1116800 - std::panicking::catch_unwind::h2729a121c7344441
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
  28:     0x6319d1116800 - std::panic::catch_unwind::h8930b2483deb2063
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
  29:     0x6319d1116800 - std::rt::lang_start_internal::{{closure}}::hada379c5dd834c6b
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:175:24
  30:     0x6319d1116800 - std::panicking::catch_unwind::do_call::hc3ea95eb90ebfdc8
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:590:40
  31:     0x6319d1116800 - std::panicking::catch_unwind::h0b97aa6eb277c112
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panicking.rs:553:19
  32:     0x6319d1116800 - std::panic::catch_unwind::h2db34aa2a1d62ae5
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/panic.rs:359:14
  33:     0x6319d1116800 - std::rt::lang_start_internal::h00c7908c7c2f92b8
                               at /rustc/ded5c06cf21d2b93bffd5d884aa6e96934ee4234/library/std/src/rt.rs:171:5
  34:     0x6319d0f72207 - std::rt::lang_start::h4ffefa828a54d767
                               at /home/atomr/.rustup/toolchains/stable-x86_64-unknown-linux-gnu/lib/rustlib/src/rust/library/std/src/rt.rs:205:5
  35:     0x6319d0f71d4e - main
  36:     0x7b0ffd02a575 - __libc_start_call_main
                               at ./csu/../sysdeps/nptl/libc_start_call_main.h:58:16
  37:     0x7b0ffd02a628 - __libc_start_main_impl
                               at ./csu/../csu/libc-start.c:360:3
  38:     0x6319d0f715d5 - _start
  39:                0x0 - <unknown>

Info

Package Versions

[dependencies]
symphonia = "0.5.5"
symphonia-bundle-mp3 = "0.5.5"

General system info

Operating System: Kubuntu 25.10
KDE Plasma Version: 6.4.5
KDE Frameworks Version: 6.17.0
Qt Version: 6.9.2
Kernel Version: 6.17.0-8-generic (64-bit)
Graphics Platform: Wayland
Processors: 16 × AMD Ryzen 7 3700X 8-Core Processor
Memory: 96 GiB of RAM (94.2 GiB usable)
Graphics Processor: NVIDIA GeForce RTX 3060

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions