at SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) (SkCanvas.cpp:2853)
at SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) (SkCanvas.cpp:2838)
at SkCanvas::drawPicture(SkPicture SkCanvas::drawPicture(SkPicture const*) (SkCanvas.h:1900)
at SkCanvas::drawPicture(sk_sp<SkPicture> SkCanvas::drawPicture(sk_sp<SkPicture> const&) (SkCanvas.h:1912)
at EmBindInit_Skia::EmBindInit_Skia()::$_36::operator()(SkCanvas&, sk_sp<SkPicture> const&) EmBindInit_Skia::EmBindInit_Skia()::$_36::operator()(SkCanvas&, sk_sp<SkPicture> const&) const (canvaskit_bindings.cpp:1376)
at EmBindInit_Skia::EmBindInit_Skia()::$_36::__invoke(SkCanvas&, sk_sp<SkPicture> EmBindInit_Skia::EmBindInit_Skia()::$_36::__invoke(SkCanvas&, sk_sp<SkPicture> const&) (canvaskit_bindings.cpp:1374)
at emscripten::internal::FunctionInvoker<void (*)(SkCanvas&, sk_sp<SkPicture> const&), void, SkCanvas&, sk_sp<SkPicture> const&>::invoke(void (**)(SkCanvas&, sk_sp<SkPicture> const&), SkCanvas*, emscripten::internal::FunctionInvoker<void (*)(SkCanvas&, sk_sp<SkPicture> const&), void, SkCanvas&, sk_sp<SkPicture> const&>::invoke(void (**)(SkCanvas&, sk_sp<SkPicture> const&), SkCanvas*, sk_sp<SkPicture>*) (bind.h:552)
at ClassHandle._drawPicture (canvaskit.js:7118:27)
at CanvasKit.Canvas.drawPicture (canvaskit.js:1356:9)
at animation (webgl.earth.html:241:28)
出错2
$(anonymous namespace)::HashTraits::GetKey(SkResourceCache::Rec const*) | @ | canvaskit.wasm:1 | |
$SkTHashTable<SkResourceCache::Rec*, SkResourceCache::Key, (anonymous namespace)::HashTraits>::find(SkResourceCache::Key const&) const | @ | canvaskit.wasm:1 | |
$SkResourceCache::find(SkResourceCache::Key const&, bool (*)(SkResourceCache::Rec const&, void*), void*) | @ | canvaskit.wasm:1 | |
$SkResourceCache::Find(SkResourceCache::Key const&, bool (*)(SkResourceCache::Rec const&, void*), void*) | @ | canvaskit.wasm:1 | |
$SkBitmapCache::Find(SkBitmapCacheDesc const&, SkBitmap*) | @ | canvaskit.wasm:1 | |
$SkImage_Lazy::getROPixels(GrDirectContext*, SkBitmap*, SkImage::CachingHint) const | @ | canvaskit.wasm:1 | |
$SkImage_Lazy::lockTextureProxyView(GrRecordingContext*, GrImageTexGenPolicy, GrMipmapped) const | @ | canvaskit.wasm:1 | |
$SkImage_Lazy::onAsView(GrRecordingContext*, GrMipmapped, GrImageTexGenPolicy) const | @ | canvaskit.wasm:1 | |
$SkImage_Base::asView(GrRecordingContext*, GrMipmapped, GrImageTexGenPolicy) const | @ | canvaskit.wasm:1 | |
$(anonymous namespace)::draw_image(GrRecordingContext*, skgpu::v1::SurfaceDrawContext*, GrClip const*, SkMatrixProvider const&, SkPaint const&, SkImage_Base const&, SkRect const&, SkRect const&, SkPoint const*, SkMatrix const&, GrQuadAAFlags, SkCanvas::SrcRectConstraint, SkSamplingOptions, SkTileMode) | @ | canvaskit.wasm:1 | |
$skgpu::v1::Device::drawImageQuad(SkImage const*, SkRect const*, SkRect const*, SkPoint const*, GrQuadAAFlags, SkMatrix const*, SkSamplingOptions const&, SkPaint const&, SkCanvas::SrcRectConstraint) | @ | canvaskit.wasm:1 | |
$skgpu::v1::Device::drawImageRect(SkImage const*, SkRect const*, SkRect const&, SkSamplingOptions const&, SkPaint const&, SkCanvas::SrcRectConstraint) | @ | canvaskit.wasm:1 | |
$SkCanvas::onDrawImage2(SkImage const*, float, float, SkSamplingOptions const&, SkPaint const*) | @ | canvaskit.wasm:1 | |
$SkCanvas::drawImage(SkImage const*, float, float, SkSamplingOptions const&, SkPaint const*) | @ | canvaskit.wasm:1 | |
$void SkRecords::Draw::draw<SkRecords::DrawImage>(SkRecords::DrawImage const&) | @ | canvaskit.wasm:1 | |
$void SkRecords::Draw::operator()<SkRecords::DrawImage>(SkRecords::DrawImage const&) | @ | canvaskit.wasm:1 | |
$decltype(fp((SkRecords::NoOp)())) SkRecord::Record::visit<SkRecords::Draw&>(SkRecords::Draw&) const | @ | canvaskit.wasm:1 | |
$decltype(fp0((SkRecords::NoOp)())) SkRecord::visit<SkRecords::Draw&>(int, SkRecords::Draw&) const | @ | canvaskit.wasm:1 | |
$SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) | @ | canvaskit.wasm:1 | |
$SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const | @ | canvaskit.wasm:1 | |
$SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) | @ | canvaskit.wasm:1 | |
$SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) | @ | canvaskit.wasm:1 | |
$SkCanvas::drawPicture(SkPicture const*) | @ | canvaskit.wasm:1 | |
$SkCanvas::drawPicture(sk_sp<SkPicture> const&) | @ | canvaskit.wasm:1 | |
$EmBindInit_Skia::EmBindInit_Skia()::$_36::operator()(SkCanvas&, sk_sp<SkPicture> const&) const | @ | canvaskit.wasm:1 | |
$EmBindInit_Skia::EmBindInit_Skia()::$_36::__invoke(SkCanvas&, sk_sp<SkPicture> const&) | @ | canvaskit.wasm:1 | |
$emscripten::internal::FunctionInvoker<void (*)(SkCanvas&, sk_sp<SkPicture> const&), void, SkCanvas&, sk_sp<SkPicture> const&>::invoke(void (**)(SkCanvas&, sk_sp<SkPicture> const&), SkCanvas*, sk_sp<SkPicture>*) | @ | canvaskit.wasm:1 | |
(anonymous) | @ | canvaskit.js:7118 | |
CanvasKit.Canvas.drawPicture | @ | canvaskit.js:1356 | |
animation | @ | webgl.earth.html:241 | |
draw | @ | webgl.earth.html:95 | |
requestAnimationFrame (async) |
出错3:
atomic:952 Uncaught RuntimeError: memory access out of bounds
at int std::__2::__cxx_atomic_load<int>(std::__2::__cxx_atomic_base_impl<int> const*, int std::__2::__cxx_atomic_load<int>(std::__2::__cxx_atomic_base_impl<int> const*, std::__2::memory_order) (atomic:952)
at std::__2::__atomic_base<int, false>::load(std::__2::memory_order) std::__2::__atomic_base<int, false>::load(std::__2::memory_order) const (atomic:1582)
at SkRefCntBase::getRefCnt() SkRefCntBase::getRefCnt() const (SkRefCnt.h:84)
at SkRefCntBase::unref() SkRefCntBase::unref() const (SkRefCnt.h:72)
at void void SkSafeUnref<SkPicture>(SkPicture*) (SkRefCnt.h:151)
at sk_sp<SkPicture>::~sk_sp() (SkRefCnt.h:266)
at void void emscripten::internal::raw_destructor<sk_sp<SkPicture>>(sk_sp<SkPicture>*) (bind.h:527)
at runDestructor (canvaskit.js:8252:27)
at releaseClassHandle (canvaskit.js:8261:9)
at ClassHandle.ClassHandle_delete [as delete] (canvaskit.js:8495:7)
$int std::__2::__cxx_atomic_load<int>(std::__2::__cxx_atomic_base_impl<int> const*, std::__2::memory_order) @ atomic:952
$std::__2::__atomic_base<int, false>::load(std::__2::memory_order) const @ atomic:1582
$SkRefCntBase::getRefCnt() const @ SkRefCnt.h:84
$SkRefCntBase::unref() const @ SkRefCnt.h:72
$void SkSafeUnref<SkPicture>(SkPicture*) @ SkRefCnt.h:151
$sk_sp<SkPicture>::~sk_sp() @ SkRefCnt.h:266
$void emscripten::internal::raw_destructor<sk_sp<SkPicture>>(sk_sp<SkPicture>*) @ bind.h:527
runDestructor @ canvaskit.js:8252
releaseClassHandle @ canvaskit.js:8261
ClassHandle_delete @ canvaskit.js:8495
animation @ webgl.earth.html:220
draw @ webgl.earth.html:261
requestAnimationFrame (async)
draw @ webgl.earth.html:263
webgl.earth.html:248 [Violation] 'requestAnimationFrame' handler took 128ms
上面的递归栈不停调用。
出错4
$process_data(png_struct_def*, png_info_def*, SkStream*, void*, unsigned long, unsigned long) | @ | SkPngCodec.cpp:151 | |
invoke_iiiiiii | @ | canvaskit.js:12447 | |
$SkPngCodec::processData() | @ | SkPngCodec.cpp:254 | |
$SkPngNormalDecoder::decodeAllRows(void*, unsigned long, int*) | @ | SkPngCodec.cpp:550 | |
$SkPngCodec::onGetPixels(SkImageInfo const&, void*, unsigned long, SkCodec::Options const&, int*) | @ | SkPngCodec.cpp:1180 | |
$SkCodec::getPixels(SkImageInfo const&, void*, unsigned long, SkCodec::Options const*) | @ | SkCodec.cpp:468 | |
$SkCodec::getPixels(SkPixmap const&, SkCodec::Options const*) | @ | SkCodec.h:388 | |
$SkCodecImageGenerator::getPixels(SkImageInfo const&, void*, unsigned long, SkCodec::Options const*)::$_0::operator()(SkPixmap const&) const | @ | SkCodecImageGenerator.cpp:68 | |
$bool SkPixmapPriv::Orient<SkCodecImageGenerator::getPixels(SkImageInfo const&, void*, unsigned long, SkCodec::Options const*)::$_0&>(SkPixmap const&, SkEncodedOrigin, SkCodecImageGenerator::getPixels(SkImageInfo const&, void*, unsigned long, SkCodec::Options const*)::$_0&) | @ | SkPixmapPriv.h:49 | |
$SkCodecImageGenerator::getPixels(SkImageInfo const&, void*, unsigned long, SkCodec::Options const*) | @ | SkCodecImageGenerator.cpp:79 | |
$SkCodecImageGenerator::onGetPixels(SkImageInfo const&, void*, unsigned long, SkImageGenerator::Options const&) | @ | SkCodecImageGenerator.cpp:84 | |
$SkImageGenerator::getPixels(SkImageInfo const&, void*, unsigned long) | @ | SkImageGenerator.cpp:30 | |
$SkImageGenerator::getPixels(SkPixmap const&) | @ | SkImageGenerator.h:98 | |
$SkImage_Lazy::getROPixels(GrDirectContext*, SkBitmap*, SkImage::CachingHint) const | @ | SkImage_Lazy.cpp:158 | |
$SkImage_Lazy::lockTextureProxyView(GrRecordingContext*, GrImageTexGenPolicy, GrMipmapped) const | @ | SkImage_Lazy.cpp:551 | |
$SkImage_Lazy::onAsView(GrRecordingContext*, GrMipmapped, GrImageTexGenPolicy) const | @ | SkImage_Lazy.cpp:302 | |
$SkImage_Base::asView(GrRecordingContext*, GrMipmapped, GrImageTexGenPolicy) const | @ | SkImage.cpp:328 | |
$(anonymous namespace)::draw_image(GrRecordingContext*, skgpu::v1::SurfaceDrawContext*, GrClip const*, SkMatrixProvider const&, SkPaint const&, SkImage_Base const&, SkRect const&, SkRect const&, SkPoint const*, SkMatrix const&, GrQuadAAFlags, SkCanvas::SrcRectConstraint, SkSamplingOptions, SkTileMode) | @ | Device_drawTexture.cpp:435 | |
$skgpu::v1::Device::drawImageQuad(SkImage const*, SkRect const*, SkRect const*, SkPoint const*, GrQuadAAFlags, SkMatrix const*, SkSamplingOptions const&, SkPaint const&, SkCanvas::SrcRectConstraint) | @ | Device_drawTexture.cpp:826 | |
$skgpu::v1::Device::drawImageRect(SkImage const*, SkRect const*, SkRect const&, SkSamplingOptions const&, SkPaint const&, SkCanvas::SrcRectConstraint) | @ | Device.cpp:876 | |
$SkCanvas::onDrawImage2(SkImage const*, float, float, SkSamplingOptions const&, SkPaint const*) | @ | SkCanvas.cpp:2336 | |
$SkCanvas::drawImage(SkImage const*, float, float, SkSamplingOptions const&, SkPaint const*) | @ | SkCanvas.cpp:2391 | |
$void SkRecords::Draw::draw<SkRecords::DrawImage>(SkRecords::DrawImage const&) | @ | SkRecordDraw.cpp:117 | |
$void SkRecords::Draw::operator()<SkRecords::DrawImage>(SkRecords::DrawImage const&) | @ | SkRecordDraw.h:63 | |
$decltype(fp((SkRecords::NoOp)())) SkRecord::Record::visit<SkRecords::Draw&>(SkRecords::Draw&) const | @ | SkRecord.h:150 | |
$decltype(fp0((SkRecords::NoOp)())) SkRecord::visit<SkRecords::Draw&>(int, SkRecords::Draw&) const | @ | SkRecord.h:42 | |
$SkRecordDraw(SkRecord const&, SkCanvas*, SkPicture const* const*, SkDrawable* const*, int, SkBBoxHierarchy const*, SkPicture::AbortCallback*) | @ | SkRecordDraw.cpp:57 | |
$SkBigPicture::playback(SkCanvas*, SkPicture::AbortCallback*) const | @ | SkBigPicture.cpp:32 | |
$SkCanvas::onDrawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) | @ | SkCanvas.cpp:2850 | |
$SkCanvas::drawPicture(SkPicture const*, SkMatrix const*, SkPaint const*) | @ | SkCanvas.cpp:2839 | |
$SkCanvas::drawPicture(SkPicture const*) | @ | SkCanvas.h:1900 | |
$SkCanvas::drawPicture(sk_sp<SkPicture> const&) | @ | SkCanvas.h:1912 | |
$emscripten::internal::MethodInvoker<void (SkCanvas::*)(sk_sp<SkPicture> const&), void, SkCanvas*, sk_sp<SkPicture> const&>::invoke(void (SkCanvas::* const&)(sk_sp<SkPicture> const&), SkCanvas*, sk_sp<SkPicture>*) | @ | bind.h:585 | |
(anonymous) | @ | canvaskit.js:8755 | |
CanvasKit.Canvas.drawPicture | @ | canvaskit.js:1877 | |
animation | @ | webgl.earth.html:214 | |
draw | @ | webgl.earth.html:256 | |
requestAnimationFrame (async) |
图片解码的地方:/skia/src/codec/SkCodec.cpp