Closed Bug 1683217 Opened 5 years ago Closed 5 years ago

Crash in [@ webrender::screen_capture::AsyncScreenshotGrabber::get_screenshot] while profiling

Categories

(Core :: Graphics: WebRender, defect)

defect

Tracking

()

RESOLVED FIXED
86 Branch
Tracking Status
firefox-esr78 --- unaffected
firefox84 --- wontfix
firefox85 --- wontfix
firefox86 --- fixed

People

(Reporter: mccr8, Assigned: beth)

References

Details

(Keywords: crash)

Crash Data

Attachments

(1 file)

Crash report: https://crash-stats.mozilla.org/report/index/89088588-70fa-4ef8-9534-a24f10201216

MOZ_CRASH Reason: called `Option::unwrap()` on a `None` value

Top 10 frames of crashing thread:

0 libxul.so RustMozCrash mozglue/static/rust/wrappers.cpp:17
1 libxul.so mozglue_static::panic_hook mozglue/static/rust/lib.rs:89
2 libxul.so core::ops::function::Fn::call /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/ops/function.rs:70
3 libxul.so std::panicking::rust_panic_with_hook library/std/src/panicking.rs:581
4 libxul.so std::panicking::begin_panic_handler::{{closure}} library/std/src/panicking.rs:484
5 libxul.so std::sys_common::backtrace::__rust_end_short_backtrace library/std/src/sys_common/backtrace.rs:153
6 libxul.so rust_begin_unwind library/std/src/panicking.rs:483
7 libxul.so core::panicking::panic_fmt library/core/src/panicking.rs:85
8 libxul.so core::panicking::panic library/core/src/panicking.rs:50
9 libxul.so webrender::screen_capture::AsyncScreenshotGrabber::get_screenshot gfx/wr/webrender/src/screen_capture.rs:121

user comments: " when trying to catch a performance profiles while webrender is on and scale is 125%" and "while profiling on firefox"

Crash while profiling reported in bug 1682135.

Severity: -- → S3
See Also: → 1682135

Better stack:

core::option::Option<T>::unwrap
/builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/option.rs:383
euclid::size::Size2D<T,U>::cast
/builds/worker/checkouts/gecko/third_party/rust/euclid/src/size.rs:285
euclid::size::Size2D<T,U>::to_i32
/builds/worker/checkouts/gecko/third_party/rust/euclid/src/size.rs:351
webrender::screen_capture::AsyncScreenshotGrabber::get_screenshot
/builds/worker/checkouts/gecko/gfx/wr/webrender/src/screen_capture.rs:121

So (window_rect.size.to_f32() * scale).round() is not an integer.
Maybe there is divide by zero in the computation of scale? If window_rect were zero-sized, this could happen.

Barret, could you take a look?

Flags: needinfo?(brennie)

yeah it looks like we're dividing by zero here, ending up with infinity, and not being able to stuff that into an i32. We should probably bail before way before here if we are going to be recording a 0-sized window and maybe assert here that scale is not infinite.

Flags: needinfo?(brennie)
Assignee: nobody → brennie
Pushed by brennie@mozilla.com: https://hg.mozilla.org/integration/autoland/rev/3c4f4a60fa40 Require non-zero window size for profiler screenshots in WebRender r=mstange
Status: NEW → RESOLVED
Closed: 5 years ago
Resolution: --- → FIXED
Target Milestone: --- → 86 Branch
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: