Closed Bug 965426 Opened 10 years ago Closed 10 years ago

FakeUpdateChecker fails on Tarako devices

Categories

(Firefox OS Graveyard :: General, defect, P1)

ARM
Gonk (Firefox OS)

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: davehunt, Assigned: rwood)

References

Details

(Keywords: perf, Whiteboard: [c=automation p= s= u=tarako])

Attachments

(2 files)

The FakeUpdateChecker added in bug 879192 is failing on Tarako and preventing us from updating to b2gperf 0.15, which is needed for bug 964835.

Traceback (most recent call last):
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/bin/b2gperf", line 9, in <module>
    load_entry_point('b2gperf==0.15', 'console_scripts', 'b2gperf')()
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/local/lib/python2.7/site-packages/b2gperf/b2gperf.py", line 936, in cli
    reset=options.reset)
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/local/lib/python2.7/site-packages/b2gperf/b2gperf.py", line 172, in __init__
    DatazillaPerfPoster.__init__(self, *args, **kwargs)
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/local/lib/python2.7/site-packages/b2gperf/b2gperf.py", line 87, in __init__
    self.device = gaiatest.GaiaDevice(self.marionette)
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/local/lib/python2.7/site-packages/gaiatest/gaia_test.py", line 684, in __init__
    self.marionette.execute_script("GaiaUITests_FakeUpdateChecker();")
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/local/lib/python2.7/site-packages/marionette/marionette.py", line 1101, in execute_script
    filename=os.path.basename(frame[0]))
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/local/lib/python2.7/site-packages/marionette/marionette.py", line 605, in _send_message
    self._handle_error(response)
  File "/var/jenkins/workspace/b2g.tarako.mozilla-aurora.v1.3.perf/.env/local/lib/python2.7/site-packages/marionette/marionette.py", line 640, in _handle_error
    raise JavascriptException(message=message, status=status, stacktrace=stacktrace)
marionette.errors.JavascriptException: JavascriptException: [Exception... "Component returned failure code: 0x80040154 (NS_ERROR_FACTORY_NOT_REGISTERED) [nsIComponentManager.getClassObjectByContractID]"  nsresult: "0x80040154 (NS_ERROR_FACTORY_NOT_REGISTERED)"  location: "JS frame :: dummy file :: replaceClass :: line 110"  data: no]
stacktrace:
	execute_script @gaia_test.py, line 684
Probably that just adding try/catch would be enough
      try {
        let oldFactory =
          Cm.getClassObjectByContractID(contract, Ci.nsIFactory);
        Cm.unregisterFactory(oldCid, oldFactory);
        Cm.registerFactory(newCid, '', contract, newFactory);
      } catch (ex) {
        // If nothing is already registered, it's fine
      }
Flags: needinfo?(dave.hunt)
Makes sense, could someone please try this? I'm not going to be around for a couple of weeks. If this works, we'll need new gaiatest and b2gperf releases.
Flags: needinfo?(dave.hunt)
I don't have a Tarako device.
I don't know that we have the ability to make custom Tarako builds; config.sh doesn't support it, and we normally get our builds from the Tw office.  It's possible we'll simply have to land the patch in comment #2 to verify if it solves the problem.
fwiw, I'd like to understand why we have no update checker component in the first place. That seems very strange.
Mike, I'm not sure where Tarako perf results are on your list of priorities; this bug prevents us from displaying app startup times in the normal B2G perf dashboard.

The results are showing up as the 'unknown' device on https://datazilla.mozilla.org/?start=1390296904&stop=1390901704&product=B2G&repository=v1.3&test=contacts&page=cold_load_time&graph_search=b2413cad2aca4784399f796814740fa8f7b7ae44,unknown,3c5119507a985c59cfc264ed23821679b138486d&tr_id=101390&graph=Firefox%20OS%201.3.0.0-prerelease&project=b2g, but that view is harder to use.

