A little more exploration. In nsComponentManagerImpl::CreateInstanceByContractID() I found that entry->GetFactory() is returning NS_ERROR_INVALID_POINTER.
What seems strange is that the following
if (NS_SUCCEEDED(rv))
seems to be returning TRUE since the code inside the block gets executed.
1664 nsFactoryEntry *entry = GetFactoryEntry(aContractID, strlen(aContractID));
(gdb) n
1666 if (!entry)
(gdb) n
1681 nsIFactory *factory = nsnull;
(gdb) n
1682 nsresult rv = entry->GetFactory(&factory);
(gdb) n
1684 if (NS_SUCCEEDED(rv))
(gdb) display entry
2: entry = <value optimized out>
(gdb) display factory
3: factory = (class nsIFactory *) 0x7f345b2982e0
(gdb) print /x rv
$2 = 0x80004003
A little more exploration. In nsComponentMana gerImpl: :CreateInstance ByContractID( ) I found that entry->GetFactory() is returning NS_ERROR_ INVALID_ POINTER.
What seems strange is that the following
if (NS_SUCCEEDED(rv))
seems to be returning TRUE since the code inside the block gets executed.
1664 nsFactoryEntry *entry = GetFactoryEntry (aContractID, strlen( aContractID) ); GetFactory( &factory) ;
(gdb) n
1666 if (!entry)
(gdb) n
1681 nsIFactory *factory = nsnull;
(gdb) n
1682 nsresult rv = entry->
(gdb) n
1684 if (NS_SUCCEEDED(rv))
(gdb) display entry
2: entry = <value optimized out>
(gdb) display factory
3: factory = (class nsIFactory *) 0x7f345b2982e0
(gdb) print /x rv
$2 = 0x80004003
#define NS_ERROR_ INVALID_ POINTER ((nsresult) 0x80004003L)