This is bug <http://bugzilla.mozilla.org/show_bug.cgi?id=74151>.

My embedding app is getting these non ignorable assertions:

+++ nsGenericModule JS component loader: unable to create factory for
{6bd13476-1dd2-11b2-bbef-f0ccb5fa64b6}
###!!! ASSERTION: Factory creation failed: 'NS_SUCCEEDED(rv)', file
nsNativeComponentLoader.cpp, line 157
###!!! Break: at file nsNativeComponentLoader.cpp, line 157
+++ nsGenericModule nsStringBundleModule: unable to create factory for
{d85a17c1-aa7c-11d2-9b8c-00805f8a16d9}
###!!! ASSERTION: Factory creation failed: 'NS_SUCCEEDED(rv)', file
nsNativeComponentLoader.cpp, line 157
###!!! Break: at file nsNativeComponentLoader.cpp, line 157
+++ nsGenericModule nsChromeModule: unable to create factory for
{d8c7d8a2-e84c-11d2-bf87-00105a1b0627}
###!!! ASSERTION: Factory creation failed: 'NS_SUCCEEDED(rv)', file
nsNativeComponentLoader.cpp, line 157
###!!! Break: at file nsNativeComponentLoader.cpp, line 157
+++ nsGenericModule appshell: unable to create factory for
{e34783f5-ac08-11d2-8d19-00805fc2500c}
###!!! ASSERTION: Factory creation failed: 'NS_SUCCEEDED(rv)', file
nsNativeComponentLoader.cpp, line 157
###!!! Break: at file nsNativeComponentLoader.cpp, line 157
+++ nsGenericModule nsProfileModule: unable to create factory for
{02b0625b-e7f3-11d2-9f5a-006008a6efe9}
###!!! ASSERTION: Factory creation failed: 'NS_SUCCEEDED(rv)', file
nsNativeComponentLoader.cpp, line 157
###!!! Break: at file nsNativeComponentLoader.cpp, line 157
+++ nsGenericModule nsPrefModule: unable to create factory for
{dc26e0e0-ca94-11d1-a9a4-00805f8a7ac4}
###!!! ASSERTION: Factory creation failed: 'NS_SUCCEEDED(rv)', file
nsNativeComponentLoader.cpp, line 157
###!!! Break: at file nsNativeComponentLoader.cpp, line 157

These assertions are due to GetClassObject failing.

And the reason GetClassObject fails is the nsGenericModule ctor is
getting called with the incorrect "componennts" array.

I find that the nsGenericModule ctor for "JS component loader" is called
once in the embedding case, with mComponents is:

debug: edburns: printing argument components for JS component loader
        @mozilla.org/widgets/window/gtk;1
        @mozilla.org/widgets/child_window/gtk;1
        @mozilla.org/widgets/button/gtk;1
        @mozilla.org/widgets/checkbutton/gtk;1
        @mozilla.org/widgets/filewidget/gtk;1
        @mozilla.org/widgets/horizscroll/gtk;1
        @mozilla.org/widgets/vertscroll/gtk;1
        @mozilla.org/widgets/textwidget/gtk;1
        @mozilla.org/widget/appshell/gtk;1
        @mozilla.org/widget/toolkit/gtk;1
        @mozilla.org/widget/lookandfeel/gtk;1
        @mozilla.org/widget/label/gtk;1
        @mozilla.org/sound;1
        @mozilla.org/widget/transferable;1
        @mozilla.org/widget/clipboard;1
        @mozilla.org/widget/htmlformatconverter/gtk;1
        @mozilla.org/widget/fontretrieverservice/gtk;1
        @mozilla.org/widget/dragservice;1
        @mozilla.org/filespecwithui;1

But it's called twice in the mozilla case, with the mComponents the
first time being:

debug: edburns: printing argument components for JS component loader
        @mozilla.org/moz/jsloader;1
        @mozilla.org/moz/jssubscript-loader;1

and the second time being:

debug: edburns: printing argument components for JS component loader
        @mozilla.org/widgets/window/gtk;1
        @mozilla.org/widgets/child_window/gtk;1
        @mozilla.org/widgets/button/gtk;1
        @mozilla.org/widgets/checkbutton/gtk;1
        @mozilla.org/widgets/filewidget/gtk;1
        @mozilla.org/widgets/horizscroll/gtk;1
        @mozilla.org/widgets/vertscroll/gtk;1
        @mozilla.org/widgets/textwidget/gtk;1
        @mozilla.org/widget/appshell/gtk;1
        @mozilla.org/widget/toolkit/gtk;1
        @mozilla.org/widget/lookandfeel/gtk;1
        @mozilla.org/widget/label/gtk;1
        @mozilla.org/sound;1
        @mozilla.org/widget/transferable;1
        @mozilla.org/widget/clipboard;1
        @mozilla.org/widget/htmlformatconverter/gtk;1
        @mozilla.org/widget/fontretrieverservice/gtk;1
        @mozilla.org/widget/dragservice;1
        @mozilla.org/filespecwithui;1

This first time invocation is key to the GetClassObject working.

Why is this happening?

Ed

Reply via email to