Closed Bug 115864 Opened 23 years ago Closed 23 years ago

invalid XUL crashes mozilla

Categories

(Core :: XUL, defect)

x86
All
defect
Not set
critical

Tracking

()

RESOLVED FIXED
Future

People

(Reporter: vargaz, Assigned: hyatt)

Details

From Bugzilla Helper:
User-Agent: Mozilla/5.0 (Windows; U; WinNT4.0; en-US; rv:0.9.6+) Gecko/20011218
BuildID:    2001121803

The following invalid XUL crashes mozilla:

<?xml version="1.0"?>
<window

  xmlns="http://www.mozilla.org/keymaster/gatekeeper/there.is.only.xul">
<window>
<window>

Reproducible: Always
Steps to Reproduce:
1.save the XUL fragment into a file
2. open it using mozilla.exe -chrome
3.

Actual Results:  mozilla crashed

Expected Results:  an error dialog should be displayed
Status: UNCONFIRMED → NEW
Ever confirmed: true
I actually do get a warning in my debug build shortly before the crash.
OS->All, sev->crit.

Stack (note this tree's a bit stale):

XML Error in file 'chrome://jtest/content/xulcrash.xul', Line Number: 7, Col
Number: 1, Description: no element found
Source Line:

Program received signal SIGSEGV, Segmentation fault.
0x40d485c7 in nsLoadGroup::RemoveRequest (this=0x812d578, request=0x0, 
    ctxt=0x0, aStatus=0) at nsLoadGroup.cpp:491
491             request->GetName(getter_Copies(nameStr));
(gdb) bt
#0  0x40d485c7 in nsLoadGroup::RemoveRequest (this=0x812d578, request=0x0, 
    ctxt=0x0, aStatus=0) at nsLoadGroup.cpp:491
#1  0x4142ec0e in nsXULDocument::ResumeWalk (this=0x81b3568)
    at nsXULDocument.cpp:5909
#2  0x4141bf9d in nsXULDocument::EndLoad (this=0x81b3568)
    at nsXULDocument.cpp:1658
#3  0x4140ff43 in XULContentSinkImpl::DidBuildModel (this=0x8245260, 
    aQualityLevel=1) at nsXULContentSink.cpp:535
#4  0x408e97d1 in CWellFormedDTD::DidBuildModel (this=0x8235170, 
    anErrorCode=0, aNotifySink=1, aParser=0x8234678, aSink=0x8245260)
    at nsWellFormedDTD.cpp:306
#5  0x408e0849 in nsParser::DidBuildModel (this=0x8234678, anErrorCode=0)
    at nsParser.cpp:1387
#6  0x408e16f9 in nsParser::ResumeParse (this=0x8234678, allowIteration=1, 
    aIsFinalChunk=1) at nsParser.cpp:1890
#7  0x408e3201 in nsParser::OnStopRequest (this=0x8234678, request=0x81bc050, 
    aContext=0x0, status=0) at nsParser.cpp:2538
#8  0x40efb7b4 in nsDocumentOpenInfo::OnStopRequest (this=0x81bc220, 
    request=0x81bc050, aCtxt=0x0, aStatus=0) at nsURILoader.cpp:252
#9  0x40dad284 in nsFileChannel::OnStopRequest (this=0x81bc050, 
    request=0x81bc244, context=0x0, aStatus=0) at nsFileChannel.cpp:481
#10 0x40dd582c in nsOnStopRequestEvent::HandleEvent (this=0x80a9448)
    at nsRequestObserverProxy.cpp:176
#11 0x40d4ea59 in nsARequestObserverEvent::HandlePLEvent (plev=0x80a9448)
    at nsRequestObserverProxy.cpp:79
#12 0x401eaaa1 in PL_HandleEvent (self=0x80a9448) at plevent.c:590
#13 0x401eb2cd in PL_ProcessEventsBeforeID (aSelf=0x8097270, aID=158)
    at plevent.c:1256
#14 0x409ec7fb in processQueue (aElement=0x8097270, aData=0x9e)
    at nsAppShell.cpp:479
#15 0x401a35b1 in nsVoidArray::EnumerateForwards (this=0x8078c00, 
    aFunc=0x409ec7cc <processQueue(void *, void *)>, aData=0x9e)
    at nsVoidArray.cpp:652
#16 0x409ec844 in nsAppShell::ProcessBeforeID (aID=158) at nsAppShell.cpp:487
#17 0x409f5ae7 in handle_gdk_event (event=0x81f1840, data=0x0)
    at nsGtkEventHandler.cpp:908
#18 0x40496d00 in gdk_event_free () from /usr/lib/libgdk-1.2.so.0
Severity: minor → critical
OS: Windows NT → All
Hyatt, could this be a side-effect of that bug that we sometimes mess up with
loadgroups and that we crash when removing an empty or wrong loadgroup here?
Hmm, so the spot I crashed in only happens in debug builds (inside a PR_LOGGING
block) -- ResumeWalk passes |nsnull| as an nsIRequest to
nsLoadGroup::RemoveRequest.  I commented out the logging code to see where it
would crash:


###!!! ASSERTION: NS_ENSURE_TRUE(window) failed: 'window', file
nsContentTreeOwner.cpp, line 584
###!!! Break: at file nsContentTreeOwner.cpp, line 584
###!!! ASSERTION: NS_ENSURE_TRUE(docShellElement) failed: 'docShellElement',
file nsXULWindow.cpp, line 956
###!!! Break: at file nsXULWindow.cpp, line 956
###!!! ASSERTION: NS_ENSURE_TRUE(windowElement) failed: 'windowElement', file
nsXULWindow.cpp, line 976
###!!! Break: at file nsXULWindow.cpp, line 976
###!!! ASSERTION: no xul:window: 'windowElement', file nsXULWindow.cpp, line
768
###!!! Break: at file nsXULWindow.cpp, line 768

