issue504: Conkeror is totally broken w/ Firefox Nightly (47.0a1)

Priority: bug Status: resolved
Messages
msg1298 (view) Author: YellowApple Date: 2016-03-09.05:49:44
I realize this is probably an unsupported environment, but I reckon this can and will affect Conkeror 
users should this nightly evolve 
into a Firefox (and therefore XULRunner) release.  I think it has something to do with some JS 
variables/functions suddenly being 
undefined (maybe there's some issue with how those are pulled into whatever context they're needed in), 
given the "default_global_keymap 
is not defined" errors (see below).



System:

Slackware64-current (Linux 4.4.3) w/ Firefox 48.0a1 (Nightly) and latest Conkeror (from git).



Symptoms:

Keys specific to using Conkeror (namely, anything starting with Ctrl or Meta/Alt, as well as common 
navigation keys like g, F/B, etc.) do 
not cause any effect in the Conkeror window, regardless of page.  Some generic navigation keys (Tab, 
PgUp/PgDown, Up/Down, etc.) do work.  
Text input also works.  This occurs on a clean profile with no ~/.conkerorrc.

The following output is emitted when running Conkeror in a terminal (with `firefox -app 
/path/to/conkeror/application.ini`), pressing a 
few keybinds (mashed g for a bit, then M-x, then C-x, then C-g; none of them worked):

----- BEGIN TERMINAL OUTPUT -----

(conkeror:24991): Gtk-WARNING **: Theme directory status of theme oxyTablets-dark has no size field

JavaScript warning: file:///opt/conkeror/components/application.js, line 225: flags argument of 
String.prototype.{search,match,replace} 
is no longer supported
JavaScript warning: chrome://conkeror/content/coroutine.js, line 293: expression closures are deprecated
JavaScript warning: chrome://conkeror/content/coroutine.js, line 354: mutating the [[Prototype]] of an 
object will cause your code to run 
very slowly; instead create the object with the correct initial [[Prototype]] value using Object.create
ReferenceError: google_calendar_mode is not defined
chrome://conkeror/content/page-modes/google-calendar.js:42
@chrome://conkeror/content/page-modes/google-calendar.js:42:1
load1@file:///opt/conkeror/components/application.js:109:17
application.prototype.load@file:///opt/conkeror/components/application.js:161:25
application.prototype.require@file:///opt/conkeror/components/application.js:231:13
handle_command_line@chrome://conkeror/content/command-line.js:172:25
cmdline.prototype.handle@file:///opt/conkeror/components/command-line.js:24:9
JavaScript strict warning: resource://gre/modules/TelemetryEnvironment.jsm, line 509: ReferenceError: 
reference to undefined property 
this._environment._currentEnvironment.addons
Console error: [JavaScript Warning: "ReferenceError: reference to undefined property 
this._environment._currentEnvironment.addons" {file: 
"resource://gre/modules/TelemetryEnvironment.jsm" line: 509}]
  Category: chrome javascript
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
buffer_modality@chrome://conkeror/content/buffer.js:122:5
buffer.prototype.set_input_mode/<@chrome://conkeror/content/buffer.js:279:42
buffer.prototype.set_input_mode@chrome://conkeror/content/buffer.js:279:9
buffer.prototype.constructor_end@chrome://conkeror/content/buffer.js:260:13
content_buffer@chrome://conkeror/content/content-buffer.js:154:9
buffer_creator/<@chrome://conkeror/content/buffer.js:117:16
buffer_container@chrome://conkeror/content/buffer.js:412:5
buffer_initialize_window_early@chrome://conkeror/content/buffer.js:677:5
run_hooks@chrome://conkeror/content/hook.js:39:9
simple_local_hook_definer/prototype.RUN_HOOK@chrome://conkeror/content/hook.js:161:13
window_initialize@chrome://conkeror/content/window.js:218:5
onload@chrome://conkeror-gui/content/conkeror.xul:1:1

  Category: chrome javascript
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
JavaScript error: chrome://conkeror/content/buffer.js, line 122: ReferenceError: default_global_keymap is 
not defined
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
Console error: [JavaScript Error: "ReferenceError: default_global_keymap is not defined" {file: 
"chrome://conkeror/content/buffer.js" 
line: 122}]
  Category: chrome javascript
