Closed Bug 1355212 Opened 7 years ago Closed 7 years ago

Crash in @0x0 | mozilla::net::LoadInfo::GetExternalContentPolicyType [lastpass?]

Categories

(Core :: Networking, defect)

x86_64
Linux
defect
Not set
critical

Tracking

()

RESOLVED DUPLICATE of bug 1354294

People

(Reporter: WeirdAl, Unassigned)

Details

(Keywords: crash, Whiteboard: [necko-next])

Crash Data

This bug was filed from the Socorro interface and is 
report bp-10dca5e7-ee9a-454b-a6c4-cc38d2170410.
=============================================================

I've had four different crashes today alone with this signature:
bp-9bf93e9e-5c05-45b4-a718-9d2322170410
bp-74f4ac61-3e8c-456d-a06c-ca4a82170410
bp-dfab3f2c-2866-4056-837a-95a072170410

FF52.0.2 stock, Fedora Linux 25.
you have a number of addons.. it looks like one of them is doing something with a null loadinfo. can you use safe mode to try and narrow down the addon?

https://support.mozilla.org/t5/Procedures-to-diagnose-and-fix/Troubleshoot-Firefox-issues-using-Safe-Mode/ta-p/1687
That's going to be difficult, considering I don't have steps to reproduce this crash.
I have a test case, but it's not reduced. I'm going to work on reducing it later, but we've been running into this on our own website, and the problem is demonstrable on public-facing pages.

https://www.inspire.com/groups/womenheart/ (scroll back and forth - the faster the better)

In this case, the bug seems to be triggered by one or more of the following factors:

 * Scroll-related events.
 * Ads loading from DFP (Doubleclick For Publishers, the ad network we use).
 * Our "sleight of hand" code, which unloads and refreshes ads as you scroll up and down through infinite scroll. This feature was necessary to keep the total ads-on-page low, on pages with heavy animated ads. Imagine stacking up 5 pages worth of HTML5-animating ads (which may not necessarily be coded for performance in the first place) and you can understand why we try to do magic with off-page ad spaces.

Based on stack traces, the underlying issue probably has more to do with timer/event-dispatch logic than something as specific as the factors listed above.
thanks philip - can you make sure to check safe mode once you have a repro?
or if you have different crashes about:crashes they might be worth a glance..
Previous crashes that I believe are the same pathology:

bp-7c38d579-8b50-4ac3-96ec-a42912170411
bp-067d23cd-01e0-4fb7-8d53-b27582170411
bp-c32c145e-955f-4369-82b6-fce1f2170411
bp-2c3518f4-9cc4-4fef-9c70-0d8822170411
bp-82890fbe-b05c-4674-81a2-757dc2170411
bp-f9190ed2-dd30-4a1d-8130-2b2ac2170410
bp-b4a17f89-a050-4866-a478-9b6762170410
bp-2d0fbd2c-04a9-43c1-b7d3-d2e112170410
bp-29bb4bc7-9b81-4d3a-81b6-99d692170410
bp-1c785513-44c9-4664-b2de-27dbe2170410
bp-95351304-7fb2-4ed1-bef0-68a1e2170410

Tellingly, I cannot seem to reproduce in safe mode, which definitely points a finger at addons. The only interesting one I have is LastPass, so I'm going to see if I can confirm that non-safe-mode Firefox works with LastPass disabled, and fails with LastPass enabled.
LastPass is really solidly implicated now. I disabled LP and could not reproduce. I re-enabled LP, and at first I could not reproduce, but I saw these errors in CLI output, indicating that LP was feeling queasy from the off/on cycle and not doing everything it normally would:

console.error: LastPass: Free Password Manager: 
  Message: TypeError: g_tabs.activeTab is null
  Stack:
    e.onTabClosed/t@resource://gre/modules/commonjs/toolkit/loader.js -> resource://support-at-lastpass-dot-com/lib/main.js:40:4438
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:112:9
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:112:9
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:123:45
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
tabEmit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/tab-firefox.js:263:31
tabEventListener@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/tab-firefox.js:328:23
windowClosed@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/tab-firefox.js:272:5
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:112:9
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
initialize/<.onUntrack@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/windows/observer.js:28:9
_unregWindow@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/window-utils.js:106:9
observe@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/window-utils.js:147:7

console.error: LastPass: Free Password Manager: 
  Message: TypeError: g_tabs.activeTab is null
  Stack:
    e.onTabClosed/t@resource://gre/modules/commonjs/toolkit/loader.js -> resource://support-at-lastpass-dot-com/lib/main.js:40:4438
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:112:9
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:112:9
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:123:45
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
tabEmit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/tab-firefox.js:263:31
tabEventListener@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/tab-firefox.js:328:23
windowClosed@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/tabs/tab-firefox.js:272:5
emitOnObject@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:112:9
emit@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/event/core.js:89:38
initialize/<.onUntrack@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/windows/observer.js:28:9
_unregWindow@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/window-utils.js:106:9
observe@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/commonjs/sdk/deprecated/window-utils.js:147:7

So I restarted FF, with LP enabled, and sho' nuff. When LP is working at full capacity, on that URL, it uses that capacity to strangle Firefox barehanded.
Summary: Crash in @0x0 | mozilla::net::LoadInfo::GetExternalContentPolicyType → Crash in @0x0 | mozilla::net::LoadInfo::GetExternalContentPolicyType [lastpass?]
christoph, any thoughts on how to proceed?
Flags: needinfo?(ckerschb)
(In reply to Patrick McManus [:mcmanus] from comment #8)
> christoph, any thoughts on how to proceed?

I installed LastPass and tried to reproduce using the steps provided within comment 3. Unfortunately I can't reproduce the crash. I tried several techniques, but apparently I am not scrolling fast enough :-) Anyway, the stack traces indicate that a loadInfo is null when we try to call GetExternalContentPolicyType, hence I manually traced all the callsites [1]. I actually double checked  but it seems that all calls to GetExternalContentPolicyType are guarded by a null check for the loadInfo.

I think unless we get better STRs or a better stacktrace there is nothing we can do at the moment :-(

Should we get QA on it?

[1] https://dxr.mozilla.org/mozilla-release/search?q=GetExternalContentPolicyType&redirect=false
Flags: needinfo?(ckerschb) → needinfo?(mcmanus)
we've got two reporters so QA ought to be able to get us a STR. jason can help.
Flags: needinfo?(mcmanus) → needinfo?(jduell.mcbugs)
Whiteboard: [necko-next]
I'm not sure it is related but since a few days ago, LP started not working properly (the drop down menu from the add on button doesn't work, but autofill & al works) and I see the same error in the logs (g_tabs.activeTab is null) even when starting from a fresh profile (using nightly on Linux x86_64)
The crash doesn't happen anymore since Firefox 53.  It seems like a dup of bug 1354294 which has been resolved.
Status: NEW → RESOLVED
Closed: 7 years ago
Resolution: --- → DUPLICATE
Flags: needinfo?(jduell.mcbugs)
You need to log in before you can comment on or make changes to this bug.