<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML//EN">
<html>
<head id="h">
</head>
<body>
<script>
if (window.testRunner)
	window.testRunner.dumpAsText();

var link = document.createElement('link');
link.setAttribute('type', 'text/css');
link.setAttribute('rel', 'stylesheet');
link.setAttribute('href', 'really-does-not-exist.css');
document.getElementById('h').appendChild(link);
link.parentNode.removeChild(link);
link = null;
</script>
<script>
function gc() {
    if (window.GCController)
        GCController.collect();
    else {
        // Allocate a sufficient number of objects to force a GC.
        for (var i = 0; i < 10000; i++)
            new Object;
    }
}

gc();
</script>
<p>This test passes if it doesn't crash</p>
</body>
</html>
