[csb, hr, sr] Test failure 'Category has been changed.' in /testAddons/testSearchAddons.js

RESOLVED FIXED

Status

Mozilla QA
Mozmill Tests
P1
normal
RESOLVED FIXED
3 years ago
2 years ago

People

(Reporter: Andrei Eftimie, Assigned: cosmin)

Tracking

({regression, reproducible})

unspecified
regression, reproducible

Firefox Tracking Flags

(firefox34 affected, firefox35 verified)

Details

(Whiteboard: [mozmill-test-failure][sprint], URL)

(Reporter)

Description

3 years ago
Module:    testSearchAddons
Test:      /testAddons/testSearchAddons.js    
Failure:   Category has been changed.
Branches:  34
Platforms: All
Report:    http://mozmill-release.blargon7.com/#/remote/report/447e3274a76247e6567e1c2aa63bfad6

A few locales might be affected. Reproducible for [sr] so far. I'll check the rest:
http://mozmill-release.blargon7.com/#/remote/failure?app=Firefox&branch=All&platform=All&from=2014-10-01&test=%2FtestAddons%2FtestSearchAddons.js&func=testSearchAddons

en-US is not affected.

Console log:
> TEST-START | /Users/andrei.eftimie/work/mozilla/mozmill-tests/firefox/tests/remote/testAddons/testSearchAddons.js | testSearchAddons
> 1413888509458 addons.manager  WARN  Exception calling callback: TypeError: access to strict mode caller function is censored (resource://gre/modules/PluralForm.jsm:138:12) JS Stack trace: this.PluralForm.makeGetter/<@PluralForm.jsm:138:13 < gSearchView_showAllResultsLink@extensions.js:2475:15 < gSearchView_updateView@extensions.js:2411:7 < finishSearch@extensions.js:2333:7 < show_SearchSucceeded@extensions.js:2379:9 < AddonRepo_reportSuccess@AddonRepository.jsm:964:5 < addonInstallCallback@AddonRepository.jsm:1314:11 < safeCall@AddonManager.jsm:173:5 < getInstallForURL_safeCall@AddonManager.jsm:1678:11 < getInstallForURL_createDownload@XPIProvider.jsm:3630:7 < makeSafe/<@XPIProvider.jsm:1577:24 < AI_initAvailableDownload@XPIProvider.jsm:4829:5 < AI_createDownload@XPIProvider.jsm:5791:5 < XPI_getInstallForURL@XPIProvider.jsm:3629:1 < callProviderAsync@AddonManager.jsm:235:12 < AMI_getInstallForURL@AddonManager.jsm:1675:1 < AM_getInstallForURL@AddonManager.jsm:2712:1 < AddonRepo_parseAddons/<@AddonRepository.jsm:1318:9 < AddonRepo_parseAddons@AddonRepository.jsm:1308:5 < searchAddons_getLocalAddonIds@AddonRepository.jsm:949:9 < getLocalAddonIds_getAllAddons@AddonRepository.jsm:1477:9 < safeCall@AddonManager.jsm:173:5 < getAddonsByTypes_noMoreObjects@AddonManager.jsm:2138:9 < AOC_callNext@AddonManager.jsm:305:7 < getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 < SocialAddonProvider.getAddonsByTypes@SocialService.jsm:1057:5 < callProviderAsync@AddonManager.jsm:235:12 < getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 < AOC_callNext@AddonManager.jsm:311:7 < getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 < PL_getAddonsByTypes@PluginProvider.jsm:150:5 < callProviderAsync@AddonManager.jsm:235:12 < getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 < AOC_callNext@AddonManager.jsm:311:7 < getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 < OpenH264Provider.getAddonsByTypes@OpenH264Provider.jsm:366:5 < callProviderAsync@AddonManager.jsm:235:12 < getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 < AOC_callNext@AddonManager.jsm:311:7 < getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 < LightweightThemeManager_getAddonsByTypes@LightweightThemeManager.jsm:392:5 < callProviderAsync@AddonManager.jsm:235:12 < getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 < AOC_callNext@AddonManager.jsm:311:7 < getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 < getAddonsByTypes_getVisibleAddons@XPIProvider.jsm:3691:7 < makeSafe/<@XPIProviderUtils.js:146:17 < asyncMap_gotValue@XPIProviderUtils.js:181:7 < asyncMap_callback@XPIProviderUtils.js:188:9 < completeAddon@XPIProviderUtils.js:135:5 < this.AddonRepository.getCachedAddonByID<@AddonRepository.jsm:575:7 < TaskImpl_run@Task.jsm:314:40 < TaskImpl@Task.jsm:275:3 < createAsyncFunction/asyncFunction@Task.jsm:249:14 < getRepositoryAddon@XPIProviderUtils.js:137:3 < asyncMap_each@XPIProviderUtils.js:187:7 < asyncMap@XPIProviderUtils.js:185:3 < this.XPIDatabase.getAddonList/<@XPIProviderUtils.js:1071:9 < Handler.prototype.process@Promise-backend.js:865:23 < this.PromiseWalker.walkerLoop@Promise-backend.js:744:7 < Assert_waitFor@assertions.js:595:7 < waitFor@utils.js:269:3 < Assert_waitFor@assertions.js:555:10 < AddonsManager_waitForCategory@addons.js:821:7 < AddonsManager_search@addons.js:869:1 < testSearchAddons@testSearchAddons.js:46:1 < Runner.prototype.execFunction@frame.js:755:5 < Runner.prototype.runTestModule@frame.js:709:9 < Runner.prototype.runTestFile@frame.js:693:3 < runTestFile@frame.js:778:3 < Bridge.prototype._execFunction@Bridge.jsm:140:10 < Bridge.prototype.execFunction@Bridge.jsm:147:16 < @Server.jsm:32:1 < Server.Session/<@Server.jsm:32:5 < Sockets.Client.prototype.onMessage/event.notify@Sockets.jsm:40:11
> ERROR | Test Failure | {
>   "exception": {
>     "message": "Category has been changed.", 
>     "lineNumber": 27, 
>     "name": "TimeoutError", 
>     "fileName": "resource://mozmill/modules/errors.js"
>   }
> }

Out of which relevant part: 
> addons.manager	WARN	Exception calling callback: TypeError: access to strict mode caller function is censored (resource://gre/modules/PluralForm.jsm:138:12)
(Reporter)

Comment 1

3 years ago
All 3 locales are affected, and in a reproducible state:
- csb
- hr
- sr
Priority: -- → P1
Summary: [sr] Test failure 'Category has been changed.' in /testAddons/testSearchAddons.js → [csb, hr, sr] Test failure 'Category has been changed.' in /testAddons/testSearchAddons.js
(Reporter)

Comment 2

3 years ago
Aurora is also affected.
There are no Nightly builds for these locales.
status-firefox35: --- → affected
(Assignee)

Comment 3

3 years ago
I'll look in to this.
Assignee: nobody → cosmin.malutan
Status: NEW → ASSIGNED
Localization related test failure regression started with current 34 beta builds => CC'ing Flod and Axel.

Comment 5

3 years ago
Can you explain what this test is testing?

PS: cashubian hasn't seen any updates on the localization front for a while, so at least there, it's not a regression that got triggered by a change in the localization.
Something changed in AMO? I don't understand where that "Category has been changed." is supposed to be coming from.

http://hg.mozilla.org/qa/mozmill-tests/file/3ca233d8fe44d45b44ca50324a7feffd88315f41/firefox/tests/remote/testAddons/testSearchAddons.js
(Reporter)

Comment 7

3 years ago
(In reply to Francesco Lodolo [:flod] from comment #6)
> Something changed in AMO? I don't understand where that "Category has been
> changed." is supposed to be coming from.

"Category has been changed" is from our test.
Relevant part is:
> TypeError: access to strict mode caller function is censored (resource://gre/modules/PluralForm.jsm:138:12)

Which is: http://dxr.mozilla.org/mozilla-central/source/intl/locale/PluralForm.jsm#138
From a method that does: "* Create a pair of plural form functions for the given plural rule number."

So I'm guessing we fail to pluralize on these locales... for whatever reason
(Assignee)

Comment 8

3 years ago
The category is changing correctly but the ViewChanged event is not dispatched. It's true that it passed on nightly but also without the warn below. 

Stack trace:
> 1413892505715	addons.manager	WARN	Exception calling callback: TypeError: access to strict mode caller function is censored (resource://gre/modules/PluralForm.jsm:138:12) JS Stack trace:
> this.PluralForm.makeGetter/
> @PluralForm.jsm:138:13 
> gSearchView_showAllResultsLink@extensions.js:2478:15 
> gSearchView_updateView@extensions.js:2414:7 
> finishSearch@extensions.js:2336:7 
> show_SearchSucceeded@extensions.js:2382:9 
> AddonRepo_reportSuccess@AddonRepository.jsm:964:5 
> addonInstallCallback@AddonRepository.jsm:1336:11 
> safeCall@AddonManager.jsm:173:5 
> getInstallForURL_safeCall@AddonManager.jsm:1678:11 
> getInstallForURL_createDownload@XPIProvider.jsm:3761:7 
> makeSafe/<@XPIProvider.jsm:1428:24 
> AI_initAvailableDownload@XPIProvider.jsm:4971:5 
> AI_createDownload@XPIProvider.jsm:5934:5 
> XPI_getInstallForURL@XPIProvider.jsm:3760:1 
> callProviderAsync@AddonManager.jsm:235:12 
> AMI_getInstallForURL@AddonManager.jsm:1675:1 
> AM_getInstallForURL@AddonManager.jsm:2712:1 
> AddonRepo_parseAddons/<@AddonRepository.jsm:1340:9 
> AddonRepo_parseAddons@AddonRepository.jsm:1330:5 
> searchAddons_getLocalAddonIds@AddonRepository.jsm:949:9 
> getLocalAddonIds_getAllAddons@AddonRepository.jsm:1499:9 
> safeCall@AddonManager.jsm:173:5 
> getAddonsByTypes_noMoreObjects@AddonManager.jsm:2138:9 
> AOC_callNext@AddonManager.jsm:305:7 
> getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 
> SocialAddonProvider.getAddonsByTypes@SocialService.jsm:1034:5 
> callProviderAsync@AddonManager.jsm:235:12 
> getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 
> AOC_callNext@AddonManager.jsm:311:7 
> getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 
> PL_getAddonsByTypes@PluginProvider.jsm:150:5 
> callProviderAsync@AddonManager.jsm:235:12 
> getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 
> AOC_callNext@AddonManager.jsm:311:7 
> getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 
> OpenH264Provider.getAddonsByTypes@OpenH264Provider.jsm:366:5 
> callProviderAsync@AddonManager.jsm:235:12 
> getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 
> AOC_callNext@AddonManager.jsm:311:7 
> getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 
> LightweightThemeManager_getAddonsByTypes@LightweightThemeManager.jsm:392:5 
> callProviderAsync@AddonManager.jsm:235:12 
> getAddonsByTypes_nextObject@AddonManager.jsm:2130:1 
> AOC_callNext@AddonManager.jsm:311:7 
> getAddonsByTypes_concatAddons@AddonManager.jsm:2133:11 
> getAddonsByTypes_getVisibleAddons@XPIProvider.jsm:3822:7 
> makeSafe/<@XPIProviderUtils.js:146:17 
> asyncMap_gotValue@XPIProviderUtils.js:181:7 
> asyncMap_callback@XPIProviderUtils.js:188:9 
> completeAddon@XPIProviderUtils.js:135:5 
> this.AddonRepository.getCachedAddonByID<@AddonRepository.jsm:575:7 
> TaskImpl_run@Task.jsm:314:40 
> TaskImpl@Task.jsm:275:3 
> createAsyncFunction/asyncFunction@Task.jsm:249:14 
> getRepositoryAddon@XPIProviderUtils.js:137:3 
> asyncMap_each@XPIProviderUtils.js:187:7 
> asyncMap@XPIProviderUtils.js:185:3 
> this.XPIDatabase.getAddonList/<@XPIProviderUtils.js:1051:9 
> Handler.prototype.process@Promise-backend.js:865:23 
> this.PromiseWalker.walkerLoop@Promise-backend.js:744:7 
> Assert_waitFor@assertions.js:595:7 
> waitFor@utils.js:269:3 
> Assert_waitFor@assertions.js:555:10 
> Expect_waitFor@assertions.js:601:5 
> AddonsManager_waitForCategory@addons.js:822:7 
> AddonsManager_search@addons.js:872:1 
> testSearchAddons@testSearchAddons.js:46:1 
> Runner.prototype.execFunction@frame.js:755:5 
> Runner.prototype.runTestModule@frame.js:709:9 
> Runner.prototype.runTestFile@frame.js:693:3 
> runTestFile@frame.js:778:3 
> Bridge.prototype._execFunction@Bridge.jsm:140:10 
> Bridge.prototype.execFunction@Bridge.jsm:147:16 
> @Server.jsm:32:1 
> Server.Session/<@Server.jsm:32:5 
> Sockets.Client.prototype.onMessage/event.notify@Sockets.jsm:40:11

Comment 9

3 years ago
OK, this seems to be a bug in PluralForm.jsm.

It's triggered by locales with plural forms with more than two entries, but falling back to en-US for the pluralized string. That creates out-of-bound access, and the reporting logic in PluralForm.jsm tries to do that in a way that doesn't work anymore.

It'd be great if someone could confirm that with a reduced xpshell test or so.
(Assignee)

Updated

3 years ago
Depends on: 1086527
Whiteboard: [mozmill-test-failure] → [mozmill-test-failure][sprint]
(Assignee)

Comment 10

3 years ago
This has been fixed on bug 1086238 and has been backported on aurora and beta.
Status: ASSIGNED → RESOLVED
Last Resolved: 3 years ago
Resolution: --- → FIXED
(Assignee)

Updated

3 years ago
status-firefox35: affected → verified
Keywords: regressionwindow-wanted
You need to log in before you can comment on or make changes to this bug.