Closed Bug 1389784 Opened 3 years ago Closed 3 years ago

Firefox 57 regression: ghost tabs (can't select the browser, get errors implying there's no browser hooked up to the tab)

Categories

(Firefox :: Tabbed Browser, defect, P1)

All
macOS
defect

Tracking

()

RESOLVED FIXED
Firefox 58
Tracking Status
firefox-esr52 --- unaffected
firefox56 --- unaffected
firefox57 + fixed
firefox58 --- fixed

People

(Reporter: soeren.hentzschel, Assigned: kmag)

References

Details

(Keywords: regression, regressionwindow-wanted)

Attachments

(2 files)

There seems to be a regression in Firefox 57 Nightly. But I have no idea how to reproduce…

I attached a screenshot. There you can see two tabs with the title "New Tab". These are "ghosts", I can't activate these tabs. I can click on these tabs but nothing happens. All other tabs are working as expected. It happened after opening a new tab with cmd + t (on macOS).

I use Firefox every day for several hours. But it happened only 1x two days ago and only 1x yesterday. And today it happened again. It never happened all the years before.

The only way to close these tabs is to restart Firefox.

If I click one of the ghosts, the console shows warnings like:

aBrowser is undefined (PrivateBrowsingUtils.jsm:37)

and also:

TypeError: invalid 'in' operand browser (tabbrowser.xml:2319:1)

