> However, why not just use:
> NS_IMPL_ISUPPORTS4(nsSampleImpl, nsIWebProgressListener,
> nsISupportsWeakReference, nsIObserver, nsISample)
>
> (if you do that, you have to remove NS_IMPL_ADDREF and NS_IMPL_RELEASE)
>
>
> --
Hi Christian,
Thanks for your quick response.
After implementing NS_IMPL_ISUPPORTS4(nsSampleImpl,
nsIWebProgressListener,
nsISupportsWeakReference, nsIObserver, nsISample), things seem to be
better.
However, now, my program crashed at the macro
NS_GENERIC_FACTORY_CONSTRUCTOR(nsSampleImpl) ==
nsSampleImplConstructor(). nsSampleImplConstructor() functionis is
listed under nsModule ComponentInfo components[]. The exact point
that crashed inside nsSampleImplConstructor() is inst->AddRef().
inst seems to carry invalid information:
- inst 0x009dbe90
+ nsIWebProgressListener {...}
- nsSupportsWeakReference {...}
- nsISupportsWeakReference {...}
- nsISupports {...}
- __vfptr 0xfeeefeee
[0] CXX0030: Error: expression cannot be evaluated
[1] CXX0030: Error: expression cannot be evaluated
[2] CXX0030: Error: expression cannot be evaluated
+ mProxy 0xfeeefeee
+ nsIObserver {...}
- nsISample {...}
- nsISupports {...}
- __vfptr 0xfeeefeee
[0] CXX0030: Error: expression cannot be evaluated
[1] CXX0030: Error: expression cannot be evaluated
[2] CXX0030: Error: expression cannot be evaluated
+ mRefCnt {...}
+ _mOwningThread {...}
+ mValue 0xfeeefeee ""
The callstack is as follows:
nsSampleImplConstructor() line 99
nsGenericFactory::CreateInstance() line 82 + 21 bytes
nsComponentManagerImpl::CreateInstanceByContractID() line 2000 + 24
bytes
nsComponentManagerImpl::GetServiceByContractID() line 2420 + 50 bytes
nsGetServiceByContractID::operator()() line 121 + 38 bytes
nsCOMPtr_base::assign_from_helper() line 114 + 18 bytes
nsCOMPtr<nsISupports>::nsCOMPtr<nsISupports>() line 846
NS_CreateServicesFromCategory() line 785 + 37 bytes
NS_InitXPCOM2() line 633 + 17 bytes
NS_InitXPCOM2() line 173 + 18 bytes
GRE_Startup() line 477 + 35 bytes
main() line 1705 + 5 bytes
mainCRTStartup() line 338 + 17 bytes
KERNEL32! 77e814c7()
I realised that nsSampleImpl and ~nsSampleImpl are called once before
the crashed occurs:
nsSampleImpl() enter.
~nsSampleImpl() enter
~nsSampleImpl() exit.
nsSampleImpl() exit.
-------------------
crashed occurs
-------------------
I am wonder if you know what's went wrong, please help me if you got
any idea.
Thanks,
YueWeng
_______________________________________________
mozilla-embedding mailing list
[EMAIL PROTECTED]
http://mail.mozilla.org/listinfo/mozilla-embedding