Program received signal SIGSEGV, Segmentation fault.
0x406415fb in malloc () from /lib/libc.so.6
(gdb) bt
#0  0x406415fb in malloc () from /lib/libc.so.6
#1  0x40640d3e in malloc () from /lib/libc.so.6
#2  0x402ea11f in PR_Malloc (size=127) at prmem.c:54
#3  0x401f74f3 in nsMemoryImpl::Alloc (this=0x806d020, size=127)
    at nsMemoryImpl.cpp:320
#4  0x401f7d71 in nsMemory::Alloc (size=127) at nsMemoryImpl.cpp:556
#5  0x40228454 in nsStr::Alloc (aDest=@0xbfffeacc, aCount=126) at
nsStr.cpp:695
#6  0x40228544 in nsStr::Realloc (aDest=@0xbfffeb38, aCount=126)
    at nsStr.cpp:723
#7  0x402273d9 in nsStr::EnsureCapacity (aString=@0xbfffeb38, aNewLength=126)
    at nsStr.cpp:117
#8  0x402274a6 in nsStr::GrowCapacity (aDest=@0xbfffec7c, aNewLength=126)
    at nsStr.cpp:147
#9  0x40228cbd in nsCString::SetCapacity (this=0xbfffec78, aNewCapacity=70)
    at nsString.cpp:200
#10 0x4022ad39 in NS_ConvertUCS2toUTF8::Append (this=0xbfffec78,
    aString=0x82411a8, aLength=69) at nsString.cpp:1271
#11 0x4022ac3f in NS_ConvertUCS2toUTF8::NS_ConvertUCS2toUTF8 (this=0xbfffec78,
    aString=@0xbfffed00) at nsString.cpp:1240
#12 0x40223740 in ToNewUTF8String (aSource=@0xbfffed00)
    at nsReadableUtils.cpp:211
#13 0x40f0d067 in GetURIStringFromRequest (request=0x81c79b8,
aStr=@0xbfffedb0)
    at nsDocLoader.cpp:92
#14 0x40f0fd64 in nsDocLoaderImpl::FireOnStateChange (this=0x817c888,
    aProgress=0x816381c, aRequest=0x81c79b8, aStateFlags=786448, aStatus=0)
    at nsDocLoader.cpp:1080
#15 0x40f100c5 in nsDocLoaderImpl::FireOnStateChange (this=0x8163808,
    aProgress=0x816381c, aRequest=0x81c79b8, aStateFlags=786448, aStatus=0)
    at nsDocLoader.cpp:1116
#16 0x40f0f009 in nsDocLoaderImpl::doStopDocumentLoad (this=0x8163808,
    request=0x81c79b8, aStatus=0) at nsDocLoader.cpp:749
#17 0x40f0ecd8 in nsDocLoaderImpl::DocLoaderIsEmpty (this=0x8163808)
    at nsDocLoader.cpp:645
#18 0x40f0e9f2 in nsDocLoaderImpl::OnStopRequest (this=0x8163808,
    aRequest=0x81c79b8, aCtxt=0x0, aStatus=0) at nsDocLoader.cpp:575
#19 0x40835745 in nsLoadGroup::RemoveRequest (this=0x81324b0,
    request=0x81c79b8, ctxt=0x0, aStatus=0) at nsLoadGroup.cpp:527
#20 0x4089a1a3 in nsFileChannel::OnStopRequest (this=0x81c79b8,
    request=0x81c7704, context=0x0, aStatus=0) at nsFileChannel.cpp:485
#21 0x408c26ec in nsOnStopRequestEvent::HandleEvent (this=0x81ea4a0)
    at nsRequestObserverProxy.cpp:176
#22 0x4083b919 in nsARequestObserverEvent::HandlePLEvent (plev=0x81ea4a0)
    at nsRequestObserverProxy.cpp:79
#23 0x401eaaa1 in PL_HandleEvent (self=0x81ea4a0) at plevent.c:590
#24 0x401eb2cd in PL_ProcessEventsBeforeID (aSelf=0x8097270, aID=158)
    at plevent.c:1256
#25 0x40b897fb in processQueue (aElement=0x8097270, aData=0x9e)
    at nsAppShell.cpp:479
#26 0x401a35b1 in nsVoidArray::EnumerateForwards (this=0x807e520,
    aFunc=0x40b897cc <processQueue(void *, void *)>, aData=0x9e)
#27 0x40b89844 in nsAppShell::ProcessBeforeID (aID=158) at nsAppShell.cpp:487
#28 0x40b92ae7 in handle_gdk_event (event=0x81fce50, data=0x0)
    at nsGtkEventHandler.cpp:908
#29 0x40496d00 in gdk_event_free () from /usr/lib/libgdk-1.2.so.0

Confirming on 2001121808/Linux. Talkback TB643545X
Status: NEW → ASSIGNED
Target Milestone: --- → Future
No longer seeing this with a linux CVS build (20020210) -- instead I get an XML
parser error.  Anyone mind if I close this one?
I don't see it either on the original platform (NT). So its probably fixed.
Status: ASSIGNED → RESOLVED
Closed: 23 years ago
Resolution: --- → FIXED
Component: XP Toolkit/Widgets: XUL → XUL
QA Contact: jrgmorrison → xptoolkit.widgets
You need to log in before you can comment on or make changes to this bug.