Closed
Bug 1265062
Opened 9 years ago
Closed 8 years ago
B2G_DEBUG=1 for pine/kanikani does not boot: Assertion failure: originAttrsLoadInfo.mInIsolatedMozBrowser == loadContextIsInBE
Categories
(Firefox OS Graveyard :: General, defect)
Tracking
(Not tracked)
RESOLVED
WONTFIX
People
(Reporter: nhirata, Unassigned)
References
Details
(Whiteboard: fixed-in-pine)
Attachments
(6 files, 1 obsolete file)
1. build with B2G_DEBUG=1 ./build.sh -j1
2. after compile, ./flash.sh
Expected: bootable OS
Actual: keeps looking like it reboots.
Gecko (pine) : e97ee27bce20
Gaia ( kanikani ) : 13bf75f40aa8ac8285acbb715d5156f14a70b047
Reporter | ||
Comment 1•9 years ago
|
||
I think it might be due to the following assert? I'm not sure:
04-15 10:11:52.390 I/Gecko ( 319): ++DOMWINDOW == 5 (0xa9930400) [pid = 319] [serial = 5] [outer = 0xac207c00]
04-15 10:11:52.610 F/MOZ_Assert( 319): Assertion failure: originAttrsLoadInfo.mInIsolatedMozBrowser == loadContextIsInBE (The value of InIsolatedMozBrowser in the loadContext and in the loadInfo are not the same!), at /Projects/B2G_Aries_pine/pine/netwerk/base/nsNetUtil.cpp:2418
04-15 10:11:52.610 W/google-breakpad( 319): ExceptionHandler::GenerateDump cloned child
04-15 10:11:52.610 W/google-breakpad( 319): 1141nAttrsLoadInfo.mInIs
04-15 10:11:52.610 W/google-breakpad( 319):
04-15 10:11:52.610 W/google-breakpad( 319): ExceptionHandler::SendContinueSignalToChild sent continue signal to child
04-15 10:11:52.610 W/google-breakpad( 1141): ExceptionHandler::WaitForContinueSignal waiting for continue signal...
04-15 10:11:53.010 I/ServiceManager( 286): service 'android.security.keystore' died
04-15 10:11:53.010 I/ServiceManager( 286): service 'SurfaceFlinger' died
04-15 10:11:53.010 I/ServiceManager( 286): service 'permission' died
04-15 10:11:53.010 I/ServiceManager( 286): service 'display.qservice' died
04-15 10:11:53.360 E/sensorsd( 1038): recvmsg failed: Connection reset by peer
04-15 10:11:53.360 I/ServiceManager( 286): service 'media.audio_flinger' died
04-15 10:11:53.360 I/ServiceManager( 286): service 'media.player' died
04-15 10:11:53.360 I/ServiceManager( 286): service 'media.camera' died
04-15 10:11:53.360 I/ServiceManager( 286): service 'listen.service' died
04-15 10:11:53.360 I/ServiceManager( 286): service 'media.audio_policy' died
Reporter | ||
Comment 2•9 years ago
|
||
including build log.
Comment 3•9 years ago
|
||
Well I am starting to think this is the same root cause as bug 1262180 and bug 1264655 except I have no idea why for now :/
Updated•9 years ago
|
Summary: B2G_DEBUG=1 for pine/kanikani does not boot → B2G_DEBUG=1 for pine/kanikani does not boot: Assertion failure: originAttrsLoadInfo.mInIsolatedMozBrowser == loadContextIsInBE
Comment 4•9 years ago
|
||
Also reproduced on mulet with debug build. It is not loading at all anymore :/
Comment 5•9 years ago
|
||
Comment 7•9 years ago
|
||
> (rr) print originAttrsLoadInfo
> $10 = {<mozilla::dom::OriginAttributesDictionary> = {<mozilla::dom::DictionaryBase> = {mIsAnyMemberPresent = false}, mAddonId = {<nsAString_internal> = {mData = 0x7f9f7b3b4f3c <gNullChar> u"", mLength = 0, mFlags = 1}, <No data fields>}, mAppId = 0,
> mInIsolatedMozBrowser = false, mSignedPkg = {<nsAString_internal> = {mData = 0x7f9f7b3b4f3c <gNullChar> u"", mLength = 0, mFlags = 1}, <No data fields>}, mUserContextId = 0}, <No data fields>}
> (rr) print loadContextIsInBE
> $11 = true
> (rr) print originAttrsLoadInfo.mInIsolatedMozBrowser
> $12 = false
Comment 8•9 years ago
|
||
Christoph, I suspect there is something bad going on with the channels we are building/manipulating at some point, and this would result in inconsistent load info. Do you have any idea where I should check deeper/investigate? Thanks!
Flags: needinfo?(ckerschb)
Comment 9•9 years ago
|
||
Maybe Dragana would know more? Any help is welcome :)
Flags: needinfo?(dd.mozilla)
Comment 10•9 years ago
|
||
Disabling OOP does not help :/
Comment 11•9 years ago
|
||
I had a short look at this, I think this is going to hit all not just b2g.
Comment 12•9 years ago
|
||
(In reply to Dragana Damjanovic [:dragana] from comment #11)
> I had a short look at this, I think this is going to hit all not just b2g.
Hit every platform? Just to be clear, I don't think you are breaking anything but rather exposing earlier the issue we have in bug 1262180 and bug 1264655 :)
Comment 13•9 years ago
|
||
What you could do is the following: Find out where the channel is created and most importantly what arguments are used for NS_NewChannel. The best way to do this is print the URL of the channel (channel->GetURI(getter_Addrefs(tmpURI));) shortly before the assertion is triggered.
Once you have the URI of the channel you can set a breakpoint within nsIOService::NewChannelFromURIWithProxyFlagsInternal when that specific URI is created and work your way backwards scrolling through the stacktrace.
Once you have that you can compare the info in the loadContext and loadInfo and maybe we can find out where the code diverges. Does that make sense to you?
We have similar problems elsewhere, e.g. Bug 1264230 and also Bug 1264231. Once we have figured the problem for one of those bugs, most likely we can apply the same (or at least similar) fix to the other related bugs.
Flags: needinfo?(ckerschb)
Comment 14•9 years ago
|
||
Thanks, I'll look into this !
Comment 15•9 years ago
|
||
> nsIOService::NewChannelFromURIWithProxyFlagsInternal(): URI@0x7f8d6c8ed500 channel@0x7ffeb90a1ab0 aURI=file:///home/alex/codaz/Mozilla/b2g/gaia/profile/apps/system/style/system/initlogo.css
> nsIOService::NewChannelFromURIWithProxyFlagsInternal(): URI@0x7f8d65a43e00 channel@0x7ffeb90a1e10 aURI=chrome://gaia/content/system/style/system/initlogo.css
> NS_CompareLoadInfoAndLoadContext(): Will assert isolation for URI@0x7ffeb90a1fc8 aChannel@0x7f8d6e840250 aChannel: file:///home/alex/codaz/Mozilla/b2g/gaia/profile/apps/system/style/system/initlogo.css
> Assertion failure: originAttrsLoadInfo.mInIsolatedMozBrowser == loadContextIsInBE (The value of InIsolatedMozBrowser in the loadContext and in the loadInfo are not the same!), at /home/alex/codaz/Mozilla/gecko-cinnabar/netwerk/base/nsNetUtil.cpp:2424
So we are asserting when manipulating the channel of "file:///home/alex/codaz/Mozilla/b2g/gaia/profile/apps/system/style/system/initlogo.css"
Comment hidden (obsolete) |
Comment hidden (obsolete) |
Comment 18•9 years ago
|
||
Previous one was wrong
Comment 19•9 years ago
|
||
We are building loadInfo here: https://dxr.mozilla.org/mozilla-central/rev/1da1937a9e03154ae7c60089f2dcf5ad9ee20fa3/netwerk/base/nsIOService.cpp#878
Comment 20•9 years ago
|
||
Comment 21•9 years ago
|
||
We are entering the creation of loadInfo with aLoadingPrincipal=0x7f8d90bfde20 aTriggeringPrincipal=0x7f8d90bfde20
And at the end of the LoadInfo constructor, we are inheritating the origin attributes: |InheritOriginAttributes(mLoadingPrincipal, mOriginAttributes);|
So does it makes sense we have the same principal as "loading" and "triggering" ? And could we be manipulating the wrong loading principal?
Comment 22•9 years ago
|
||
(In reply to Alexandre LISSY :gerard-majax from comment #21)
> So does it makes sense we have the same principal as "loading" and
> "triggering" ? And could we be manipulating the wrong loading principal?
Yes, it makes sense (actually most of the time) the loadingPrincipal and the TrigginerPrincipal are identical. Where do we call NS_NewChannel()? Can you post the whole stacktrace? Most likely the loadingPricnipal is the systemPricnipal so that might already provide a hint why the assertion is triggered.
Comment 23•9 years ago
|
||
Isn't the stack in attachment 8742304 [details] good?
Comment 24•9 years ago
|
||
(In reply to Christoph Kerschbaumer [:ckerschb] from comment #22)
> (In reply to Alexandre LISSY :gerard-majax from comment #21)
> > So does it makes sense we have the same principal as "loading" and
> > "triggering" ? And could we be manipulating the wrong loading principal?
>
> Yes, it makes sense (actually most of the time) the loadingPrincipal and the
> TrigginerPrincipal are identical. Where do we call NS_NewChannel()? Can you
> post the whole stacktrace? Most likely the loadingPricnipal is the
> systemPricnipal so that might already provide a hint why the assertion is
> triggered.
In the stack linked above, the call would come from https://dxr.mozilla.org/mozilla-central/rev/1da1937a9e03154ae7c60089f2dcf5ad9ee20fa3/layout/style/Loader.cpp#1636 |NS_NewChannelWithTriggeringPrincipal()|
Comment 25•9 years ago
|
||
So, after Christoph's suggestion, I checked the call path of LoadSheet(): if I add a call |NS_CompareLoadInfoAndLoadContext(channel);| right after the channel's creation, the assertion gets hit also.
Flags: needinfo?(jonas)
See Also: → 1266022
Comment 26•9 years ago
|
||
Marking as fixed-in-pine thanks to workaround in bug 1266064
Updated•9 years ago
|
Whiteboard: fixed-in-pine
I suggest working with Dragana to figure out why we hit these assertions. They are intended to catch real bugs so just removing them is not a great solution.
Dragana was quite good at tracking down the source of other places where we assert, so deferring to her.
Flags: needinfo?(jonas)
Comment 28•9 years ago
|
||
Might be fixed by bug 1266022, we'll know after m-c => pine merge
Updated•9 years ago
|
Flags: needinfo?(dd.mozilla)
Comment 30•9 years ago
|
||
(In reply to Christoph Kerschbaumer [:ckerschb] from comment #22)
> (In reply to Alexandre LISSY :gerard-majax from comment #21)
> > So does it makes sense we have the same principal as "loading" and
> > "triggering" ? And could we be manipulating the wrong loading principal?
>
> Yes, it makes sense (actually most of the time) the loadingPrincipal and the
> TrigginerPrincipal are identical. Where do we call NS_NewChannel()? Can you
> post the whole stacktrace? Most likely the loadingPricnipal is the
> systemPricnipal so that might already provide a hint why the assertion is
> triggered.
Yes, the loading principal is the system principal. The document creating the XHR is chrome://gaia/system/index.html. Like Alexandre said, we create the channel passing that document, and in the LoadInfo constructor we inherit the attributes from the system principal.
The loadContext seems to be correct. It's being created back when we create the system app frame here: https://dxr.mozilla.org/mozilla-central/source/b2g/chrome/content/shell.js#367-373
Comment 31•9 years ago
|
||
I'm mentioning XHR because in my tests the assertion is hit from web_manifest_helper.js trying to load https://m.facebook.com/manifest.webapp via XHR.
Comment 32•8 years ago
|
||
Bug 1264231 is about to land, we should check what it gives on a debug build
Depends on: 1264231
See Also: → 1295011
Updated•8 years ago
|
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WONTFIX
Updated•8 years ago
|
Flags: needinfo?(dd.mozilla)
You need to log in
before you can comment on or make changes to this bug.
Description
•