Closed Bug 1164537 Opened 9 years ago Closed 9 years ago

3D view button not working in Nightly (e10s off)

Categories

(Firefox Graveyard :: Developer Tools: 3D View, defect)

41 Branch
defect
Not set
normal

Tracking

(e10s-, firefox39 unaffected, firefox40 fixed, firefox41 fixed)

VERIFIED FIXED
Firefox 41
Tracking Status
e10s - ---
firefox39 --- unaffected
firefox40 --- fixed
firefox41 --- fixed

People

(Reporter: nazar, Assigned: jryans)

References

Details

(Keywords: regression, Whiteboard: [Bugday-20150709])

Attachments

(1 file)

User Agent: Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:41.0) Gecko/20100101 Firefox/41.0
Build ID: 20150512195130

Steps to reproduce:

Open website, open developer tools, click "3D view"


Actual results:

Nothing, but in terminal (this issue specific things start from "console.error:"):

nazar-pc@nazar-pc ~> firefox-trunk 

(process:18066): GLib-CRITICAL **: g_slice_set_config: assertion 'sys_page_size == 0' failed
ATTENTION: default value of option force_s3tc_enable overridden by environment.
Can't find symbol 'glXCreateContextAttribsARB'.
console.error: 
  Message: Error: environment.chromeDocument is not available in runAt:server commands
  Stack:
    GcliActor<._getRequisition/this._requisitionPromise</environment.chromeDocument@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/gcli.js:260:17
exports.items<.exec@resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/tilt/tilt-commands.js:79:9
Requisition.prototype.exec/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/cli.js:2073:16
createAsyncFunction/asyncFunction@resource://gre/modules/Task.jsm:239:18
Task_spawn@resource://gre/modules/Task.jsm:164:12
exports.exec@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/util/host.js:72:10
Requisition.prototype.exec@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/cli.js:2072:14
Requisition.prototype.updateExec/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/cli.js:2112:12
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:867:23
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:746:7
this.PromiseWalker.scheduleWalkerLoop/<@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:688:37
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:688:5
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:709:7
Promise.prototype.then@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:417:5
GcliActor<.execute<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/gcli.js:116:12
actorProto/</handler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/protocol.js:1006:19
DSC_onPacket@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1456:15
LocalDebuggerTransport.prototype.send/<@resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/transport/transport.js:561:11
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82:14
makeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82:14

console.error: 
Object
    - isTypedData = true
    - data = {"columnNumber":16,"fileName":"resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/gcli.js","lineNumber":260,"message":"environment.chromeDocument is not available in runAt:server commands","stack":"GcliActor<._getRequisition/this._requisitionPromise</environment.chromeDocument@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/gcli.js:260:17\nexports.items<.exec@resource://gre/modules/commonjs/toolkit/loader.js -> resource:///modules/devtools/tilt/tilt-commands.js:79:9\nRequisition.prototype.exec/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/cli.js:2073:16\ncreateAsyncFunction/asyncFunction@resource://gre/modules/Task.jsm:239:18\nTask_spawn@resource://gre/modules/Task.jsm:164:12\nexports.exec@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/util/host.js:72:10\nRequisition.prototype.exec@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/cli.js:2072:14\nRequisition.prototype.updateExec/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/gcli/cli.js:2112:12\nHandler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:867:23\nthis.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:746:7\nthis.PromiseWalker.scheduleWalkerLoop/<@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:688:37\nPromise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:688:5\nthis.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:709:7\nPromise.prototype.then@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-backend.js:417:5\nGcliActor<.execute<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/actors/gcli.js:116:12\nactorProto/</handler@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/protocol.js:1006:19\nDSC_onPacket@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/server/main.js:1456:15\nLocalDebuggerTransport.prototype.send/<@resource://gre/modules/devtools/dbg-client.jsm -> resource://gre/modules/devtools/transport/transport.js:561:11\nmakeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82:14\nmakeInfallible/<@resource://gre/modules/commonjs/toolkit/loader.js -> resource://gre/modules/devtools/DevToolsUtils.js:82:14\n"}
    - type = error
WARNING: content window passed to PrivateBrowsingUtils.isWindowPrivate. Use isContentWindowPrivate instead (but only for frame scripts).
pbu_isWindowPrivate@resource://gre/modules/PrivateBrowsingUtils.jsm:25:14
@chrome://tabmixplus/content/changecode.js line 1 > eval:37:21



Expected results:

3D view turned on. Also, it works fine if Firefox stable on the same system
Component: Untriaged → Developer Tools: 3D View
Is e10s enabled?
Flags: needinfo?(nazar)
No, neither in Nightly with bug, nor in Stable where bug is not present.
Flags: needinfo?(nazar)
Status: UNCONFIRMED → NEW
Ever confirmed: true
Summary: 3D view button not working in Nightly → 3D view button not working in Nightly (e10s off)
Okay, I think this is a regression from the recent GCLI changes.

