If I have crud in my navigator.dtd file, then Mozilla crashes upon startup. http://bugzilla.mozilla.org/show_bug.cgi?id=39703 has the details (look for the OpenVMS crash trace). Here's the crud I had that caused the problem: <!-- Statusbar --> <<<<<<< navigator.dtd <!ENTITY statusText.label "Document: Done"> <!ENTITY buildId.label "Build ID: 2000052009"> ======= <!ENTITY statusText.label "Document: Done"> <!ENTITY buildId.label "Build ID: 2000052009"> >>>>>>> 1.67 <!-- Context Menu --> An error message about the invalid contents of the dtd file would be a whole lot nicer than a crash :-)
harishd, rickg: fyi, this may be how the problem was caused for bug 39703.
I checked in a lame fix: NS_IF_RELEASE() instead of NS_RELEASE() in nsXULContentSink::DidBuildModel(). Now we just *hang* when there's an error in the DTD file. The good news is, the parser *does* print an error message.
Well, it sort of prints an error message: "error in processing external entity reference, Source Line: %navigatorDTD". nisheeth, harishd, or rickg would be the guys to ask about improving that.
Remember there's a strong ( bad ) circular reference between sink and the parser. And therefore, it's a good ( not lame )idea to use NS_IF_RELEASE rather than NS_RELEASE. The circularity ought to be broken...I'll work on it post beta2.
Adding crash keyword
marking verified per engineers comments