Console error: [JavaScript Error: "1457501429695	Toolkit.Telemetry	ERROR	
TelemetrySend::sendPersistedPings - failed to 
send ping f537075d-395f-4dd6-aeab-3a1fc5336937: [Exception... "Component is not available"  nsresult: 
"0x80040111 
(NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: resource://gre/modules/TelemetrySend.jsm :: 
TelemetrySendImpl._doPing :: line 1005"  
data: no] Stack trace: TelemetrySendImpl._doPing()@resource://gre/modules/TelemetrySend.jsm:1005 < 
TelemetrySendImpl._sendPersistedPings</<()@resource://gre/modules/TelemetrySend.jsm:825 < 
Handler.prototype.process()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:937 < 
this.PromiseWalker.walkerLoop()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:816" {file: 
"resource://gre/modules/Log.jsm" line: 751}]
App_append@resource://gre/modules/Log.jsm:751:9
Logger.prototype.log@resource://gre/modules/Log.jsm:388:7
LoggerRepository.prototype.getLoggerWithMessagePrefix/proxy.log@resource://gre/modules/Log.jsm:503:44
Logger.prototype.error@resource://gre/modules/Log.jsm:396:5
TelemetrySendImpl._sendPersistedPings</<@resource://gre/modules/TelemetrySend.jsm:826:23
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:940:21
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> 
resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:779:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:714:7
onSuccess@resource://gre/modules/osfile/osfile_native.jsm:63:7
Spinner.prototype.observe@resource://gre/modules/AsyncShutdown.jsm:551:9

  Category: XPConnect JavaScript
Console error: [JavaScript Error: "1457501429704	Toolkit.Telemetry	ERROR	
TelemetrySend::sendPersistedPings - failed to 
send ping 36fb6a6d-4c46-4321-94b5-c5d0d464f8b3: [Exception... "Component is not available"  nsresult: 
"0x80040111 
(NS_ERROR_NOT_AVAILABLE)"  location: "JS frame :: resource://gre/modules/TelemetrySend.jsm :: 
TelemetrySendImpl._doPing :: line 1005"  
data: no] Stack trace: TelemetrySendImpl._doPing()@resource://gre/modules/TelemetrySend.jsm:1005 < 
TelemetrySendImpl._sendPersistedPings</<()@resource://gre/modules/TelemetrySend.jsm:825 < 
Handler.prototype.process()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:937 < 
this.PromiseWalker.walkerLoop()@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:816" {file: 
"resource://gre/modules/Log.jsm" line: 751}]
App_append@resource://gre/modules/Log.jsm:751:9
Logger.prototype.log@resource://gre/modules/Log.jsm:388:7
LoggerRepository.prototype.getLoggerWithMessagePrefix/proxy.log@resource://gre/modules/Log.jsm:503:44
Logger.prototype.error@resource://gre/modules/Log.jsm:396:5
TelemetrySendImpl._sendPersistedPings</<@resource://gre/modules/TelemetrySend.jsm:826:23
Handler.prototype.process@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:940:21
this.PromiseWalker.walkerLoop@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:816:7
Promise*this.PromiseWalker.scheduleWalkerLoop@resource://gre/modules/Promise.jsm -> 
resource://gre/modules/Promise-backend.js:747:11
this.PromiseWalker.schedulePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:779:7
this.PromiseWalker.completePromise@resource://gre/modules/Promise.jsm -> resource://gre/modules/Promise-
backend.js:714:7
onSuccess@resource://gre/modules/osfile/osfile_native.jsm:63:7
Spinner.prototype.observe@resource://gre/modules/AsyncShutdown.jsm:551:9

  Category: XPConnect JavaScript

----- END TERMINAL OUTPUT -----

The modeline is also missing, but I don't know if that's a related issue.

This did work with a previous Nighly, though unfortunately I didn't take note of the version number prior 
to the over-the-weekend update.



Steps to reproduce:

* Download/install latest Firefox Nightly
* Clone conkeror repo to /opt/conkeror
* Run conkeror with `firefox -app /opt/conkeror/application.ini`
msg1306 (view) Author: scottjad Date: 2016-04-30.03:55:53
Thanks for this report. Solving this issue would have been harder w/o this report since the key piece of
information [1] didn't display on my system when I tried reproducing the problem (the problem reproduced
fine).

You can find a fix here https://github.com/scottjad/conkeror/commit/fce63028e67e1fccc7f30aca735a51df826aabb5

I'll push it upstream soon, just want to test it a bit more first.

AFAIU this issue only effects non-release channels so far.

I'm trying to change the title a bit, since it effects 47 as well. Not sure how well changing the title
will work.

[1] JavaScript warning: file:///opt/conkeror/components/application.js, line 225: flags argument of 
String.prototype.{search,match,replace} is no longer supported
History
Date User Action Args
2016-05-11 01:14:42scottjadsetstatus: testing -> resolved
2016-04-30 03:55:53scottjadsetstatus: unread -> testing
nosy: + scottjad
messages: + msg1306
title: Conkeror-specific keys when using Conkeror w/ Firefox Nightly (48.0a1) -> Conkeror is totally broken w/ Firefox Nightly (47.0a1)
2016-03-09 05:49:45YellowApplecreate