Joe, does the GCLI runAt refactor require that tilt be rebuilt, or can the current local tab only one be made to work again somehow?  There could be an easy fix, not sure.
Flags: needinfo?(jwalker)
TL;DR: Add runAt:'client' to all the tilt commands, I expect that will fix it.


The tilt commands do not have a runAt:... specifier, and they should.

There is an instance of GCLI in both processes, marked location:'client' and location:'server'. A GCLI process with a location will accept commands that have either no runAt (for backwards compat), or a matching runAt.

This means that both GCLIs are registering the tilt commands.

Then the server GCLI publishes an event to the client saying "I've got a new command" (gcli.js:21) and the client automatically creates a proxy command (system.js:346) so that when someone types 'tilt' in the client, the execution is proxied to the server.

Net result - commands without runAt specifiers actually execute in the server.

tilt-commands.js:79 uses context.environment.chromeDocument which is only available on the client, and we complain when they do that (gcli.js:256) so they need to execute the the client.
Flags: needinfo?(jwalker)
Assignee: nobody → jryans
Status: NEW → ASSIGNED
Comment on attachment 8605848 [details] [diff] [review]
0001-Bug-1164537-Restore-tilt-for-non-e10s-windows.-r-jwa.patch

Review of attachment 8605848 [details] [diff] [review]:
-----------------------------------------------------------------

r+, obviously :)
Attachment #8605848 - Flags: review?(jwalker) → review+
https://hg.mozilla.org/mozilla-central/rev/a0180fccc14f
Status: ASSIGNED → RESOLVED
Closed: 9 years ago
Resolution: --- → FIXED
Target Milestone: --- → Firefox 41
Comment on attachment 8605848 [details] [diff] [review]
0001-Bug-1164537-Restore-tilt-for-non-e10s-windows.-r-jwa.patch

Approval Request Comment
[Feature/regressing bug #]: Bug 1128988
[User impact if declined]: 3D view will fail for e10s-off users (it still fails with e10s-on after this, separate issue)
[Describe test coverage new/current, TreeHerder]: m-c
[Risks and why]: Low, only affects 3D view tool
[String/UUID change made/needed]: None
Attachment #8605848 - Flags: approval-mozilla-aurora?
Comment on attachment 8605848 [details] [diff] [review]
0001-Bug-1164537-Restore-tilt-for-non-e10s-windows.-r-jwa.patch

We are pushing e10s lately on aurora. Taking it.
Attachment #8605848 - Flags: approval-mozilla-aurora? → approval-mozilla-aurora+
Reproduced with Firefox 41.0a1 (2015-05-12) with the instruction from comment 0 and on Windows 10 x64.

Verified as fixed with Firefox 42.0a1 (Build ID : 20150707030206)

Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:42.0) Gecko/20100101 Firefox/42.0

[Bugday-20150709]
Status: RESOLVED → VERIFIED
QA Whiteboard: [Bugday-20150709]
Whiteboard: [Bugday-20150709]
I have reproduced the bug in nightly 41.0a1 (2015-05-13) (Build ID:20150513030209) with the instruction from comment 0 and linux 32 bit

Mozilla/5.0 (X11; Linux i686; rv:41.0) Gecko/20100101 Firefox/41.0

Bug is fixed now on latest Developer Edition 41.0a2 (2015-07-09) (Build ID:20150709004007)
Mozilla/5.0 (X11; Linux i686; rv:41.0) Gecko/20100101 Firefox/41.0

& latest beta 40.0 (Build ID:20150706172413)
Mozilla/5.0 (X11; Linux i686; rv:40.0) Gecko/20100101 Firefox/40.0
The bug is reproducible (namely, neither 3D View toolbar button nor the corresponding checkbox in developer-tools settings are available) in the lastest Dev Edition and Nightly with e10s enabled.

With e10s disabled, 3D View is available both as a checkbox in settings and as a toolbar button.

Interesting detail: 3D View DOES work for empty new tabs while it does NOT work for regular-website tabs. So the bug is probably not caused by some incompatibility with e10s itself, instead it looks like 3D view is just dynamically disabled (probably intentionally) for regular websites while not disabled for empty new tabs.
(In reply to Marat Tanalin | tanalin.com from comment #17)
> Interesting detail: 3D View DOES work for empty new tabs while it does NOT
> work for regular-website tabs. So the bug is probably not caused by some
> incompatibility with e10s itself, instead it looks like 3D view is just
> dynamically disabled (probably intentionally) for regular websites while not
> disabled for empty new tabs.

The new tab page isn't currently loaded in the child process, so that is what allows tilt to keep working there even though it fails for regular web content.

Follow bug 937166 to track getting tilt to work in e10s.
Product: Firefox → Firefox Graveyard
You need to log in before you can comment on or make changes to this bug.