Closed Bug 242034 Opened 20 years ago Closed 8 years ago

###!!! ASSERTION: not a file URL: 'Error', file r:/mozilla/netwerk/base/src/nsStandardURL.cpp, line 2218

Categories

(Core :: Networking, defect, P5)

x86
Windows 2000
defect

Tracking

()

RESOLVED INCOMPLETE

People

(Reporter: timeless, Unassigned)

Details

(Keywords: assertion)

I know this doesn't make any sense, but i'd like to blame bug 240496

###!!! ASSERTION: not a file URL: 'Error', file
r:/mozilla/netwerk/base/src/nsStandardURL.cpp, line 2218
Break: at file r:/mozilla/netwerk/base/src/nsStandardURL.cpp, line 2218

 	xpcom.dll!nsDebug::Assertion(const char * aStr=0x01d3a634, const char *
aExpr=0x01d36e48, const char * aFile=0x01d3a168, int aLine=0x000008aa)  Line 109	C++
 	necko.dll!nsStandardURL::GetFile(nsIFile * * result=0x0390cea4)  Line 2218 +
0x1a	C++
>	necko.dll!nsJARChannel::EnsureJarInput(int blocking=0x00000000)  Line 271 +
0x22	C++
 	necko.dll!nsJARChannel::AsyncOpen(nsIStreamListener * listener=0x0390eb70,
nsISupports * ctx=0x00000000)  Line 607	C++
 	gklayout.dll!nsXBLService::FetchBindingDocument(nsIContent *
aBoundElement=0x03800070, nsIDocument * aBoundDocument=0x035aced0, nsIURI *
aDocumentURI=0x0390c6b0, nsIURL * aBindingURL=0x03905098, int
aForceSyncLoad=0x0390ce20, nsIDocument * * aResult=0x0390c778)  Line 1218	C++
 	gklayout.dll!nsXBLService::LoadBindingDocumentInfo(nsIContent *
aBoundElement=0x00000000, nsIDocument * aBoundDocument=0x035aced0, nsIURI *
aBindingURI=0x00000000, int aForceSyncLoad=0x00000000, nsIXBLDocumentInfo * *
aResult=0x0012efc4)  Line 1105 + 0x1e	C++
 	gklayout.dll!nsXBLService::GetBindingInternal(nsIContent *
aBoundElement=0x03800070, nsIURI * aURI=0x03905098, int aPeekOnly=0x00000000,
int * aIsReady=0x0012effc, nsIXBLBinding * * aResult=0x0012f0f0)  Line 883 +
0x26	C++
 	gklayout.dll!nsXBLService::GetBinding(nsIContent * aBoundElement=0x03800070,
nsIURI * aURI=0x03905098, nsIXBLBinding * * aResult=0x0012f0f0)  Line 841	C++
 	gklayout.dll!nsXBLService::LoadBindings(nsIContent * aContent=0x0012eb38,
nsIURI * aURL=0x00369083, int aAugmentFlag=0x0390c460, nsIXBLBinding * *
aBinding=0x01d3a0ec, int * aResolveStyle=0x0012eb44)  Line 581 + 0x1a	C++

