"Error / Exception / NS_NOINTERFACE / nsBlocklistService.js :: anonymous :: line 348", when checking for "blocklist"

RESOLVED DUPLICATE of bug 374499

Status

defect
RESOLVED DUPLICATE of bug 374499
12 years ago
12 years ago

People

(Reporter: sgautherie, Unassigned)

Tracking

Trunk
seamonkey2.0a1
x86
Windows 2000

Firefox Tracking Flags

(Not tracked)

Details

(Whiteboard: [Steps: comment 8])

Reporter

Description

12 years ago
[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a6pre) Gecko/2007061602 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

{{
Error: [Exception... "'Component does not have requested interface' when calling method: [nsIInterfaceRequestor::getInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "JS frame :: file:///.../seamonkey/components/nsExtensionManager.js :: anonymous :: line 2454"  data: no]
Source File: file:///.../seamonkey/components/nsExtensionManager.js
Line: 2454

Error: [Exception... "'Component does not have requested interface' when calling method: [nsIInterfaceRequestor::getInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "<unknown>"  data: no]

Error: [Exception... "'Component does not have requested interface' when calling method: [nsIInterfaceRequestor::getInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "<unknown>"  data: no]
}}

That's
{{
  notify: function() {
    [...]

    var self = this;
    request.onerror = function(event) { self.onXMLError(event); };
    request.onload  = function(event) { self.onXMLLoad(event);  };   // 2454
    request.send(null);
  },
}}

I guess this happens when the ExtensionManager triggers to check something ?
Reporter

Comment 1

12 years ago
[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a7pre) Gecko/200707280303 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

(Line number is 2432 now.)

Robert, could you help (me) triaging this one ? Thanks.
Summary: "Error / Exception / NS_NOINTERFACE / nsExtensionManager.js :: anonymous :: line 2454" → "Error / Exception / NS_NOINTERFACE / nsExtensionManager.js :: anonymous :: line 2432"

Comment 2

12 years ago
I'm pretty sure that this appreaing in SeaMonkey's error console is fallout from the work on getting View > Apply Theme working.
I think that on the first browser window, we somehow fail to load the list of themes into that list on the menu, triggering the code that spits out those errors. Interestingly, on opening further browser windows, the menu gets correctly filled and the errors don't get repeated in the error console.
Can you try this change to bin/components/nsExtensionManager.js to see if it helps? Look for the line this._ptr = gRDF.GetDataSource("rdf:extensions"); and change it to this._ptr = getContainer(this._ds, this._ds._itemRoot).DataSource;
Reporter

Comment 4

12 years ago
[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a8pre) Gecko/200708040202 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

(In reply to comment #2)
> from the work on getting View > Apply Theme working.

Each time opening this menu item:
{{
Error: uncaught exception: [Exception... "Component returned failure code: 0x80570018 (NS_ERROR_XPC_BAD_IID) [nsIJSCID.getService]"  nsresult: "0x80570018 (NS_ERROR_XPC_BAD_IID)"  location: "JS frame :: chrome://navigator/content/navigator.js :: checkTheme :: line 2476"  data: no]
}}

> I think that on the first browser window, we somehow fail to load the list of
> themes into that list on the menu, triggering the code that spits out those

Indeed, I get "Get New Themes" and a separator only: no theme name(s).

> errors. Interestingly, on opening further browser windows, the menu gets
> correctly filled and the errors don't get repeated in the error console.

Not for me: every times, every windows.

*****

(In reply to comment #3)
> Can you try this change to bin/components/nsExtensionManager.js to see if it

I (wanted to) tried, but I miss "steps" to reproduce this error :-/
Maybe applying the patch in bug 382963 will get rid of some of your errors.

Comment 6

12 years ago
(In reply to comment #3)
> Can you try this change to bin/components/nsExtensionManager.js to see if it
> helps? Look for the line this._ptr = gRDF.GetDataSource("rdf:extensions"); and
> change it to this._ptr = getContainer(this._ds, this._ds._itemRoot).DataSource;

Actually, this makes the problem go away for me - and it makes the apply themes menu come up in the first Window (with the patch of bug 382963 applied, of course).
Reporter

Comment 7

12 years ago
(In reply to comment #4)
> > from the work on getting View > Apply Theme working.
> 
> Each time opening this menu item:
> {{
> Error: uncaught exception: [Exception... "Component returned failure code:
> 0x80570018 (NS_ERROR_XPC_BAD_IID) [nsIJSCID.getService]"  nsresult: "0x80570018
> (NS_ERROR_XPC_BAD_IID)"  location: "JS frame ::
> chrome://navigator/content/navigator.js :: checkTheme :: line 2476"  data: no]
> }}

This submenu display and exception were fixed by bug 382963.
Reporter

Comment 8

12 years ago
(In reply to comment #3)
> Can you try this change to bin/components/nsExtensionManager.js to see if it
> helps? Look for the line this._ptr = gRDF.GetDataSource("rdf:extensions"); and
> change it to this._ptr = getContainer(this._ds, this._ds._itemRoot).DataSource;

This was checked in for bug 383116.
(But don't help here.)

*****

[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a8pre) Gecko/200708090202 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

Current bug is still there.

Eventually, I found how to trigger/reproduce it:
1. In account <prefs.js>, set |user_pref("app.update.lastUpdateTime.blocklist-background-update-timer", 118);|.
2. In global <seamonkey/defaults/pref/browser-prefs.js>, set |pref("app.update.timer", 1000);|.
3. Start SeaMonkey (and open the error console).

(Seems +/- obvious looking at that code, afterward(!).)

|uri.spec = "https://addons.mozilla.org/blocklist/1/%7B92650c4d-4b8e-4d2a-b7eb-24ecf4f6b63a%7D/2.0a1pre/"|
and loads
{{
<?xml version="1.0"?>
<blocklist xmlns="http://www.mozilla.org/2006/addons-blocklist">
</blocklist>
}}
if I try it manually in the browser.
Summary: "Error / Exception / NS_NOINTERFACE / nsExtensionManager.js :: anonymous :: line 2432" → "Error / Exception / NS_NOINTERFACE / nsExtensionManager.js :: anonymous :: line 2432", when checking for "blocklist"
Whiteboard: [Steps: comment 8]
Reporter

Comment 9

12 years ago
[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a8pre) Gecko/200708100202 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

That's another case of wrong line number report from the JS engine:
{{
var Blocklist = {
  [...]
  notify: function() {
    [...]

    var self = this;
    request.onerror = function(event) { self.onXMLError(event); };
    request.onload  = function(event) { self.onXMLLoad(event);  };   // (2432)
    request.send(null);   // <-- This IS the line which triggers the exception(s) !
  },
}}
I think this happens because XMLHttpRequest expects its notification callbacks to provide nsIProgressEventSink.
Reporter

Comment 11

12 years ago
[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a8pre) Gecko/200708110202 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

Commenting out
{{
    request.channel.notificationCallbacks = new BadCertHandler();   // 2426
}}
does get rid of the exceptions.
Reporter

Comment 12

12 years ago
I manually patched |BadCertHandler.prototype| in <nsExtensionManager.js>:

I added a |dump(iid);| (...) in the |QueryInterface| failure case:
{{
before |request.send(null);|
{09b54ec1-d98a-49a9-bc95-3219e8b55089} = nsIDocShellTreeItem
after |request.send(null);|
{d974c99e-4148-4df9-8d98-de834a2f6462} = nsIProgressEventSink
{10ed386d-8598-408c-b571-e75ad18edeb0} = nsIDocShell
}}

Then, I added |Components.interfaces.nsIProgressEventSink / onProgress / onStatus|:
this solved its related |location: "<unknown>"| exception, but left the other one(s).
Reporter

Comment 13

12 years ago
The only other place where <badCertHandler.js> is used is in </toolkit/mozapps/update/src/nsUpdateService.js.in>:
{{
1902   checkForUpdates: function(listener, force) {
...
1913     this._request.channel.notificationCallbacks = new BadCertHandler();
...
1918     this._request.onerror     = function(event) { self.onError(event);    };
1919     this._request.onload      = function(event) { self.onLoad(event);     };
1920     this._request.onprogress  = function(event) { self.onProgress(event); };
...
1933   onProgress: function(event) {
1934     LOG("Checker", "onProgress: " + event.position + "/" + event.totalSize);
1935     this._callback.onProgress(event.target, event.position, event.totalSize);
1936   },
}}
(In reply to comment #12)
>before |request.send(null);|
>{09b54ec1-d98a-49a9-bc95-3219e8b55089} = nsIDocShellTreeItem
>after |request.send(null);|
>{d974c99e-4148-4df9-8d98-de834a2f6462} = nsIProgressEventSink
>{10ed386d-8598-408c-b571-e75ad18edeb0} = nsIDocShell
We may not want to try to provide all these interfaces, so it seems as if there is little we can do until the bug about Components.returnCode is fixed.
Reporter

Updated

12 years ago
Depends on: 287107
Reporter

Comment 15

12 years ago
[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a8pre) Gecko/2007082803 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

I notice that the code related to the first exception has changed location:
{{
Error: [Exception... "'Component does not have requested interface' when calling method: [nsIInterfaceRequestor::getInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "JS frame :: file:///D:/Progs/__Mozilla-SR/seamonkey/components/nsBlocklistService.js :: anonymous :: line 363"  data: no]
Source File: file:///D:/Progs/__Mozilla-SR/seamonkey/components/nsBlocklistService.js
Line: 363
}}
Summary: "Error / Exception / NS_NOINTERFACE / nsExtensionManager.js :: anonymous :: line 2432", when checking for "blocklist" → "Error / Exception / NS_NOINTERFACE / nsBlocklistService.js :: anonymous :: line 2432", when checking for "blocklist"
Reporter

Updated

12 years ago
Summary: "Error / Exception / NS_NOINTERFACE / nsBlocklistService.js :: anonymous :: line 2432", when checking for "blocklist" → "Error / Exception / NS_NOINTERFACE / nsBlocklistService.js :: anonymous :: line 363", when checking for "blocklist"
Reporter

Comment 16

12 years ago
[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a9pre) Gecko/2007102402 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

Comment 8 steps: (= new line number)
{{
Error: [Exception... "'Component does not have requested interface' when calling method: [nsIInterfaceRequestor::getInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "JS frame :: file:///.../seamonkey/components/nsBlocklistService.js :: anonymous :: line 348"  data: no]
Source File: file:///.../seamonkey/components/nsBlocklistService.js
Line: 348

Error: [Exception... "'Component does not have requested interface' when calling method: [nsIInterfaceRequestor::getInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "<unknown>"  data: no]

Error: [Exception... "'Component does not have requested interface' when calling method: [nsIInterfaceRequestor::getInterface]"  nsresult: "0x80004002 (NS_NOINTERFACE)"  location: "<unknown>"  data: no]
}}

[Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.9a9pre) Gecko/2007102503 SeaMonkey/2.0a1pre] (nightly) (W2Ksp4)

No error.

R.Duplicate of bug 374499 (actually caused by bug 393627).
Status: NEW → RESOLVED
Closed: 12 years ago
No longer depends on: 287107
Resolution: --- → DUPLICATE
Summary: "Error / Exception / NS_NOINTERFACE / nsBlocklistService.js :: anonymous :: line 363", when checking for "blocklist" → "Error / Exception / NS_NOINTERFACE / nsBlocklistService.js :: anonymous :: line 348", when checking for "blocklist"
Duplicate of bug: 374499
You need to log in before you can comment on or make changes to this bug.