I think there are numerous Emacs variables here, in addition to some crashiness, that makes it very difficult to inspect what's actually going on here. I don't really believe that the HTML parser is returning a circular structure, but I just can't get Emacs to print it out, even after twiddling `print-circle' and `max-lisp-eval-depth'. Help, somebody? Included is the offending "HTML". Put it in a buffer and say (setq a (libxml-parse-html-region (point-min) (point-max))) and try to get `a' to print in the scratch buffer.