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
