New issue
Advanced search Search tips
Note: Color blocks (like or ) mean that a user may not be available. Tooltip shows the reason.

Issue 922851 link

Starred by 1 user

Issue metadata

Status: Assigned
Owner:
Cc:
Components:
EstimatedDays: ----
NextAction: ----
OS: Linux , Fuchsia
Pri: 1
Type: Bug



Sign in to add a comment

DCHECK failures in FulfillPromiseTexture when vulkan is enabled

Project Member Reported by spang@chromium.org, Jan 17 (6 days ago)

Issue description

Since https://skia-review.googlesource.com/c/183383 I'm seeing frequent DCHECK failures on the vulkan path. It occurs reproducible after a few seconds on google.com

Repro steps:
 (0) gn gen out/linux_rel_dcheck --args='is_debug=false dcheck_always_on=true use_goma=true'
 (1) ninja -C out/linux_rel_dcheck content_shell -j1000 -k50 -l32
 (2) ./out/linux_rel_dcheck/content_shell --enable-features=VizDisplayCompositor,UseSkiaRenderer,UseSkiaDeferredDisplayList,UiGpuRasterization --enable-oop-rasterization --enable-gpu-rasterization --enable-raster-to-sk-image --use-raster-context-provider --enable-vulkan

[58073:58073:0116/211452.346665:FATAL:skia_output_surface_impl_on_gpu.cc(423)] Check failed: !*shared_image_out.
#0 0x7f693ee967ff base::debug::StackTrace::StackTrace()
#1 0x7f693edb7e8a logging::LogMessage::~LogMessage()
#2 0x7f69348cf170 viz::SkiaOutputSurfaceImplOnGpu::FulfillPromiseTexture()
#3 0x7f69348ca41f viz::SkiaOutputSurfaceImpl::PromiseTextureHelper::Fulfill()
#4 0x7f693e9a2f65 wrap_legacy()::$_4::__invoke()
#5 0x7f693e828f61 std::__Cr::__function::__policy_invoker<>::__call_impl<>()
#6 0x7f693e73d964 GrSurfaceProxyPriv::doLazyInstantiation()
#7 0x7f693e716301 GrResourceAllocator::addInterval()
#8 0x7f693e793809 (anonymous namespace)::TextureOp::visitProxies()
#9 0x7f693e714c7e GrRenderTargetOpList::gatherProxyIntervals()
#10 0x7f693e6de447 GrDrawingManager::flush()
#11 0x7f693e6d31ee GrContext::flush()
#12 0x7f69348cd84c viz::SkiaOutputSurfaceImplOnGpu::FinishPaintCurrentFrame()
#13 0x7f69348caa2a base::internal::Invoker<>::RunOnce()
#14 0x7f693c126414 gpu::Scheduler::RunNextTask()
#15 0x7f693c129204 base::internal::Invoker<>::RunOnce()
#16 0x7f693ed99a79 base::debug::TaskAnnotator::RunTask()
#17 0x7f693edc709f base::MessageLoopImpl::RunTask()
#18 0x7f693edc7842 base::MessageLoopImpl::DoWork()
#19 0x7f693edca22f base::(anonymous namespace)::WorkSourceDispatch()
#20 0x7f6933197fc7 g_main_context_dispatch
#21 0x7f6933198200 <unknown>
#22 0x7f693319828c g_main_context_iteration
#23 0x7f693edc9f62 base::MessagePumpGlib::Run()
#24 0x7f693edc6b75 base::MessageLoopImpl::Run()
#25 0x7f693edf9e30 base::RunLoop::Run()
#26 0x7f693ccc0ba4 content::GpuMain()
#27 0x7f693dd3e0fe content::ContentMainRunnerImpl::Run()
#28 0x7f6931bade86 service_manager::Main()
#29 0x7f693dd3c2f1 content::ContentMain()
#30 0x562a363c016b main
#31 0x7f69338af2b1 __libc_start_main
#32 0x562a363c002a _start

 

Comment 1 by bsalo...@google.com, Jan 17 (5 days ago)

Cc: robertph...@google.com

Comment 2 by penghuang@chromium.org, Jan 17 (5 days ago)

Cc: egdaniel@chromium.org
With Vulkan, I heard Skia may not call fulfill and release in pair for every flush. It can can fulfill in one flush, but the release callback will be called by the next flush. It can trigger this crash.

Please try https://chromium-review.googlesource.com/c/chromium/src/+/1413338
It may address this issue.

Comment 3 by bsalo...@google.com, Jan 17 (5 days ago)

I'm running with that patch and am hitting a Skia assert that we're releasing a promise image texture twice without an intervening fulfill.

Applying https://chromium-review.googlesource.com/c/chromium/src/+/1403180/17 seems to fix it. But that may just be covering up a problem so I'm investigating to see if there is an underlying bug in Skia.

Comment 4 by bsalo...@google.com, Jan 17 (5 days ago)

It's definitely a bug in Skia that we double fulfill and then double release a promise image texture. Landing https://chromium-review.googlesource.com/c/chromium/src/+/1403180/17 will make this way less likely to occur while I work on a real fix.

Sign in to add a comment