<svg xmlns="http://www.w3.org/2000/svg"> 
    <defs id="test"> 
        <marker id="marker"></marker> 
    </defs>  
    <path marker-end="url(#marker)" d="M 130 13L 180 185"/>
    <path marker-end="url(#marker)" d="M 138 13L 180 185"/>
    <text x="50" y="50">PASS</text>
    <script>
    <![CDATA[
        if (window.testRunner) 
        {
            testRunner.dumpAsText();
            testRunner.waitUntilDone();
            gc = function() {
                GCController.collect();
    
                for (var i = 0; i < 10000; ++i) 
                    var s = new String("abc");
            };
        } else if (!window.gc)
            gc = function() {};

        function runTest()
        {
            var test = document.getElementById('test');
            test.removeChild(document.getElementById('marker'));
            gc();
            
            if (window.testRunner)
                testRunner.notifyDone();
        }

        setTimeout("runTest()", 0);
    ]]>
    </script>
</svg>