Open Bug 1711602 Opened 3 years ago Updated 23 days ago

Assertion failure: false, at src/gfx/webrender_bindings/Moz2DImageRenderer.cpp:430

Categories

(Core :: Graphics: WebRender, defect)

defect

Tracking

()

Tracking Status
firefox-esr115 --- affected
firefox90 --- wontfix
firefox119 --- affected

People

(Reporter: tsmith, Unassigned)

References

(Blocks 4 open bugs)

Details

(Keywords: testcase)

Attachments

(3 files)

Attached file testcase.html

Found while fuzzing m-c 20210514-ef13365d8188 (--enable-address-sanitizer --enable-fuzzing)

To help catch this issue ASAN_OPTIONS=max_allocation_size_mb=512 was used.

Assertion failure: false, at /builds/worker/checkouts/gecko/gfx/webrender_bindings/Moz2DImageRenderer.cpp:430

==30777==WARNING: AddressSanitizer failed to allocate 0x288a9b28 bytes
=================================================================
==30777==ERROR: AddressSanitizer: SEGV on unknown address 0x000000000001 (pc 0x7f01f590714d bp 0x7f01dc72cef0 sp 0x7f01dc72bbc0 T34)
==30777==The signal is caused by a WRITE memory access.
==30777==Hint: address points to the zero page.
==30777==WARNING: AddressSanitizer failed to allocate 0x288a9b28 bytes
    #0 0x7f01f590714d in Moz2DRenderCallback /gecko/gfx/webrender_bindings/Moz2DImageRenderer.cpp:430:7
    #1 0x7f01f590714d in wr_moz2d_render_cb /gecko/gfx/webrender_bindings/Moz2DImageRenderer.cpp:471:10
    #2 0x7f0204af6c0f in webrender_bindings::moz2d_renderer::rasterize_blob::_$u7b$$u7b$closure$u7d$$u7d$::heaeeae96183e5da9 /gecko/gfx/webrender_bindings/src/moz2d_renderer.rs:644:16
    #3 0x7f0204af6c0f in webrender_bindings::moz2d_renderer::autoreleasepool::h7813e85171822065 /gecko/gfx/webrender_bindings/src/moz2d_renderer.rs:625:9
    #4 0x7f0204af6c0f in webrender_bindings::moz2d_renderer::rasterize_blob::h018f877d5542471a /gecko/gfx/webrender_bindings/src/moz2d_renderer.rs:642:18
    #5 0x7f0204afd982 in core::ops::function::Fn::call::hd9357ffaf432a4ea /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/ops/function.rs:70:5
    #6 0x7f0204afd982 in core::ops::function::impls::_$LT$impl$u20$core..ops..function..FnMut$LT$A$GT$$u20$for$u20$$RF$F$GT$::call_mut::hd698dfaee0aca97c /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/ops/function.rs:247:13
    #7 0x7f0204afd982 in core::ops::function::impls::_$LT$impl$u20$core..ops..function..FnOnce$LT$A$GT$$u20$for$u20$$RF$mut$u20$F$GT$::call_once::h534bc5f1cf563b68 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/ops/function.rs:280:13
    #8 0x7f0204afd982 in core::option::Option$LT$T$GT$::map::h5e88740866556319 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/option.rs:453:29
    #9 0x7f0204afd982 in _$LT$core..iter..adapters..Map$LT$I$C$F$GT$$u20$as$u20$core..iter..traits..iterator..Iterator$GT$::next::h6eecaa98d154f0d7 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/iter/adapters/mod.rs:924:9
    #10 0x7f0204afd982 in rayon::iter::plumbing::Folder::consume_iter::hec1e668c1f64b16a /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:178:21
    #11 0x7f0204afd982 in _$LT$rayon..iter..map..MapFolder$LT$C$C$F$GT$$u20$as$u20$rayon..iter..plumbing..Folder$LT$T$GT$$GT$::consume_iter::h1aa5be1a4338e718 /gecko/third_party/rust/rayon/src/iter/map.rs:248:21
    #12 0x7f0204afd982 in rayon::iter::plumbing::Producer::fold_with::ha6a9b65db01083f8 /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:110:9
    #13 0x7f0204afd982 in rayon::iter::plumbing::bridge_producer_consumer::helper::hffbf3798f82b15d3 /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:438:13
    #14 0x7f0204affa8e in rayon::iter::plumbing::bridge_producer_consumer::helper::_$u7b$$u7b$closure$u7d$$u7d$::hc6f8ed9018b2aeaf /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:418:21
    #15 0x7f0204affa8e in rayon_core::join::join_context::call_a::_$u7b$$u7b$closure$u7d$$u7d$::he699529ca2739774 /gecko/third_party/rust/rayon-core/src/join/mod.rs:124:17
    #16 0x7f0204affa8e in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h2cb9f4e942c7b12a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:322:9
    #17 0x7f0204affa8e in std::panicking::try::do_call::h996de839d85ee28b /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:381:40
    #18 0x7f0204affa8e in std::panicking::try::ha774027eb742719d /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:345:19
    #19 0x7f0204affa8e in std::panic::catch_unwind::he0ca7fffd4bf8936 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
    #20 0x7f0204affa8e in rayon_core::unwind::halt_unwinding::ha3ad353aa58b89f1 /gecko/third_party/rust/rayon-core/src/unwind.rs:17:5
    #21 0x7f0204affa8e in rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::h93e18a5bfcf0f47b /gecko/third_party/rust/rayon-core/src/join/mod.rs:141:24
    #22 0x7f0204afdf0b in rayon_core::registry::in_worker::h4e0582c1e7b825ec /gecko/third_party/rust/rayon-core/src/registry.rs:879:13
    #23 0x7f0204afdf0b in rayon_core::join::join_context::h25152c906481c6c8 /gecko/third_party/rust/rayon-core/src/join/mod.rs:132:5
    #24 0x7f0204afdf0b in rayon::iter::plumbing::bridge_producer_consumer::helper::hffbf3798f82b15d3 /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:416:47
    #25 0x7f0204affa8e in rayon::iter::plumbing::bridge_producer_consumer::helper::_$u7b$$u7b$closure$u7d$$u7d$::hc6f8ed9018b2aeaf /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:418:21
    #26 0x7f0204affa8e in rayon_core::join::join_context::call_a::_$u7b$$u7b$closure$u7d$$u7d$::he699529ca2739774 /gecko/third_party/rust/rayon-core/src/join/mod.rs:124:17
    #27 0x7f0204affa8e in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h2cb9f4e942c7b12a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:322:9
    #28 0x7f0204affa8e in std::panicking::try::do_call::h996de839d85ee28b /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:381:40
    #29 0x7f0204affa8e in std::panicking::try::ha774027eb742719d /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:345:19
    #30 0x7f0204affa8e in std::panic::catch_unwind::he0ca7fffd4bf8936 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
    #31 0x7f0204affa8e in rayon_core::unwind::halt_unwinding::ha3ad353aa58b89f1 /gecko/third_party/rust/rayon-core/src/unwind.rs:17:5
    #32 0x7f0204affa8e in rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::h93e18a5bfcf0f47b /gecko/third_party/rust/rayon-core/src/join/mod.rs:141:24
    #33 0x7f0204afdf0b in rayon_core::registry::in_worker::h4e0582c1e7b825ec /gecko/third_party/rust/rayon-core/src/registry.rs:879:13
    #34 0x7f0204afdf0b in rayon_core::join::join_context::h25152c906481c6c8 /gecko/third_party/rust/rayon-core/src/join/mod.rs:132:5
    #35 0x7f0204afdf0b in rayon::iter::plumbing::bridge_producer_consumer::helper::hffbf3798f82b15d3 /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:416:47
    #36 0x7f0204affa8e in rayon::iter::plumbing::bridge_producer_consumer::helper::_$u7b$$u7b$closure$u7d$$u7d$::hc6f8ed9018b2aeaf /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:418:21
    #37 0x7f0204affa8e in rayon_core::join::join_context::call_a::_$u7b$$u7b$closure$u7d$$u7d$::he699529ca2739774 /gecko/third_party/rust/rayon-core/src/join/mod.rs:124:17
    #38 0x7f0204affa8e in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h2cb9f4e942c7b12a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:322:9
    #39 0x7f0204affa8e in std::panicking::try::do_call::h996de839d85ee28b /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:381:40
    #40 0x7f0204affa8e in std::panicking::try::ha774027eb742719d /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:345:19
    #41 0x7f0204affa8e in std::panic::catch_unwind::he0ca7fffd4bf8936 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
    #42 0x7f0204affa8e in rayon_core::unwind::halt_unwinding::ha3ad353aa58b89f1 /gecko/third_party/rust/rayon-core/src/unwind.rs:17:5
    #43 0x7f0204affa8e in rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::h93e18a5bfcf0f47b /gecko/third_party/rust/rayon-core/src/join/mod.rs:141:24
    #44 0x7f0204afdf0b in rayon_core::registry::in_worker::h4e0582c1e7b825ec /gecko/third_party/rust/rayon-core/src/registry.rs:879:13
    #45 0x7f0204afdf0b in rayon_core::join::join_context::h25152c906481c6c8 /gecko/third_party/rust/rayon-core/src/join/mod.rs:132:5
    #46 0x7f0204afdf0b in rayon::iter::plumbing::bridge_producer_consumer::helper::hffbf3798f82b15d3 /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:416:47
    #47 0x7f0204affa8e in rayon::iter::plumbing::bridge_producer_consumer::helper::_$u7b$$u7b$closure$u7d$$u7d$::hc6f8ed9018b2aeaf /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:418:21
    #48 0x7f0204affa8e in rayon_core::join::join_context::call_a::_$u7b$$u7b$closure$u7d$$u7d$::he699529ca2739774 /gecko/third_party/rust/rayon-core/src/join/mod.rs:124:17
    #49 0x7f0204affa8e in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h2cb9f4e942c7b12a /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:322:9
    #50 0x7f0204affa8e in std::panicking::try::do_call::h996de839d85ee28b /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:381:40
    #51 0x7f0204affa8e in std::panicking::try::ha774027eb742719d /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:345:19
    #52 0x7f0204affa8e in std::panic::catch_unwind::he0ca7fffd4bf8936 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
    #53 0x7f0204affa8e in rayon_core::unwind::halt_unwinding::ha3ad353aa58b89f1 /gecko/third_party/rust/rayon-core/src/unwind.rs:17:5
    #54 0x7f0204affa8e in rayon_core::join::join_context::_$u7b$$u7b$closure$u7d$$u7d$::h93e18a5bfcf0f47b /gecko/third_party/rust/rayon-core/src/join/mod.rs:141:24
    #55 0x7f0204afdf0b in rayon_core::registry::in_worker::h4e0582c1e7b825ec /gecko/third_party/rust/rayon-core/src/registry.rs:879:13
    #56 0x7f0204afdf0b in rayon_core::join::join_context::h25152c906481c6c8 /gecko/third_party/rust/rayon-core/src/join/mod.rs:132:5
    #57 0x7f0204afdf0b in rayon::iter::plumbing::bridge_producer_consumer::helper::hffbf3798f82b15d3 /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:416:47
    #58 0x7f0204b00967 in rayon::iter::plumbing::bridge_producer_consumer::helper::_$u7b$$u7b$closure$u7d$$u7d$::hbae1a4deb6e0c8b8 /gecko/third_party/rust/rayon/src/iter/plumbing/mod.rs:427:21
    #59 0x7f0204b00967 in rayon_core::join::join_context::call_b::_$u7b$$u7b$closure$u7d$$u7d$::h3ceecd3c3c2dae59 /gecko/third_party/rust/rayon-core/src/join/mod.rs:129:25
    #60 0x7f0204b00967 in _$LT$rayon_core..job..StackJob$LT$L$C$F$C$R$GT$$u20$as$u20$rayon_core..job..Job$GT$::execute::call::_$u7b$$u7b$closure$u7d$$u7d$::hbb76942cb8dc98d7 /gecko/third_party/rust/rayon-core/src/job.rs:113:21
    #61 0x7f0204b00967 in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h8bcdb40b617564ea /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:322:9
    #62 0x7f0204b00967 in std::panicking::try::do_call::h56b5c36c524d12e7 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:381:40
    #63 0x7f0204b00967 in std::panicking::try::hb8efff6857db3a06 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:345:19
    #64 0x7f0204b00967 in std::panic::catch_unwind::h259a6c14c4cba13e /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
    #65 0x7f0204b00967 in rayon_core::unwind::halt_unwinding::h232043ae0e93e1df /gecko/third_party/rust/rayon-core/src/unwind.rs:17:5
    #66 0x7f0204b00967 in _$LT$rayon_core..job..StackJob$LT$L$C$F$C$R$GT$$u20$as$u20$rayon_core..job..Job$GT$::execute::hd8997bb0ce1386fd /gecko/third_party/rust/rayon-core/src/job.rs:119:38
    #67 0x7f0202717f22 in rayon_core::job::JobRef::execute::h84ee64a107ae87f4 /gecko/third_party/rust/rayon-core/src/job.rs:59:9
    #68 0x7f0202717f22 in rayon_core::registry::WorkerThread::execute::h501e5788ff35db61 /gecko/third_party/rust/rayon-core/src/registry.rs:753:9
    #69 0x7f0202717f22 in rayon_core::registry::WorkerThread::wait_until_cold::h2fb7488a109d1a57 /gecko/third_party/rust/rayon-core/src/registry.rs:730:17
    #70 0x7f0202715aac in rayon_core::registry::WorkerThread::wait_until::hf3b852df50792538 /gecko/third_party/rust/rayon-core/src/registry.rs:704:13
    #71 0x7f0202715aac in rayon_core::registry::main_loop::hcbe8a830a7636ee7 /gecko/third_party/rust/rayon-core/src/registry.rs:837:5
    #72 0x7f0202715aac in rayon_core::registry::ThreadBuilder::run::h5f3bf6b0baf7fce1 /gecko/third_party/rust/rayon-core/src/registry.rs:56:18
    #73 0x7f0202713b08 in _$LT$rayon_core..registry..DefaultSpawn$u20$as$u20$rayon_core..registry..ThreadSpawn$GT$::spawn::_$u7b$$u7b$closure$u7d$$u7d$::h2ff7e410b6169672 /gecko/third_party/rust/rayon-core/src/registry.rs:101:20
    #74 0x7f0202713b08 in std::sys_common::backtrace::__rust_begin_short_backtrace::h6c192e4720b1c0ec /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/sys_common/backtrace.rs:125:18
    #75 0x7f02027136b6 in std::thread::Builder::spawn_unchecked::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h112104375459f419 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/thread/mod.rs:474:17
    #76 0x7f02027136b6 in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h050b89bc87d55ee9 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:322:9
    #77 0x7f02027136b6 in std::panicking::try::do_call::hb1c9c62553d93da2 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:381:40
    #78 0x7f02027136b6 in std::panicking::try::h3b38abeb6d02d5a0 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panicking.rs:345:19
    #79 0x7f02027136b6 in std::panic::catch_unwind::hf4ee6c3d569ac886 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/panic.rs:396:14
    #80 0x7f02027136b6 in std::thread::Builder::spawn_unchecked::_$u7b$$u7b$closure$u7d$$u7d$::h36781edff253ac03 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/std/src/thread/mod.rs:473:30
    #81 0x7f02027136b6 in core::ops::function::FnOnce::call_once$u7b$$u7b$vtable.shim$u7d$$u7d$::h15b7cc511154e052 /builds/worker/fetches/rustc/lib/rustlib/src/rust/library/core/src/ops/function.rs:227:5
    #82 0x7f0202c31564 in _$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..ops..function..FnOnce$LT$Args$GT$$GT$::call_once::h9e7afb7a0a438236 /rustc/74f7e32f43b5fb0f83896d124566d8242eb786b1/library/alloc/src/boxed.rs:1307:9
    #83 0x7f0202c31564 in _$LT$alloc..boxed..Box$LT$F$C$A$GT$$u20$as$u20$core..ops..function..FnOnce$LT$Args$GT$$GT$::call_once::h70c646c4271337a1 /rustc/74f7e32f43b5fb0f83896d124566d8242eb786b1/library/alloc/src/boxed.rs:1307:9
    #84 0x7f0202c31564 in std::sys::unix::thread::Thread::new::thread_start::h35d2b8d36f210d02 /rustc/74f7e32f43b5fb0f83896d124566d8242eb786b1/library/std/src/sys/unix/thread.rs:71:17
    #85 0x7f021469f608 in start_thread /build/glibc-eX1tMB/glibc-2.31/nptl/pthread_create.c:477:8
    #86 0x7f0214268292 in clone /build/glibc-eX1tMB/glibc-2.31/misc/../sysdeps/unix/sysv/linux/x86_64/clone.S:95
Flags: in-testsuite?

A Pernosco session is available here: https://pernos.co/debug/J6HGoQ_-J8wt8xCObZobGA/index.html

Blocks: oom-fuzz

[deleted]

[deleted]

Okay, now that I've got my ASAN build done properly, I can reproduce this in ef13365d8188 on Fedora 33.

And I can reproduce with the attached .mozconfig file on b64759becddf (m-c Tue Oct 5).

Severity: -- → S3
Flags: needinfo?(dmalyshau)
Blocks: 1744136
Flags: needinfo?(dmalyshau)

There has been a sustained spike in reports of this issue from fuzzers since Aug 28 2023.

Blocks: wr-fuzz
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: