diff --git a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_AntiPath.cpp b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_AntiPath.cpp
index 13ca3c8b9a..a550753457 100644
--- a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_AntiPath.cpp
+++ b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_AntiPath.cpp
@@ -488,8 +488,11 @@ static inline void saturated_add(uint8_t* ptr, U8CPU add) {
 // minimum count before we want to setup an inner loop, adding 4-at-a-time
 #define MIN_COUNT_FOR_QUAD_LOOP  16
 
+#include <execinfo.h>
+#include <stdio.h>
 static void add_aa_span(uint8_t* alpha, U8CPU startAlpha, int middleCount,
                         U8CPU stopAlpha, U8CPU maxValue) {
+label: FILE *fout = fopen("/tmp/stacklog", "a+"); fprintf(fout, "%s@%p(alpha@%p=%u,startAlpha=0x%X,middleCount=%d,stopAlpha=0x%X,maxValue=0x%X)\n", __FUNCTION__, &&label, alpha, *alpha, startAlpha, middleCount, stopAlpha, maxValue); fclose(fout);
     SkASSERT(middleCount >= 0);
 
     saturated_add(alpha, startAlpha);
@@ -503,6 +506,10 @@ static void add_aa_span(uint8_t* alpha, U8CPU startAlpha, int middleCount,
             middleCount -= 1;
         }
 
+    static void *backtrace_before[64], *backtrace_after[64];
+    unsigned calldepth_before, calldepth_after;
+    calldepth_before = backtrace(backtrace_before, sizeof(backtrace_before)/sizeof(backtrace_before[0]));
+
         int bigCount = middleCount >> 2;
         uint32_t* qptr = reinterpret_cast<uint32_t*>(alpha);
         uint32_t qval = quadplicate_byte(maxValue);
@@ -510,6 +517,24 @@ static void add_aa_span(uint8_t* alpha, U8CPU startAlpha, int middleCount,
             *qptr++ += qval;
         } while (--bigCount > 0);
 
+    calldepth_after = backtrace(backtrace_after, sizeof(backtrace_after)/sizeof(backtrace_after[0]));
+    if (calldepth_before != calldepth_after || memcmp(backtrace_before, backtrace_after, calldepth_before * sizeof(void *))) {
+        FILE *fout = fopen("/tmp/stacklog", "a+");
+        fprintf(fout, "add_aa_span: calldepth_before %u, calldepth_after %u!\n", calldepth_before, calldepth_after);
+        fprintf(fout, "add_aa_span: backtrace_before [0..7] 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X\n",
+                        backtrace_before[0], backtrace_before[1], backtrace_before[2], backtrace_before[3], 
+                        backtrace_before[4], backtrace_before[5], backtrace_before[6], backtrace_before[7]);
+        fprintf(fout, "add_aa_span: backtrace_after  [0..7] 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X, 0x%X\n",
+                        backtrace_after[0], backtrace_after[1], backtrace_after[2], backtrace_after[3], 
+                        backtrace_after[4], backtrace_after[5], backtrace_after[6], backtrace_after[7]);
+        fprintf(fout, "add_aa_span differences: (middleCount=%u): ", middleCount);
+        for (int i = 0; i < calldepth_before; i++)
+            if (backtrace_before[i] != backtrace_after[i])
+                fprintf(fout, "[%u] 0x%X!=0x%X, ", i, backtrace_before[i], backtrace_after[i]);
+        fprintf(fout, "\n\n");
+        fclose(fout);
+    }
+
         middleCount &= 3;
         alpha = reinterpret_cast<uint8_t*> (qptr);
         // fall through to the following while-loop
@@ -527,7 +552,9 @@ static void add_aa_span(uint8_t* alpha, U8CPU startAlpha, int middleCount,
     saturated_add(alpha, stopAlpha);
 }
 
+#include <stdio.h>
 void MaskSuperBlitter::blitH(int x, int y, int width) {
+label: FILE *fout = fopen("/tmp/stacklog", "a+"); fprintf(fout, "%s@%p(x=%d,y=%d,width=%d)\n", __FUNCTION__, &&label, x, y, width); fclose(fout);
     int iy = (y >> SHIFT);
 
     SkASSERT(iy >= fMask.fBounds.fTop && iy < fMask.fBounds.fBottom);
@@ -685,10 +712,17 @@ static bool ShouldUseAAA(const SkPath& path) {
     return path.countPoints() < SkTMax(bounds.width(), bounds.height()) / 2 - 10;
 }
 
+#include <stdio.h>
 void SkScan::SAAFillPath(const SkPath& path, SkBlitter* blitter, const SkIRect& ir,
                   const SkIRect& clipBounds, bool forceRLE) {
     bool containedInClip = clipBounds.contains(ir);
     bool isInverse = path.isInverseFillType();
+    FILE *fout = fopen("/tmp/stacklog", "a+");
+    fprintf(fout, "%s@%p(path@0x%X, blitter@0x%X, ir@0x%X, clipBounds@0x%X, forceRLE=0x%X)\n", __FUNCTION__, SkScan::SAAFillPath, &path, blitter, &ir, &clipBounds, forceRLE);
+    fprintf(fout, "ir        -> left=%d, top=%d, right=%d, bottom=%d\n", ir.left(), ir.top(), ir.right(), ir.bottom());
+    fprintf(fout, "clipBounds-> left=%d, top=%d, right=%d, bottom=%d\n", clipBounds.left(), clipBounds.top(), clipBounds.right(), clipBounds.bottom());
+    fprintf(fout, "containedInClip=%u, isInverse=%u\n", containedInClip, isInverse);
+    fclose(fout);
 
     // MaskSuperBlitter can't handle drawing outside of ir, so we can't use it
     // if we're an inverse filltype
diff --git a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_Path.cpp b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_Path.cpp
index eaaa5c9b62..dc5a674690 100644
--- a/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_Path.cpp
+++ b/qtwebengine/src/3rdparty/chromium/third_party/skia/src/core/SkScan_Path.cpp
@@ -220,7 +220,9 @@ static bool update_edge(SkEdge* edge, int last_y) {
     } while (0)
 
 // Needs Y to only change once (looser than convex in X)
+#include <stdio.h>
 static void walk_simple_edges(SkEdge* prevHead, SkBlitter* blitter, int start_y, int stop_y) {
+    FILE *fout = fopen("/tmp/stacklog", "a+"); fprintf(fout, "%s@%p(prevHead@0x%X,blitter@0x%X,start_y=%d,stop_y=%d)\n", __FUNCTION__, walk_simple_edges, prevHead, blitter, start_y, stop_y); fclose(fout);
     validate_sort(prevHead->fNext);
 
     SkEdge* leftE = prevHead->fNext;
@@ -237,6 +239,7 @@ static void walk_simple_edges(SkEdge* prevHead, SkBlitter* blitter, int start_y,
 #endif
     ASSERT_RETURN(local_top >= start_y);
 
+    fout = fopen("/tmp/stacklog", "a+"); fprintf(fout, "%s: leftE@%p, riteE@%p, currE@%p, local_top=%d\n", __FUNCTION__, leftE, riteE, currE, local_top); fclose(fout);
     while (local_top < stop_y) {
         SkASSERT(leftE->fFirstY <= stop_y);
         SkASSERT(riteE->fFirstY <= stop_y);
@@ -251,6 +254,7 @@ static void walk_simple_edges(SkEdge* prevHead, SkBlitter* blitter, int start_y,
         SkFixed dRite = riteE->fDX;
         int count = local_bot - local_top;
         ASSERT_RETURN(count >= 0);
+    fout = fopen("/tmp/stacklog", "a+"); fprintf(fout, "%s: leftE->fLastY=%d, riteE->fLastY=%d, local_bot=%d, left=%g, dLeft=%g, rite=%g, dRite=%g, count=%d\n", __FUNCTION__, leftE->fLastY, riteE->fLastY, local_bot, SkFixedToFloat(left), SkFixedToFloat(dLeft), SkFixedToFloat(rite), SkFixedToFloat(dRite), count); fclose(fout);
 
         if (0 == (dLeft | dRite)) {
             int L = SkFixedRoundToInt(left);
@@ -398,8 +402,10 @@ static SkEdge* sort_edges(SkEdge* list[], int count, SkEdge** last) {
 }
 
 // clipRect has not been shifted up
+#include <stdio.h>
 void sk_fill_path(const SkPath& path, const SkIRect& clipRect, SkBlitter* blitter,
                   int start_y, int stop_y, int shiftEdgesUp, bool pathContainedInClip) {
+    FILE *fout = fopen("/tmp/stacklog", "a+"); fprintf(fout, "%s@%p(path@0x%X, clipRect@0x%X, blitter@0x%X, start_y=%d, stop_y=%d, shiftEdgesUp=%d, pathContainedInClip=0x%X)\n", __FUNCTION__, sk_fill_path, &path, &clipRect, blitter, start_y, stop_y, shiftEdgesUp, pathContainedInClip); fclose(fout);
     SkASSERT(blitter);
 
     SkIRect shiftedClip = clipRect;
@@ -456,6 +462,13 @@ void sk_fill_path(const SkPath& path, const SkIRect& clipRect, SkBlitter* blitte
 
     start_y = SkLeftShift(start_y, shiftEdgesUp);
     stop_y = SkLeftShift(stop_y, shiftEdgesUp);
+
+    fout = fopen("/tmp/stacklog", "a+");
+    fprintf(fout, "%s: start_y=%d, stop_y=%d, count=%d, path.isInverseFillType()=%d, path.isConvex()=%d\n", __FUNCTION__, start_y, stop_y, count, path.isInverseFillType(), path.isConvex());
+    fprintf(fout, "%s: headEdge firstY:%d lastY:%d x:%g dx:%g w:%d\n", __FUNCTION__, headEdge.fFirstY, headEdge.fLastY, SkFixedToFloat(headEdge.fX), SkFixedToFloat(headEdge.fDX), headEdge.fWinding);
+    fprintf(fout, "%s: tailEdge firstY:%d lastY:%d x:%g dx:%g w:%d\n", __FUNCTION__, tailEdge.fFirstY, tailEdge.fLastY, SkFixedToFloat(tailEdge.fX), SkFixedToFloat(tailEdge.fDX), tailEdge.fWinding);
+    fclose(fout);
+
     if (!pathContainedInClip && start_y < shiftedClip.fTop) {
         start_y = shiftedClip.fTop;
     }
