Closed Bug 155245 Opened 18 years ago Closed 8 years ago

proxytest [debug] ASSERTION: CheckForDeactivation called from wrong thread!: 'Error', file f:\build\mozilla\xpcom\threads\nsEventQueue.h, line 85

Categories

(Core :: XPCOM, defect, critical)

x86
Windows 2000
defect
Not set
critical

Tracking

()

RESOLVED WORKSFORME
Future

People

(Reporter: timeless, Unassigned)

Details

###!!! ASSERTION: CheckForDeactivation called from wrong thread!: 'Error', file 
f:\build\mozilla\xpcom\threads\nsEventQueue.h, line 85
Break: at file f:\build\mozilla\xpcom\threads\nsEventQueue.h, line 85

nsEventQueueImpl::CheckForDeactivation() line 85
nsEventQueueImpl::StopAcceptingEvents(nsEventQueueImpl * const 0x00474ea0) line 
208
hash_enum_remove_queues(nsHashKey * 0x00474c70, void * 0x00474ea0, void * 
0x00000000) line 93
_hashEnumerate(PLHashEntry * 0x00474c30, int 0, void * 0x0012fde0) line 199 + 
26 bytes
PL_HashTableEnumerateEntries(PLHashTable * 0x00438174, int (PLHashEntry *, int, 
void *)* 0x10028c90 _hashEnumerate(PLHashEntry *, int, void *), void * 
0x0012fde0) line 429 + 15 bytes
nsHashtable::Enumerate(int (nsHashKey *, void *, void *)* 0x10083760 
hash_enum_remove_queues(nsHashKey *, void *, void *), void * 0x00000000) line 
362 + 21 bytes
nsSupportsHashtable::Enumerate(int (nsHashKey *, void *, void *)* 0x10083760 
hash_enum_remove_queues(nsHashKey *, void *, void *), void * 0x00000000) line 
190
nsEventQueueServiceImpl::~nsEventQueueServiceImpl() line 104
nsEventQueueServiceImpl::`scalar deleting destructor'(unsigned int 1) + 15 
bytes
nsEventQueueServiceImpl::Release(nsEventQueueServiceImpl * const 0x00438160) 
line 124 + 133 bytes
nsCOMPtr_base::assign_assuming_AddRef(nsISupports * 0x00000000) line 436
nsCOMPtr_base::assign_with_AddRef(nsISupports * 0x00000000) line 74
nsCOMPtr<nsISupports>::operator=(nsISupports * 0x00000000) line 796
FreeServiceContractIDEntryEnumerate(PLDHashTable * 0x0041643c, PLDHashEntryHdr 
* 0x00bb2f7c, unsigned int 636, void * 0x00000000) line 1923
PL_DHashTableEnumerate(PLDHashTable * 0x0041643c, int (PLDHashTable *, 
PLDHashEntryHdr *, unsigned int, void *)* 0x10072270 
FreeServiceContractIDEntryEnumerate(PLDHashTable *, PLDHashEntryHdr *, unsigned 
int, void *), void * 0x00000000) line 601 + 34 bytes
nsComponentManagerImpl::FreeServices() line 1935 + 19 bytes
NS_ShutdownXPCOM(nsIServiceManager * 0x00000000) line 610
main(int 1, char * * 0x00414130) line 572 + 8 bytes
mainCRTStartup() line 338 + 17 bytes
KERNEL32! 77e8d326()

I think in an opt-profile build i crash very near here.

PL_IsQueueOnCurrentThread(PLEventQueue * 0x00474e50) line 997
	me	0x004121f0
	queue->handlerThread	0x00475900

nsEventQueueImpl::CheckForDeactivation
-	mEventQueue	0x00474e50
\+	name	0x1011d610 "Thread event queue..."

So...
1. the proxytest code needs to try to shutdown the eventqueue on its thread 
instead of waiting for the poor 
nsEventQueueServiceImpl::~nsEventQueueServiceImpl to try to clean it up

2. Should nsThread or something try to clear out EventQueues on destruction?

3. Should nsEventQueueServiceImpl be able to kill thread queues at shutdown 
without triggering this assert?

This bug will focus on 1. although i'm not quite sure where all of the patches 
for proxytest will go, bug 155202 is another proxytest bug which i intend to 
fix at the same time.
this was just my feeble attempt to test the proxy code from within my debugger.
 it was never meant (by me anywayz) as a real testcase.  timeless, if you have
the time to clean it up, that would be awesome.
Target Milestone: --- → Future
Please see Bug 322131 for another way to see this assert after installing Venkman and shutting down. Timeless, Brendan suggests you may be able to help.
Assignee: dougt → nobody
QA Contact: scc → xpcom
Status: NEW → RESOLVED
Closed: 8 years ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.