Open Bug 1930011 Opened 1 month ago Updated 25 days ago

Program terminated with signal SIGXCPU, CPU time limit exceeded.

Categories

(Core :: Audio/Video, defect, P3)

Firefox 132
defect

Tracking

()

UNCONFIRMED

People

(Reporter: braiamp, Unassigned, NeedInfo)

Details

User Agent: Mozilla/5.0 (X11; Linux x86_64; rv:132.0) Gecko/20100101 Firefox/132.0

Steps to reproduce:

Playing video while multitasking. Several tabs opened.

Actual results:

Firefox stopped responding and then crashed.

Expected results:

Maybe kill the child process.

The Bugbug bot thinks this bug should belong to the 'Core::Audio/Video: Playback' component, and is moving the bug to that component. Please correct in case you think the bot is wrong.

Component: Untriaged → Audio/Video: Playback
Product: Firefox → Core

Ok, the form was unhelpful, since it didn't ask for any details.

Here's the complete backtrace:

#0  core::intrinsics::copy_nonoverlapping<u8> (dst=0x7ef95f810000, count=1, src=<optimized out>) at /usr/src/rustc-1.82.0/library/core/src/intrinsics.rs:3325
#1  alloc::vec::Vec<u8, alloc::alloc::Global>::append_elements<u8, alloc::alloc::Global> (self=0x7efd52ed6830, other=...) at /usr/src/rustc-1.82.0/library/alloc/src/vec/mod.rs:2157
#2  alloc::vec::spec_extend::{impl#4}::spec_extend<u8, alloc::alloc::Global> (self=0x7efd52ed6830, iterator=...) at /usr/src/rustc-1.82.0/library/alloc/src/vec/spec_extend.rs:55
#3  alloc::vec::Vec<u8, alloc::alloc::Global>::extend_from_slice<u8, alloc::alloc::Global> (self=0x7efd52ed6830, other=...) at /usr/src/rustc-1.82.0/library/alloc/src/vec/mod.rs:2606
#4  std::io::impls::{impl#11}::write_all<alloc::alloc::Global> (self=0x7efd52ed6830, buf=...) at /usr/src/rustc-1.82.0/library/std/src/io/impls.rs:432
#5  std::io::impls::{impl#1}::write_all<alloc::vec::Vec<u8, alloc::alloc::Global>> (buf=..., self=<optimized out>) at /usr/src/rustc-1.82.0/library/std/src/io/impls.rs:77
#6  bincode::byteorder::WriteBytesExt::write_u8<&mut alloc::vec::Vec<u8, alloc::alloc::Global>> (n=0, self=<optimized out>) at ./third_party/rust/bincode/src/byteorder.rs:304
#7  bincode::ser::Serializer<&mut alloc::vec::Vec<u8, alloc::alloc::Global>, bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>>::serialize_byte<&mut alloc::vec::Vec<u8, alloc::alloc::Global>, bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>> (v=0, self=<optimized out>) at ./third_party/rust/bincode/src/ser/mod.rs:45
#8  bincode::config::int::VarintEncoding::serialize_varint<&mut alloc::vec::Vec<u8, alloc::alloc::Global>, bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>> (n=0, ser=<optimized out>) at ./third_party/rust/bincode/src/config/int.rs:228
#9  bincode::config::int::{impl#2}::serialize_u32<&mut alloc::vec::Vec<u8, alloc::alloc::Global>, bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>> (val=0, ser=<optimized out>) at ./third_party/rust/bincode/src/config/int.rs:493
#10 bincode::ser::{impl#1}::serialize_struct_variant<&mut alloc::vec::Vec<u8, alloc::alloc::Global>, bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>> (_name=..., variant_index=0, _variant=..., _len=3, self=<optimized out>)
    at ./third_party/rust/bincode/src/ser/mod.rs:195
#11 audioipc2::messages::_::{impl#0}::serialize<&mut bincode::ser::Serializer<&mut alloc::vec::Vec<u8, alloc::alloc::Global>, bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>>>
    (self=<error reading variable: Cannot access memory at address 0x0>, __serializer=<optimized out>) at ./third_party/rust/audioipc2/src/messages.rs:275
#12 bincode::internal::serialize_into<&mut alloc::vec::Vec<u8, alloc::alloc::Global>, audioipc2::messages::CallbackReq, bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>>
    (writer=0x7efd52ed6830, options=..., value=<error reading variable: Cannot access memory at address 0x0>) at ./third_party/rust/bincode/src/internal.rs:22
#13 bincode::config::Options::serialize_into<bincode::config::WithOtherLimit<bincode::config::DefaultOptions, bincode::config::limit::Bounded>, &mut alloc::vec::Vec<u8, alloc::alloc::Global>, audioipc2::messages::CallbackReq> (w=0x7efd52ed6830, t=<error reading variable: Cannot access memory at address 0x0>)
    at ./third_party/rust/bincode/src/config/mod.rs:194
