ASSERTION FAILED: m_realizedFont: /third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp(271) |
||||
Issue descriptionSee this today for this URL: https://sound.io/latency/ I build on Mac and use Debug mode. Chromium 52.0.2710.0 (Developer Build) (64-bit) Revision c1c48b4f6dd9da34d43b0f2a793a394457e8e8fa-refs/heads/master@{#387559} OS Mac OS X Blink 537.36 (@c1c48b4f6dd9da34d43b0f2a793a394457e8e8fa) JavaScript V8 5.2.41 ASSERTION FAILED: m_realizedFont ../../third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp(271) : const blink::Font &blink::CanvasRenderingContext2DState::font() const 1 0x1294e355d blink::CanvasRenderingContext2DState::font() const 2 0x1294c6f7e blink::CanvasRenderingContext2D::accessFont() 3 0x1294c6e78 blink::CanvasRenderingContext2D::stateHasFilter() 4 0x1294c6fda non-virtual thunk to blink::CanvasRenderingContext2D::stateHasFilter() 5 0x1294adfb5 bool blink::BaseRenderingContext2D::draw<blink::BaseRenderingContext2D::drawPathInternal(blink::Path const&, blink::CanvasRenderingContext2DState::PaintType, SkPath::FillType)::$_0, blink::BaseRenderingContext2D::drawPathInternal(blink::Path const&, blink::CanvasRenderingContext2DState::PaintType, SkPath::FillType)::$_1>(blink::BaseRenderingContext2D::drawPathInternal(blink::Path const&, blink::CanvasRenderingContext2DState::PaintType, SkPath::FillType)::$_0 const&, blink::BaseRenderingContext2D::drawPathInternal(blink::Path const&, blink::CanvasRenderingContext2DState::PaintType, SkPath::FillType)::$_1 const&, SkRect const&, blink::CanvasRenderingContext2DState::PaintType, blink::CanvasRenderingContext2DState::ImageType) 6 0x1294adc1c blink::BaseRenderingContext2D::drawPathInternal(blink::Path const&, blink::CanvasRenderingContext2DState::PaintType, SkPath::FillType) 7 0x1294ae5e0 blink::BaseRenderingContext2D::stroke() 8 0x129f0e215 blink::CanvasRenderingContext2DV8Internal::stroke1Method(v8::FunctionCallbackInfo<v8::Value> const&) 9 0x129f0e0f4 blink::CanvasRenderingContext2DV8Internal::strokeMethod(v8::FunctionCallbackInfo<v8::Value> const&) 10 0x129f04293 blink::CanvasRenderingContext2DV8Internal::strokeMethodCallback(v8::FunctionCallbackInfo<v8::Value> const&) 11 0x1276f35db v8::internal::FunctionCallbackArguments::Call(void (*)(v8::FunctionCallbackInfo<v8::Value> const&)) 12 0x12774de7a v8::internal::MaybeHandle<v8::internal::Object> v8::internal::(anonymous namespace)::HandleApiCallHelper<false>(v8::internal::Isolate*, v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>) 13 0x127786c59 v8::internal::Builtin_Impl_HandleApiCall(v8::internal::(anonymous namespace)::BuiltinArguments<(v8::internal::BuiltinExtraArguments)1>, v8::internal::Isolate*) 14 0x12775a1be v8::internal::Builtin_HandleApiCall(int, v8::internal::Object**, v8::internal::Isolate*) 15 0x350b426093e7 Received signal 11 SEGV_MAPERR 0000fbadbeef [0x0001172da2df] [0x0001172da483] [0x0001172da237] [0x7fff9005852a] [0x6f6d2f656372756f] [0x0001294c6f7e] [0x0001294c6e78] [0x0001294c6fda] [0x0001294adfb5] [0x0001294adc1c] [0x0001294ae5e0] [0x000129f0e215] [0x000129f0e0f4] [0x000129f04293] [0x0001276f35db] [0x00012774de7a] [0x000127786c59] [0x00012775a1be] [0x350b426093e7] [end of stack trace]
,
Apr 18 2016
,
Apr 19 2016
The assertion is no longer failing on this particular page after https://codereview.chromium.org/1886063002/. But that just postpones the problem until either setFilter is called, or we try to construct a filter when drawing. The real problems are that for frameless documents: 1) We cannot construct a StyleResolver (see issue 343801 for context), so we cannot call accessFont() in CanvasRenderingContext2D::snapshotStateForFilter. 2) We cannot construct a StyleResolverState (which we need in order to build the filter in CanvasRenderingContext2DState::getFilter) since that constructs a FontBuilder, and FontBuilder's constructor asserts that the document has a frame. For now, I think we should follow the approach of CanvasRenderingContext2D::setFont, and skip filter building for frameless documents. We'll need a better solution for OffscreenCanvas (perhaps refactoring the style code so we're still able to construct filters that don't depend on font size in this situation). Here's an example that triggers this issue. <script> var htmlDoc = document.implementation.createHTMLDocument('', '', null); var canvas = htmlDoc.createElement('canvas'); var ctx = canvas.getContext('2d'); ctx.filter = 'drop-shadow(10px 10px black)'; ctx.fillRect(25, 25, 50, 40); </script>
,
Apr 20 2016
The following revision refers to this bug: https://chromium.googlesource.com/chromium/src.git/+/68c4df27a19afa05a8743ad653017b009cf79f0d commit 68c4df27a19afa05a8743ad653017b009cf79f0d Author: ajuma <ajuma@chromium.org> Date: Wed Apr 20 23:21:46 2016 Skip canvas filter construction in frameless documents StyleResolver (used for building the font that gets used during filter construction) and StyleResolverState (used for filter construction) both currently assume the existence of a frame. BUG= 603830 Review URL: https://codereview.chromium.org/1903613002 Cr-Commit-Position: refs/heads/master@{#388587} [add] https://crrev.com/68c4df27a19afa05a8743ad653017b009cf79f0d/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-frameless-document-expected.txt [add] https://crrev.com/68c4df27a19afa05a8743ad653017b009cf79f0d/third_party/WebKit/LayoutTests/fast/canvas/canvas-filter-frameless-document.html [modify] https://crrev.com/68c4df27a19afa05a8743ad653017b009cf79f0d/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2D.cpp [modify] https://crrev.com/68c4df27a19afa05a8743ad653017b009cf79f0d/third_party/WebKit/Source/modules/canvas2d/CanvasRenderingContext2DState.cpp
,
Apr 20 2016
|
||||
►
Sign in to add a comment |
||||
Comment 1 by erikc...@chromium.org
, Apr 18 2016Components: Blink>Canvas