And the following error is triggered by clicking on *any* tab (not only one of the ghost tabs:

TypeError: browser is undefined (TabState.jsm:100:1)

As it only happened 1x/per several hours per day I can't use mozregression to find a regression range…

I have only one add-on installed: Adblock Plus development build 1.13.3.1797 (it's a WebExtension)
Hard to say much here without STR, but it sounds like somehow there's no <browser> linked to the tab. Maybe Kevin Jones, Dão or Mike have ideas about how that happened...
Component: General → Tabbed Browser
Summary: Firefox 57 regression: ghost tabs → Firefox 57 regression: ghost tabs (can't select the browser, get errors implying there's no browser hooked up to the tab)
I was not able to reproduce the issue the last few days but a few minutes ago the same happened with the add-on manager after using cmd + shift + a. I had to restart Firefox to close the tab.

The tab had no favicon and the title was "about:addons". Usually the tab has a favicon and the title is "Add-ons Manager".
Maybe related, because it's a similar error: Now I am on a different computer with macOS 10.11 (my private computer has 10.13 Beta installed). A few minutes ago after pressing cmd + w for closing a tab *all* tabs became ghost tabs.

The console logged the following message a few times per second (!):

> TypeError: oldBrowser is null

There seems to be something really broken with the tabs. Since I was able to experience this on a different computer it's probably not a broken profile on my private computer.
(In reply to Sören Hentzschel from comment #3)
> The console logged the following message a few times per second (!):
> 
> > TypeError: oldBrowser is null

Can you show the stack trace?
Unfortunately I forgot to copy more than this line, I only still know that is was an error in tabbrowser.xml. :-/ The next time I will copy the stack trace.
Now the problem from comment 0 appeared again. The following errors were in the browser console every time after clicking the ghost tab:

aBrowser is undefined  PrivateBrowsingUtils.jsm:37
Unchecked lastError value: Error: An unexpected error occurred  ExtensionCommon.jsm:407
tabs is undefined  background.js:466

Stack traces:

aBrowser is undefined  PrivateBrowsingUtils.jsm:37
	isBrowserPrivate resource://gre/modules/PrivateBrowsingUtils.jsm:37:9
	get _incognito chrome://extensions/content/ext-tabs-base.js:178:12
	<anonymous> chrome://extensions/content/ext-tabs-base.js:665:63
	get resource://gre/modules/ExtensionUtils.jsm:469:29
	convert chrome://extensions/content/ext-tabs-base.js:494:7
	getAPI/query/< chrome://browser/content/ext-tabs.js:502:36
	from self-hosted:616:17
	query chrome://browser/content/ext-tabs.js:501:18
	InterpretGeneratorResume self-hosted:1281:8
	next self-hosted:1188:9

Unchecked lastError value: Error: An unexpected error occurred  ExtensionCommon.jsm:407
	withLastError resource://gre/modules/ExtensionCommon.jsm:407:9
	wrapPromise/< resource://gre/modules/ExtensionCommon.jsm:460:11

tabs is undefined  background.js:466
	updateContextMenu/</< moz-extension://fd657527-51df-1c42-b57f-0bde2e45cc91/ext/background.js:466:1
	apply self-hosted:4121:5
	applySafeWithoutClone resource://gre/modules/ExtensionCommon.jsm:285:16
	applySafeWithoutClone self-hosted:954:17
	wrapPromise/< resource://gre/modules/ExtensionCommon.jsm:456:13
	
There were also the following errors in the console before interacting with the ghost tab:

TypeError: invalid 'in' operand browser[Learn More]  tabbrowser.xml:2342:1
	_insertBrowser chrome://browser/content/tabbrowser.xml:2342:1
	getRelatedElement chrome://browser/content/tabbrowser.xml:6870:11
	set_selectedIndex chrome://global/content/bindings/tabbox.xml:403:31
	set_selectedItem chrome://global/content/bindings/tabbox.xml:441:34
	_selectNewTab chrome://global/content/bindings/tabbox.xml:486:11
	onxblmousedown chrome://global/content/bindings/tabbox.xml:808:11
	
TypeError: browser is undefined[Learn More]  TabState.jsm:100:1
(there was no stack trace)

Since Adblock Plus (WebExtension development version from https://downloads.adblockplus.org/devbuilds/adblockplusfirefox/) is my only add-on and there seems to be a relation to extensions according to the files  in the stack traces: is it possible that a WebExtension breaks the browser in such a way?
As it happened again… Kris, I ni? you because I wanted to ask you if it's possible that a WebExtension can cause such issues. If so it's a blocking issue for the release of Firefox 57. The development build of Adblock Plus [1] is my only installed add-on, so also ni? Wladimir so that it's on the radar of the ABP developers.

[1] https://downloads.adblockplus.org/devbuilds/adblockplusfirefox/

A new obersavation: if this happens, also the options page of Adblock Plus cannot be opened and the following messages appear in the browser console:

TypeError: browser is undefined[Learn More]  browser.js:8186:1
	switchIfURIInWindow chrome://browser/content/browser.js:8186:1
	switchToTabHavingURI chrome://browser/content/browser.js:8206:26
	openOptionsInTab chrome://mozapps/content/extensions/extensions.js:1596:5
	doCommand chrome://mozapps/content/extensions/extensions.js:1215:13
	doCommand chrome://mozapps/content/extensions/extensions.js:1581:5
	showPreferences chrome://mozapps/content/extensions/extensions.xml:1613:11
	oncommand about:addons:1:1

TypeError: url is undefined[Learn More]  SessionStore.jsm:3443:9
	prepareConnectionToHost resource:///modules/sessionstore/SessionStore.jsm:3443:9
	speculativeConnectOnTabHover resource:///modules/sessionstore/SessionStore.jsm:3463:22
	speculativeConnectOnTabHover resource:///modules/sessionstore/SessionStore.jsm:346:5
	_mouseenter chrome://browser/content/tabbrowser.xml:7722:11
	onxblmouseover chrome://browser/content/tabbrowser.xml:7873:9
Flags: needinfo?(trev.moz)
Flags: needinfo?(kmaglione+bmo)
It looks like the only way this should be possible is if something throws somewhere in this range:

http://searchfox.org/mozilla-central/rev/f2a1911ad310bf8651f342d719e4f4ca0a7b9bfb/browser/base/content/tabbrowser.xml#2606-2666

If that's happening, it should theoretically generate an error of its own, but it's possible that error is being swallowed.
Flags: needinfo?(kmaglione+bmo)
Thank you for letting me know. I doubt that this is really related to Adblock Plus however, its potential impact is fairly low now. So far I am not aware of any users complaining about this issue, will keep an eye on this.
Flags: needinfo?(trev.moz)
Since it's still happening for me almost every day (different computers and Firefox profiles, only one WebExtension installed) is there anything else what I can do to help finding the problem?
I'm beginning to wonder if this is caused by bug 1401846.  Are you opening multiple windows by chance?
Flags: needinfo?(cadeyrn)
I use only one browser window.
Flags: needinfo?(cadeyrn)
Do you have any tabs with file: URLs, by chance?
only http:// and https:// URLs and sometimes an about: page like about:addons or about:preferences.
OK, I'll add some debugging code to figure out where exactly it's failing.
Will the debugging code be in the regular Nightly or will there be "special debugging builds"? Do you know when it's ready for testing? Since it can't be reliable reproduced it can take a few days to get a helpful result. Maybe we can find the cause of the problem before the release of Firefox 57. ;)
ni? to kmag for comment 16.
Flags: needinfo?(kmaglione+bmo)
This bug sounds marginally serious, and it sounds like Sören is hitting it without any add-ons enabled. I'm curious, why was this made fix-optional, and should we be making this tracking-57?
Flags: needinfo?(jmathies)
> and it sounds like Sören is hitting it without any add-ons enabled

one add-on is enabled: Adblock Plus (WebExtension Beta). ;)
(In reply to Sören Hentzschel from comment #19)
> > and it sounds like Sören is hitting it without any add-ons enabled
> 
> one add-on is enabled: Adblock Plus (WebExtension Beta). ;)

My apologies - I missed that part!

Still, as ABP is one of the more popular add-ons, and (if all goes well) a large percentage of our users are going to migrate to the WebExtension version come Firefox 57, this still sounds worth tracking imo.
[Tracking Requested - why for this release]:

(In reply to Mike Conley (:mconley) (:⚙️) - Backlogged on reviews from comment #18)
> This bug sounds marginally serious, and it sounds like Sören is hitting it
> without any add-ons enabled. I'm curious, why was this made fix-optional,

I don't remember the exact discussion during triage but I can guess from experience - sporadic bug, single report, no str.

> and should we be making this tracking-57?

I think moving this back into 57 triage makes sense. I'm not sure this should block since we still only have one report here and I haven't seen any other bugs like this in 57. Flagging for consideration though.
Flags: needinfo?(jmathies)
Sören, would you mind visiting about:support and posting a copy of your support text please?
Flags: needinfo?(cadeyrn)
OS: Unspecified → Windows
Hardware: Unspecified → All
Application Basics
------------------

Name: Firefox
Version: 58.0a1
Build ID: 20171002100134
Update Channel: nightly
User Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10.13; rv:58.0) Gecko/20100101 Firefox/58.0
OS: Darwin 17.0.0
Multiprocess Windows: 1/1 (Enabled by default)
Web Content Processes: 4/4
Stylo: true (enabled by default)
Google Key: Found
Mozilla Location Service Key: Found
Safe Mode: false

Crash Reports for the Last 3 Days
---------------------------------

All Crash Reports

Firefox Nightly Features
------------------------

Name: Activity Stream
Version: 2017.09.29.0895-52552f5e
ID: activity-stream@mozilla.org

Name: Application Update Service Helper
Version: 2.0
ID: aushelper@mozilla.org

Name: Firefox Screenshots
Version: 19.1.0
ID: screenshots@mozilla.org

Name: FlyWeb
Version: 1.0.0
ID: flyweb@mozilla.org

Name: Follow-on Search Telemetry
Version: 0.9.3
ID: followonsearch@mozilla.com

Name: Form Autofill
Version: 1.0
ID: formautofill@mozilla.org

Name: Multi-process staged rollout
Version: 3.05
ID: e10srollout@mozilla.org

Name: Photon onboarding
Version: 0.1
ID: onboarding@mozilla.org

Name: Pocket
Version: 1.0.5
ID: firefox@getpocket.com

Name: Presentation
Version: 1.0.0
ID: presentation@mozilla.org

Name: Shield Recipe Client
Version: 76
ID: shield-recipe-client@mozilla.org

Name: Web Compat
Version: 1.1
ID: webcompat@mozilla.org

Name: WebCompat Reporter
Version: 1.0.0
ID: webcompat-reporter@mozilla.org

Extensions
----------

Name: Adblock Plus development build
Version: 2.99.0.1867beta
Enabled: true
ID: {d10d0bf8-f5b5-c8b4-a8b2-2b9879e08c5d}

Graphics
--------

Features
Compositing: OpenGL
Asynchronous Pan/Zoom: wheel input enabled; scrollbar drag enabled; keyboard enabled; autoscroll enabled
WebGL 1 Driver WSI Info: CGL
WebGL 1 Driver Renderer: NVIDIA Corporation -- NVIDIA GeForce GT 750M OpenGL Engine
WebGL 1 Driver Version: 4.1 NVIDIA-10.24.28 355.11.10.10.10.160
WebGL 1 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier
WebGL 1 Extensions: ANGLE_instanced_arrays EXT_blend_minmax EXT_color_buffer_half_float EXT_frag_depth EXT_sRGB EXT_shader_texture_lod EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_element_index_uint OES_standard_derivatives OES_texture_float OES_texture_float_linear OES_texture_half_float OES_texture_half_float_linear OES_vertex_array_object WEBGL_color_buffer_float WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_depth_texture WEBGL_draw_buffers WEBGL_lose_context
WebGL 2 Driver WSI Info: CGL
WebGL 2 Driver Renderer: NVIDIA Corporation -- NVIDIA GeForce GT 750M OpenGL Engine
WebGL 2 Driver Version: 4.1 NVIDIA-10.24.28 355.11.10.10.10.160
WebGL 2 Driver Extensions: GL_ARB_blend_func_extended GL_ARB_draw_buffers_blend GL_ARB_draw_indirect GL_ARB_ES2_compatibility GL_ARB_explicit_attrib_location GL_ARB_gpu_shader_fp64 GL_ARB_gpu_shader5 GL_ARB_instanced_arrays GL_ARB_internalformat_query GL_ARB_occlusion_query2 GL_ARB_sample_shading GL_ARB_sampler_objects GL_ARB_separate_shader_objects GL_ARB_shader_bit_encoding GL_ARB_shader_subroutine GL_ARB_shading_language_include GL_ARB_tessellation_shader GL_ARB_texture_buffer_object_rgb32 GL_ARB_texture_cube_map_array GL_ARB_texture_gather GL_ARB_texture_query_lod GL_ARB_texture_rgb10_a2ui GL_ARB_texture_storage GL_ARB_texture_swizzle GL_ARB_timer_query GL_ARB_transform_feedback2 GL_ARB_transform_feedback3 GL_ARB_vertex_attrib_64bit GL_ARB_vertex_type_2_10_10_10_rev GL_ARB_viewport_array GL_EXT_debug_label GL_EXT_debug_marker GL_EXT_depth_bounds_test GL_EXT_framebuffer_multisample_blit_scaled GL_EXT_texture_compression_s3tc GL_EXT_texture_filter_anisotropic GL_EXT_texture_mirror_clamp GL_EXT_texture_sRGB_decode GL_APPLE_client_storage GL_APPLE_container_object_shareable GL_APPLE_flush_render GL_APPLE_object_purgeable GL_APPLE_rgb_422 GL_APPLE_row_bytes GL_APPLE_texture_range GL_ATI_texture_mirror_once GL_NV_texture_barrier
WebGL 2 Extensions: EXT_color_buffer_float EXT_texture_filter_anisotropic EXT_disjoint_timer_query OES_texture_float_linear WEBGL_compressed_texture_s3tc WEBGL_compressed_texture_s3tc_srgb WEBGL_debug_renderer_info WEBGL_debug_shaders WEBGL_lose_context
GPU #1
Active: Yes
Vendor ID: 0x10de
Device ID: 0x0fe9

Diagnostics
AzureCanvasAccelerated: 1
AzureCanvasBackend: skia
AzureContentBackend: skia
AzureFallbackCanvasBackend: none
TileHeight: 1024
TileWidth: 1024
Decision Log
WEBRENDER:
opt-in by default: WebRender is an opt-in feature




Media
-----

Audio Backend: audiounit
Max Channels: 2
Preferred Channel Layout: stereo
Preferred Sample Rate: 44100
Output Devices
Name: Group
Internal Speakers: AppleHDAEngineOutput:1B,0,1,1:0
Input Devices
Name: Group
Internal Microphone: AppleHDAEngineInput:1B,0,1,0:1

Important Modified Preferences
------------------------------

accessibility.typeaheadfind.flashBar: 0
browser.cache.disk.capacity: 358400
browser.cache.disk.filesystem_reported: 1
browser.cache.disk.smart_size.first_run: false
browser.cache.frecency_experiment: 3
browser.places.smartBookmarksVersion: 8
browser.sessionstore.upgradeBackup.latestBuildID: 20171002100134
browser.startup.homepage: about:home
browser.startup.homepage_override.buildID: 20171002100134
browser.startup.homepage_override.mstone: 58.0a1
browser.tabs.warnOnOpen: false
browser.urlbar.lastSuggestionsPromptDate: 20170816
browser.urlbar.timesBeforeHidingSuggestionsHint: 0
browser.urlbar.usepreloadedtopurls.enabled: false
dom.forms.autocomplete.formautofill: true
extensions.lastAppVersion: 58.0a1
font.internaluseonly.changed: false
media.benchmark.vp9.fps: 205
media.benchmark.vp9.versioncheck: 2
media.gmp-gmpopenh264.abi: x86_64-gcc3
media.gmp-gmpopenh264.lastUpdate: 1502902135
media.gmp-gmpopenh264.version: 1.6
media.gmp-manager.buildID: 20171002100134
media.gmp-manager.lastCheck: 1506962447
media.gmp-widevinecdm.abi: x86_64-gcc3
media.gmp-widevinecdm.lastUpdate: 1504276315
media.gmp-widevinecdm.version: 1.4.8.1008
media.gmp.storage.version.observed: 1
network.cookie.prefsMigrated: true
network.predictor.cleaned-up: true
places.database.lastMaintenance: 1506850264
places.history.expiration.transient_current_max_pages: 125902
plugin.disable_full_page_plugin_for_types: application/pdf
plugin.state.flash: 0
print.printer__.print_bgcolor: false
print.printer__.print_bgimages: false
print.printer__.print_duplex: -437918235
print.printer__.print_edge_bottom: 0
print.printer__.print_edge_left: 0
print.printer__.print_edge_right: 0
print.printer__.print_edge_top: 0
print.printer__.print_evenpages: true
print.printer__.print_footercenter:
print.printer__.print_footerleft: &PT
print.printer__.print_footerright: &D
print.printer__.print_headercenter:
print.printer__.print_headerleft: &T
print.printer__.print_headerright: &U
print.printer__.print_in_color: true
print.printer__.print_margin_bottom: 0.5
print.printer__.print_margin_left: 0.5
print.printer__.print_margin_right: 0.5
print.printer__.print_margin_top: 0.5
print.printer__.print_oddpages: true
print.printer__.print_orientation: 0
print.printer__.print_page_delay: 50
print.printer__.print_paper_data: 0
print.printer__.print_paper_height: 11.69
print.printer__.print_paper_name: iso-a4
print.printer__.print_paper_size_unit: 0
print.printer__.print_paper_width: 8.26
print.printer__.print_resolution: -437918235
print.printer__.print_reversed: false
print.printer__.print_scaling: 1.00
print.printer__.print_shrink_to_fit: true
print.printer__.print_to_file: false
print.printer__.print_unwriteable_margin_bottom: 57
print.printer__.print_unwriteable_margin_left: 25
print.printer__.print_unwriteable_margin_right: 25
print.printer__.print_unwriteable_margin_top: 25
privacy.cpd.cookies: false
privacy.cpd.downloads: false
privacy.cpd.formdata: false
privacy.cpd.history: false
privacy.cpd.sessions: false
privacy.sanitize.timeSpan: 0
security.sandbox.content.tempDirSuffix: {f728e138-9388-4e4e-8f13-d457306b7872}
services.sync.declinedEngines: prefs,addons
services.sync.engine.addons: false
services.sync.engine.addresses.available: true
services.sync.engine.bookmarks.validation.lastTime: 1506962865
services.sync.engine.history: false
services.sync.engine.prefs: false
services.sync.lastPing: 1506962862
services.sync.lastSync: Mon Oct 02 2017 23:53:45 GMT+0200 (CEST)
storage.vacuum.last.index: 1
storage.vacuum.last.places.sqlite: 1505556270

Important Locked Preferences
----------------------------

Places Database
---------------

JavaScript
----------

Incremental GC: true

Accessibility
-------------

Activated: false
Prevent Accessibility: 0

Library Versions
----------------

NSPR
Expected minimum version: 4.17
Version in use: 4.17

NSS
Expected minimum version: 3.33
Version in use: 3.33

NSSSMIME
Expected minimum version: 3.33
Version in use: 3.33

NSSSSL
Expected minimum version: 3.33
Version in use: 3.33

NSSUTIL
Expected minimum version: 3.33
Version in use: 3.33

Experimental Features
---------------------

Sandbox
-------

Content Process Sandbox Level: 3
Effective Content Process Sandbox Level: 3
Flags: needinfo?(cadeyrn)
OS: Windows → Mac OS X
Comment on attachment 8914900 [details]
Bug 1389784: Recover gracefully when we fail to create a tab browser.

https://reviewboard.mozilla.org/r/186158/#review191204

Seems fine - hopefully we can figure out the root cause in the future rather than performing this recovery :-).
Attachment #8914900 - Flags: review?(nika) → review+
Comment on attachment 8914900 [details]
Bug 1389784: Recover gracefully when we fail to create a tab browser.

https://reviewboard.mozilla.org/r/186158/#review191204

Agreed. I'm hoping this will help us figure out how this is currently failing. There are still a bunch of places where we silently eat exceptions, so the explicit reporting should give us some clue.
https://hg.mozilla.org/integration/mozilla-inbound/rev/f1f4f04b54fbfe8c5be970834e7e91b35e8e10d6
Bug 1389784: Recover gracefully when we fail to create a tab browser. r=mystor
Priority: -- → P1
https://hg.mozilla.org/mozilla-central/rev/f1f4f04b54fb
Status: NEW → RESOLVED
Closed: 3 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 58
Thank you for working on this, Kris!

> This change should both prevent the worst effects of these failures, and also give use better error reporting so that we can properly debug them.

It's great that this patch should prevent the worst effects of these failures and that there is a better error reporting now. But assuming it prevents the ghost tabs how do I know when the root cause happens again in the future so that I can report the errors?
is that something that we want to uplift to 57?
Assignee: nobody → kmaglione+bmo
Yes, we'll need to uplift this.
(In reply to Sören Hentzschel from comment #29)
> It's great that this patch should prevent the worst effects of these
> failures and that there is a better error reporting now. But assuming it
> prevents the ghost tabs how do I know when the root cause happens again in
> the future so that I can report the errors?

A tab will fail to open, and you'll see "Failed to create tab" in the browser console, followed by an error message.
Flags: needinfo?(kmaglione+bmo)
Comment on attachment 8914900 [details]
Bug 1389784: Recover gracefully when we fail to create a tab browser.

Approval Request Comment
[Feature/Bug causing the regression]: Unclear, but seems to have become an issue in Firefox 57
[User impact if declined]: This causes users to wind up with unclosable tabs in certain situations, and may require them to restart their browser.
[Is this code covered by automated tests?]: The affected tabbrowser code is, but this particular issue is not, since we don't yet know what causes it.
[Has the fix been verified in Nightly?]: No
[Needs manual test from QE? If yes, steps to reproduce]: The reporter should try to reproduce, but since we don't have reliable reproduction steps, that could take some time.
[List of other uplifts needed for the feature/fix]: None.
[Is the change risky?]: No.
[Why is the change risky/not risky?]: This simply adds an additional error check, and tries to cleanly handle failures that would otherwise result in a serious UI bug.
[String changes made/needed]: None.
Attachment #8914900 - Flags: approval-mozilla-beta?
Why wasn't this reviewed by a peer familiar with tabbrowser?
Hi Dao, Kris, Andy, I'll wait for a reply to comment 34 and general agreement this is ready for beta57 landing before approving it. Thanks!
Flags: needinfo?(kmaglione+bmo)
Flags: needinfo?(dao+bmo)
Flags: needinfo?(amckay)
(In reply to Dão Gottwald [::dao] from comment #34)
> Why wasn't this reviewed by a peer familiar with tabbrowser?

I believe mystor is sufficiently familiar with tabbrowser, and reviewed or wrote most of the remote browser handling changes that are likely to be responsible for this. And I'm a qualified Firefox peer with a decade of experience with tabbrowser. So I think we're sufficiently covered.
Flags: needinfo?(kmaglione+bmo)
I think this is important enough to be uplifted for 57.
Flags: needinfo?(amckay)
(In reply to Kris Maglione [:kmag] (long backlog; ping on IRC if you're blocked) from comment #36)
> (In reply to Dão Gottwald [::dao] from comment #34)
> > Why wasn't this reviewed by a peer familiar with tabbrowser?
> 
> I believe mystor is sufficiently familiar with tabbrowser, and reviewed or
> wrote most of the remote browser handling changes that are likely to be
> responsible for this.

Somehow causing this bug doesn't make someone a tabbrowser expert. mystor doesn't seem to have fixed a single bug in Firefox::Tabbed Browser ever.

For starters, I would have preferred a more restrictive patch that doesn't add a blame layer to a big chunk of code, since we rely heavily on blame to understand and fix tabbrowser bugs. Stuff like 'if (aOwner) t.owner = aOwner;' can't throw, so there was no point in moving it. Alas, it's too late to fix that now.

For future reference if nothing else, I'd also appreciate some background on what "remote browser handling changes" might have caused this -- so far this information seems completely absent from this bug.
Flags: needinfo?(dao+bmo)
Comment on attachment 8914900 [details]
Bug 1389784: Recover gracefully when we fail to create a tab browser.

must fix, beta57+
Attachment #8914900 - Flags: approval-mozilla-beta? → approval-mozilla-beta+
(In reply to Kris Maglione [:kmag] (long backlog; ping on IRC if you're blocked) from comment #36)
> I believe mystor is sufficiently familiar with tabbrowser, and reviewed or
> wrote most of the remote browser handling changes that are likely to be
> responsible for this.
Mystor could be added as peer then?
There are no reliable reproduction steps so the bugfix can't be verified for sure. But the reported issue did *not* happen again since the first Nightly build with this patch.
Duplicate of this bug: 1406606
I can reproduce the error message mentioned here ("invalid 'in' operand browser" in tabbrowser._insertBrowser) reliably - all you have to do is install the Adblock Plus development build (currently 2.99.0.1904beta), right-click an image on any page (e.g. one of the avatars in this bug report) and choose "Block element" from the context menu. Otherwise the symptoms are different however - the window opened shows up blank but that's no ghost tab from what I can tell but a rendering issue. Right-clicking the page or resizing makes the contents appear again. There is also no behavior difference between 2017-10-02 nightly and a current one from what I can tell. No such issue in Firefox 56 however.

I'll file a bug on the extension-created window showing up blank once I've finished investigating this issue.
See Also: → 1414243
(In reply to Wladimir Palant (for Adblock Plus info Cc bugzilla@adblockplus.org) from comment #44)
> There is also no behavior
> difference between 2017-10-02 nightly and a current one from what I can
> tell. No such issue in Firefox 56 however.

Can you use mozregression to narrow down when this broke?
Flags: needinfo?(gaubugzilla)
According to bug 1408446, this issue was introduced by bug 1379587.
Flags: needinfo?(gaubugzilla)
You need to log in before you can comment on or make changes to this bug.