Does anyone on your team have a Tarako and could help figure out the answer to Fabrice's question in comment #7?
Flags: needinfo?(mlee)
(In reply to Alexandre LISSY :gerard-majax from comment #2)
>       try {
>         let oldFactory =
>           Cm.getClassObjectByContractID(contract, Ci.nsIFactory);
>         Cm.unregisterFactory(oldCid, oldFactory);
>         Cm.registerFactory(newCid, '', contract, newFactory);
>       } catch (ex) {
>         // If nothing is already registered, it's fine
>       }

Rob Wood is going to test this fix on Monday.
(In reply to Jonathan Griffin (:jgriffin) from comment #8)
> Mike, I'm not sure where Tarako perf results are on your list of priorities;
> this bug prevents us from displaying app startup times in the normal B2G
> perf dashboard.
> ...
> Does anyone on your team have a Tarako and could help figure out the answer
> to Fabrice's question in comment #7?

Jonathan, for FxOS Perf tarako is second in priority only to 1.3 blockers. Hub can help with this.
Assignee: nobody → hub
Status: NEW → ASSIGNED
Flags: needinfo?(mlee)
Keywords: perf
Priority: -- → P1
Whiteboard: [c=automation p= s= u=]
Whiteboard: [c=automation p= s= u=] → [c=automation p= s= u=tarako]
:mchen Is it possible to do a custom tarako build yet? I made the config.sh changes locally (according to the PR in bug 961949) but the tarako manifest is still not available (I tried pointing to a local manifest but couldn't get it to work)
Flags: needinfo?(mchen)
:fabrice please see comment 11, as :mchen is out of office, thanks
Flags: needinfo?(mchen) → needinfo?(fabrice)
rwood, since this is a gaia change, you can probably use the most recent build from the Tarako flash script (https://github.com/Mozilla-TWQA/Tarako-Tool/blob/master/flash_tarako_eng.sh), then make a local gaia-only build and install it on the phone via 'make reset-gaia'.
(In reply to Robert Wood [:rwood] from comment #12)
> :fabrice please see comment 11, as :mchen is out of office, thanks

I'm only doing gecko+gaia builds myself, and flash them over a base image that was flashed with the windows tool. I haven't tried flash_tarako_eng.sh yet.
Flags: needinfo?(fabrice)
It's been a nightmare trying to flash tarako and I've gotten nowhere. I keep getting "error: insufficient permissions for device". Can someone please help me?
Is this running the script from comment 13?
Hey Hubert, yes when I run the script it always fails with "device not found". Adb devices will either show no device listed or "??????? no permissions". The wiki indicated if adb cannot see the device, to ensure it has the latest base image.

I am setup to download/flash the base image, however the flashing tool cannot see the device either. I installed the windows 7 usb driver (disabled the driver signature requirement option first) but in control panel it shows exclamation beside the device, so the flashing tool cannot connect. I'm trying to re-install the usb drivers now to see if I can get the base image updated.
This worked for me combined with a lot of plugging and unplugging my device:

  https://intranet.mozilla.org/QA/B2G_Tips_and_Tricks#Detecting_Tarako

You need an adb_usb.ini file in addition to the udev rule.
I had to do that too on (Fedora) Linux. The udev rule (expected) and the adb_usb.ini stuff (not common). Don't forget |adb kill-server|

Sometime, indeed, I need to plug / unplug the device to be listed.

I have no idea about Windows though.
Thanks guys, appreciated - yeah I am using Ubuntu, only using windows for the base image flashing tool. I'll recheck my ubuntu udev rules (and ini) and try the script again...
Back to the original bug, there is no fake_update-checker.js in the gaia tree for torako as it is 1.3
(In reply to Hubert Figuiere [:hub] from comment #21)
> Back to the original bug, there is no fake_update-checker.js in the gaia
> tree for torako as it is 1.3

The way that we use gaiatest in Jenkins ends up packaging the JS atoms, including fake_update-checker.js, so we do end up using this on 1.3, whether or not it's in the Gaia tree.

Is the problem that we shouldn't be using this?
(In reply to Jonathan Griffin (:jgriffin) from comment #22)

> Is the problem that we shouldn't be using this?

No, no. I was just wondering if that wasn't the source of the problem.
Unfortunately the tarako device I have is bricked. Tried again this morning (with Mdas) but it won't flash. So I am unable to verify the fix (comment 9).
Pull request for proposed fix in comment 2
Attachment #8371658 - Flags: review?(jgriffin)
I could check, but is there a blessed way to have b2gperf pick the change up?
I tested the change and it fixes the issue.
Assignee: hub → rwood
:hub thanks!
Rob, can you change the Tarako b2gperf Jenkins jobs to use the latest b2gperf now?  They're currently pinned to an older version to work around this problem.
Done, Jenkins b2gperf Tarako build #69 will be the first one with the update.
(In reply to Robert Wood [:rwood] from comment #32)
> Done, Jenkins b2gperf Tarako build #69 will be the first one with the update.

Hmm, I realized we'll likely need to release a new version of gaiatest, and b2gperf (and possibly b2gpopulate) to pick this up.  I'll file a separate bug.
Status: ASSIGNED → RESOLVED
Closed: 10 years ago
Resolution: --- → FIXED
Unfortunately, this doesn't resolve the problem, it only changes it.  From the latest Jenkins run:

11:48:34 marionette.errors.JavascriptException: JavascriptException: [Exception... "Component returned failure code: 0x80520012 (NS_ERROR_FILE_NOT_FOUND) [nsIXPCComponents_Utils.import]"  nsresult: "0x80520012 (NS_ERROR_FILE_NOT_FOUND)"  location: "JS frame :: jar:file:///system/b2g/omni.ja!/components/nsUpdateService.js :: <TOP_LEVEL> :: line 10"  data: no]
11:48:34 stacktrace:
11:48:34 	execute_script @gaia_test.py, line 684
Status: RESOLVED → REOPENED
Resolution: FIXED → ---
I think I'll just add a flag to b2gperf to skip the update check, to get around this problem. :(
This seems to have resolved itself.
Status: REOPENED → RESOLVED
Closed: 10 years ago10 years ago
Resolution: --- → FIXED
(In reply to Jonathan Griffin (:jgriffin) from comment #36)
> This seems to have resolved itself.

Verified; thanks, all!
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: