<html>
  <head>
    <style>
      #el0 { position: relative; }
      #el2 { outline-style: dashed; }
    </style>
    <script>
        function log(message) {
        var console = document.getElementById("console");
        console.appendChild(document.createTextNode(message + "\n"));
        }

        function test() {
           document.execCommand('removeformat');
           setTimeout("finish()", 100);
        }
        function finish() {
            if (window.testRunner) {
                testRunner.dumpAsText();
                log("PASSED: Didn't crash!\n");
                testRunner.notifyDone();
            }
        }

//         This tests a crash caused by stale pointers to continuations in a block's continuations table.
//         https://bugs.webkit.org/show_bug.cgi?id=81276

        async function runTest() {
            testRunner.waitUntilDone();
            await testRunner.displayAndTrackRepaints();
            el0=document.createElement('span')
            el0.setAttribute('id','el0')
            document.body.appendChild(el0)
            el1=document.createElement('div')
            el0.appendChild(el1)
            el1.appendChild(document.createElement('input'))
            el0.appendChild(document.createTextNode('A'))
            el2=document.createElement('q')
            el2.setAttribute('id','el2')
            document.body.appendChild(el2)
            el2.appendChild(document.createElement('div'))
            el2.appendChild(document.createElement('input'))
            document.designMode='on'
            document.execCommand('selectall')
            document.execCommand('FormatBlock', false, '<'+'pre>')
            document.execCommand('Undo')
            setTimeout("test();",10)
         }
    </script>
  </head>
  <body onload="runTest();">
  <div id="console"></div>
  </body>
</html>