#14 audioipc2::codec::{impl#2}::encode<audioipc2::messages::CallbackReq, audioipc2::messages::CallbackResp> (self=0x7efd52ed6830, item=..., buf=0x7efec1e68128) at ./third_party/rust/audioipc2/src/codec.rs:185
#15 audioipc2::ipccore::{impl#5}::flush_outbound<audioipc2::rpccore::ClientHandler<audioipc2_server::server::CallbackClient>> (self=0x7efd52ed6830, outbound=0x7efec1e68108) at ./third_party/rust/audioipc2/src/ipccore.rs:649
#16 0x00007eff2e3c27b2 in audioipc2::ipccore::Connection::flush_outbound (self=0x7efec1e680c8) at src/ipccore.rs:514
#17 audioipc2::ipccore::Connection::handle_wake (self=0x7efec1e680c8, registry=0x7efef2a93cf8) at src/ipccore.rs:448
#18 audioipc2::ipccore::EventLoop::poll (self=0x7efef2a93c90) at src/ipccore.rs:264
#19 0x00007eff2e3dd8a6 in audioipc2::ipccore::{impl#7}::new::{closure#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}> () at ./third_party/rust/audioipc2/src/ipccore.rs:706
#20 std::sys::backtrace::__rust_begin_short_backtrace<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>> (f=...)
    at /usr/src/rustc-1.82.0/library/std/src/sys/backtrace.rs:154
#21 0x00007eff2e3dd67b in std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure#0}<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>> ()
    at /usr/src/rustc-1.82.0/library/std/src/thread/mod.rs:522
#22 core::panic::unwind_safe::{impl#23}::call_once<core::result::Result<(), std::io::error::Error>, std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>>> (self=<error reading variable: Cannot access memory at address 0x80>) at /usr/src/rustc-1.82.0/library/core/src/panic/unwind_safe.rs:272
#23 std::panicking::try::do_call<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>>>, core::result::Result<(), std::io::error::Error>> (data=<optimized out>) at /usr/src/rustc-1.82.0/library/std/src/panicking.rs:554
#24 std::panicking::try<core::result::Result<(), std::io::error::Error>, core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>>>> (f=...) at /usr/src/rustc-1.82.0/library/std/src/panicking.rs:518
#25 std::panic::catch_unwind<core::panic::unwind_safe::AssertUnwindSafe<std::thread::{impl#0}::spawn_unchecked_::{closure#1}::{closure_env#0}<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>>>, core::result::Result<(), std::io::error::Error>> (f=...) at /usr/src/rustc-1.82.0/library/std/src/panic.rs:345
#26 std::thread::{impl#0}::spawn_unchecked_::{closure#1}<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>> ()
    at /usr/src/rustc-1.82.0/library/std/src/thread/mod.rs:521
#27 core::ops::function::FnOnce::call_once<std::thread::{impl#0}::spawn_unchecked_::{closure_env#1}<audioipc2::ipccore::{impl#7}::new::{closure_env#0}<audioipc2_server::init_threads::{closure_env#3}, audioipc2_server::init_threads::{closure_env#4}>, core::result::Result<(), std::io::error::Error>>, ()> ()
    at /usr/src/rustc-1.82.0/library/core/src/ops/function.rs:250
#28 0x00007eff2ee38adb in alloc::boxed::{impl#48}::call_once<(), dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global> (self=..., args=()) at alloc/src/boxed.rs:2231
#29 alloc::boxed::{impl#48}::call_once<(), alloc::boxed::Box<dyn core::ops::function::FnOnce<(), Output=()>, alloc::alloc::Global>, alloc::alloc::Global> (self=0x7efec3c984d0, args=()) at alloc/src/boxed.rs:2231
#30 std::sys::pal::unix::thread::{impl#2}::new::thread_start (main=main@entry=0x7efec3c984d0) at std/src/sys/pal/unix/thread.rs:105
#31 0x000055fd004003f5 in set_alt_signal_stack_and_start (params=<optimized out>) at ./mozglue/interposers/pthread_create_interposer.cpp:81
#32 0x00007eff35bfa112 in start_thread (arg=<optimized out>) at ./nptl/pthread_create.c:447
#33 0x00007eff35c788f8 in __GI___clone3 () at ../sysdeps/unix/sysv/linux/x86_64/clone3.S:78

The signature for the crash is this:

Program terminated with signal SIGXCPU, CPU time limit exceeded.
#0 core::intrinsics::copy_nonoverlapping<u8> (dst=0x7ef95f810000, count=1, src=<optimized out>) at /usr/src/rustc-1.82.0/library/core/src/intrinsics.rs:3325

This is a RT kernel using Debian Linux RT (6.11.5-rt-amd64) patches. I'm not uploading the full core dump as it's half Gb.

Component: Audio/Video: Playback → Untriaged
Product: Core → Firefox

Do you see any crash signature in about:crashes that you could share?

Flags: needinfo?(braiamp)

Nope, as https://bugzilla.mozilla.org/show_bug.cgi?id=1641761#c7 explains, the main browser process doesn't seem to have a SIGXCPU handler. The latest crash shown in about:crashes is https://crash-stats.mozilla.org/report/index/a04fc7ab-9fb7-41d0-8412-2eb3b0241107 which doesn't seem to fit, and also occurred the day before.

Flags: needinfo?(braiamp)

Trying to move to Core::Audio/Video, given the references to audioipc2.

Component: Untriaged → Audio/Video
Product: Firefox → Core

:kinetik, would you have any thoughts here?

Severity: -- → S3
Flags: needinfo?(kinetik)
Priority: -- → P3
You need to log in before you can comment on or make changes to this bug.