Closed Bug 753656 Opened 12 years ago Closed 12 years ago

PSM reads prefs off the main thread

Categories

(Core :: Security: PSM, defect)

defect
Not set
normal

Tracking

()

RESOLVED DUPLICATE of bug 624514

People

(Reporter: khuey, Unassigned)

References

Details

The prefs service isn't actually threadsafe, so this is a problem.  With a patch I have to make using the pref service off the main thread fatal I get:

 	ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes	
 	ntdll.dll!_ZwRaiseException@12()  + 0x12 bytes	
 	msvcr100d.dll!___lock_fhandle()  + 0xe1 bytes	
 	xul.dll!nsCOMPtr<nsISupports>::nsCOMPtr<nsISupports>(const nsCOMPtr<nsISupports> & aSmartPtr)  Line 882	C++
 	xul.dll!nsComponentManagerImpl::GetServiceByContractID(const char * aContractID, const nsID & aIID, void * * result)  Line 1409	C++
 	xul.dll!CallGetService(const char * aContractID, const nsID & aIID, void * * aResult)  Line 95	C++
 	xul.dll!nsGetServiceByContractID::operator()(const nsID & aIID, void * * aInstancePtr)  Line 278 + 0xc bytes	C++
 	xul.dll!nsCOMPtr<nsIPrefBranch>::assign_from_gs_contractid(nsGetServiceByContractID gs, const nsID & aIID)  Line 1212 + 0x12 bytes	C++
>	xul.dll!nsNSSCertificateDB::GetIsOcspOn(bool * aOcspOn)  Line 1399	C++
 	xul.dll!nsNSSCertificate::hasValidEVOidTag(SECOidTag & resultOidTag, bool & validEV)  Line 1152	C++
 	xul.dll!nsNSSCertificate::getValidEVOidTag(SECOidTag & resultOidTag, bool & validEV)  Line 1258	C++
 	xul.dll!nsNSSCertificate::GetIsExtendedValidation(bool * aIsEV)  Line 1283 + 0xd bytes	C++
 	xul.dll!mozilla::psm::`anonymous namespace'::AuthCertificate(mozilla::psm::TransportSecurityInfo * infoObject, CERTCertificateStr * cert)  Line 914	C++
 	xul.dll!mozilla::psm::`anonymous namespace'::SSLServerCertVerificationJob::Run()  Line 1040 + 0xb bytes	C++
 	xul.dll!nsThreadPool::Run()  Line 219	C++
 	xul.dll!nsThread::ProcessNextEvent(bool mayWait, bool * result)  Line 656 + 0xe bytes	C++
 	xul.dll!NS_ProcessNextEvent_P(nsIThread * thread, bool mayWait)  Line 245 + 0xd bytes	C++
 	xul.dll!nsThread::ThreadFunc(void * arg)  Line 289 + 0x8 bytes	C++
 	nspr4.dll!_PR_NativeRunThread(void * arg)  Line 426 + 0x9 bytes	C
 	nspr4.dll!pr_root(void * arg)  Line 122 + 0xd bytes	C
 	msvcr100d.dll!__beginthreadex()  + 0x243 bytes
Actually, looks like this is a dupe.
Status: NEW → RESOLVED
Closed: 12 years ago
Resolution: --- → DUPLICATE
You need to log in before you can comment on or make changes to this bug.