-	fileURL	{mRawPtr=0x0390c460 {mRefCnt={mValue=0x00000003 }
_mOwningThread={mThread=0x003f5b80 } mSpec={...} ...} }	nsCOMPtr<nsIFileURL>
-	mRawPtr	0x0390c460 {mRefCnt={mValue=0x00000003 }
_mOwningThread={mThread=0x003f5b80 } mSpec={...} ...}	nsIFileURL *
-	[nsStandardURL]	{mRefCnt={mValue=0x00000003 }
_mOwningThread={mThread=0x003f5b80 } mSpec={...} ...}	nsStandardURL
-	mSpec	{...}	nsCString
-	nsCSubstring	{...}	nsCSubstring
-	nsACString	{mVTable=0x00392430 const nsObsoleteACStringThunk::`vftable'
mData=0x03905330 "resource:///chrome/inspector.jar" mLength=0x00000020 ...}
const nsACString
	mVTable	0x00392430 const nsObsoleteACStringThunk::`vftable'	const void *
+	mData	0x03905330 "resource:///chrome/inspector.jar"	char *

cvs updated yesterday, built today.
triggered by using ctrl-shift-i to load dom inspector

<Neil> timeless: that generally means that someone didn't use the io service to
try to create a file url
> I know this doesn't make any sense, but i'd like to blame bug 240496

That's nice to know.  But it doesn't make any sense.

How did you get that assert?  What's further on the stack?  All the frames you
show already have the nsIURI, so I have no idea who created it from a string and
how.
fresh run, picking stack up from where i left off:
 	gklayout.dll!nsCSSFrameConstructor::ConstructFrameInternal(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aContent=0x03616920,
nsIFrame * aParentFrame=0x036a5494, nsIAtom * aTag=0x00f5e1a0, int
aNameSpaceID=0x00000009, nsStyleContext * aStyleContext=0x036b851c, nsFrameItems
& aFrameItems={...}, int aXBLBaseTag=0x00000000)  Line 7091 + 0x23	C++
 	gklayout.dll!nsCSSFrameConstructor::ConstructFrame(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aContent=0x00000000,
nsIFrame * aParentFrame=0x036a5494, nsFrameItems & aFrameItems={...})  Line 7049	C++
 	gklayout.dll!nsCSSFrameConstructor::ProcessChildren(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aContent=0x035cc5d0,
nsIFrame * aFrame=0x03616920, int aCanHaveGeneratedContent=0x00000000,
nsFrameItems & aFrameItems={...}, int aParentIsBlock=0x00000000, nsTableCreator
* aTableCreator=0x03616920)  Line 11486 + 0x2e	C++
 	gklayout.dll!nsCSSFrameConstructor::ConstructXULFrame(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aContent=0x035cc5d0,
nsIFrame * aParentFrame=0x035997c4, nsIAtom * aTag=0x00f5e0c0, int
aNameSpaceID=0x00000009, nsStyleContext * aStyleContext=0x0365137c, nsFrameItems
& aFrameItems={...}, int aXBLBaseTag=0x00000000, int &
aHaltProcessing=0x035cc5d0)  Line 5677 + 0x1b	C++
 	gklayout.dll!nsCSSFrameConstructor::ConstructFrameInternal(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aContent=0x035cc5d0,
nsIFrame * aParentFrame=0x035997c4, nsIAtom * aTag=0x00f5e0c0, int
aNameSpaceID=0x00000009, nsStyleContext * aStyleContext=0x036514c8, nsFrameItems
& aFrameItems={...}, int aXBLBaseTag=0x00000000)  Line 7155 + 0x25	C++
 	gklayout.dll!nsCSSFrameConstructor::ConstructFrame(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aContent=0x00000000,
nsIFrame * aParentFrame=0x035997c4, nsFrameItems & aFrameItems={...})  Line 7049	C++
 	gklayout.dll!nsCSSFrameConstructor::ProcessChildren(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aContent=0x035be5d0,
nsIFrame * aFrame=0x035cc5d0, int aCanHaveGeneratedContent=0x00000001,
nsFrameItems & aFrameItems={...}, int aParentIsBlock=0x00000000, nsTableCreator
* aTableCreator=0x035cc5d0)  Line 11486 + 0x2e	C++
 	gklayout.dll!nsCSSFrameConstructor::ConstructDocElementFrame(nsIPresShell *
aPresShell=0x0348a028, nsIPresContext * aPresContext=0x034c02c8,
nsFrameConstructorState & aState={...}, nsIContent * aDocElement=0x035be5d0,
nsIFrame * aParentFrame=0x035994fc, nsIFrame * & aNewFrame=0x035997c4)  Line
3564	C++
 	gklayout.dll!nsCSSFrameConstructor::ContentInserted(nsIPresContext *
aPresContext=0x035997c4, nsIContent * aContainer=0x00000000, nsIFrame *
aContainerFrame=0x00000000, nsIContent * aChild=0x035be5d0, int
aIndexInContainer=0x00000000, nsILayoutHistoryState * aFrameState=0x00000000,
int aInReinsertContent=0x00000000)  Line 8738	C++
 	gklayout.dll!PresShell::InitialReflow(int aWidth=0x01a5a0ec, int
aHeight=0x0012eb44)  Line 2794	C++
 	gklayout.dll!nsXULDocument::StartLayout()  Line 2170	C++
 	gklayout.dll!nsXULDocument::ResumeWalk()  Line 2987	C++
 	gklayout.dll!nsXULDocument::EndLoad()  Line 743	C++
 	gklayout.dll!XULContentSinkImpl::DidBuildModel()  Line 459	C++
 	gkparser.dll!nsExpatDriver::DidBuildModel(unsigned int anErrorCode=0x00000000,
int aNotifySink=0x00000001, nsIParser * aParser=0x0360b478, nsIContentSink *
aSink=0x0360b3c0)  Line 1058 + 0xa	C++
 	gkparser.dll!nsParser::DidBuildModel(unsigned int anErrorCode=0x00000000) 
Line 1244 + 0xe	C++
 	gkparser.dll!nsParser::ResumeParse(int allowIteration=0x00000001, int
aIsFinalChunk=0x00000001, int aCanInterrupt=0x00000001)  Line 1808	C++
 	gkparser.dll!nsParser::OnStopRequest(nsIRequest * request=0x03703f00,
nsISupports * aContext=0x01a5a0ec, unsigned int status=0x0012eb44)  Line 2479	C++
 	necko.dll!nsJARChannel::OnStopRequest(nsIRequest * req=0x03629740, nsISupports
* ctx=0x00000000, unsigned int status=0x00000000)  Line 687	C++
 	necko.dll!nsInputStreamPump::OnStateStop()  Line 506	C++
 	necko.dll!nsInputStreamPump::OnInputStreamReady(nsIAsyncInputStream *
stream=0x036297c4)  Line 341	C++
 	xpcom.dll!nsInputStreamReadyEvent::EventHandler(PLEvent * plevent=0x036299d4)
 Line 119	C++
 	xpcom.dll!PL_HandleEvent(PLEvent * self=0x036299d4)  Line 693	C
 	xpcom.dll!PL_ProcessPendingEvents(PLEventQueue * self=0x00f492f8)  Line 628	C
 	xpcom.dll!_md_EventReceiverProc(HWND__ * hwnd=0x00a6098e, unsigned int
uMsg=0x0000c181, unsigned int wParam=0x00000000, long lParam=0x00f492f8)  Line
1434	C
In nsCSSFrameConstructor::ConstructFrameInternal,

{,,necko.dll}((*(nsACString*)(&(*(nsCSubstring*)(&((*(nsStandardURL*)(&*(nsResURL*)(((*(nsJARURI*){*}((display->mBinding).mRawPtr)).mJARFile).mRawPtr)))).mSpec))))).mData
0x035c1b10 "resource:///chrome/inspector.jar"	char *

{,,necko.dll}((*(nsACString*)(&(*(nsCSubstring*)(&(*(nsStandardURL*)(((*(nsJARURI*){*}((display->mBinding).mRawPtr)).mJAREntry).mRawPtr)).mSpec))))).mData
0x035c1d30
"x:///content/inspector/extensions/titledSplitter.xml#titledSplitter"	char *

I can't imagine any of this is particularly helpful :(
Er.... that URI is an nsResURL?  Then how did you ever end up in
nsStandardURL::GetFile?  nsResURL overrides that virtual function, no?
(In reply to comment #4)
> Er.... that URI is an nsResURL?  Then how did you ever end up in
> nsStandardURL::GetFile?  nsResURL overrides that virtual function, no?

because maybe someone didn't call NewURI?  maybe they just allocated a
nsStandardURL directly :-(
My point is that nsResURL inherits from nsStandardURL.  It overrides the
GetFile() method.  The jar channel code is calling GetFile() on an nsIURI that
_should_ be an nsResURL if code is working right (and _is_ an nsResURL according
to timeless' debugging data).  In that case, why is nsStandardURL::GetFile being
called?  Calling GetFile() should be calling nsResURL::GetFile.
Status: UNCONFIRMED → NEW
Ever confirmed: true
Priority: -- → P5
Assignee: darin → nobody
QA Contact: benc → networking
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → INCOMPLETE
You need to log in before you can comment on or make changes to this bug.