Closed Bug 183497 Opened 22 years ago Closed 21 years ago

nsImapProtocol::~nsImapProtocol fatally asserted destroying a lock

Categories

(MailNews Core :: Networking: IMAP, defect)

x86
Windows 2000
defect
Not set
critical

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: timeless, Assigned: Bienvenu)

Details

(Keywords: assertion, crash)

cvs build from two weeks ago
    PR_ASSERT(lock->owner == 0);

-	lock->owner	0x06e19b80
|	state	2
|	priority	1
|	arg	0x064ef988
|	startFunc	0x100773f0 nsThread::Main(void *)
|+	stack	0x13daeb58
|	environment	0x00000000
|	dump	0x00000000
|	dumpArg	0x00000000
|	tpdLength	128
|	privateData	0x07761f28
|	errorCode	0
|	osErrorCode	0
|	errorStringLength	0
|	errorStringSize	0
|+	errorString	0x00000000 ""
|+	threadLock	{...}
|	queueCount	0
|	waitCount	0
|+	active	{...}
|+	links	{...}
|+	waitQLinks	{...}
|+	lockList	{...}
|	sleep	0
|+	wait	{...}
|	id	4696
|	flags	128
|	no_sched	0
|+	term	0x00000000
|+	cpu	0x00000000
|	threadAllocatedOnStack	0
|	io_pending	0
|	io_fd	0
|	io_suspended	0
\+	md	{...}

PR_Assert(const char * 0x3002f5a8 `string', const char * 0x3002f554 `string',
int 213) line 518
PR_DestroyLock(PRLock * 0x19cb3430) line 213 + 31 bytes
PR_DestroyMonitor(PRMonitor * 0x19ec8238) line 82 + 14 bytes
nsImapProtocol::~nsImapProtocol() line 554 + 16 bytes
nsImapProtocol::`scalar deleting destructor'(unsigned int 1) + 15 bytes
nsImapProtocol::Release(nsImapProtocol * const 0x193eb5c0) line 296 + 147 bytes
nsCOMPtr<nsIRunnable>::assign_assuming_AddRef(nsIRunnable * 0x00000000) line 473
nsCOMPtr<nsIRunnable>::assign_with_AddRef(nsISupports * 0x00000000) line 915
nsCOMPtr<nsIRunnable>::operator=(nsIRunnable * 0x00000000) line 585
nsThread::Main(void * 0x064ef988) line 140
_PR_NativeRunThread(void * 0x06e19b80) line 433 + 13 bytes
MSVCRTD! 1020c323()
KERNEL32! 77e92ca8()

other threads:
NTDLL! 77f8a122()
KERNEL32! 77e88787()
_PR_WaitCondVar(PRThread * 0x11d00a48, PRCondVar * 0x1927df50, PRLock *
0x06d3b920, unsigned int 74573) line 201 + 23 bytes
PR_Wait(PRMonitor * 0x1970b370, unsigned int 74573) line 171 + 29 bytes
nsImapProtocol::ImapThreadMainLoop() line 1125 + 20 bytes
nsImapProtocol::Run(nsImapProtocol * const 0x12e8588c) line 908
nsThread::Main(void * 0x038fc4a0) line 123 + 26 bytes
_PR_NativeRunThread(void * 0x11d00a48) line 433 + 13 bytes
MSVCRTD! 1020c323()
KERNEL32! 77e92ca8()

nsImapProtocol::ImapThreadMainLoop() line 1125 + 20 bytes
    PR_EnterMonitor(m_urlReadyToRunMonitor); <-- owns monitor

    PRStatus err;

    err = PR_Wait(m_urlReadyToRunMonitor, sleepTime); <-- running here still
owning monitor

    PR_ExitMonitor(m_urlReadyToRunMonitor);

When i crashed there was a newmail notification thingee on the screen
were you doing anything at the time? shutting down? or just sitting there? Is it
possible that you'd been disconnected from the imap server or something?

You're showing two different, unrelated imap theads, and there's one imap
protocol object per thread, so you're not talking about the same monitor.
it's possible that the imap server connnection got stuck (i run imap over ttssh
forwarding, when someone tries to connect to that port from a place other than
localhost the forwarding blocks, and i get a dialog, but i don't remember
getting such a dialog), however not very likely since it had obviously just
worked to get new mail. i wasn't shutting down.

i'm pretty sure i was just reading mail or doing normal browsing stuff.

sorry that was the only other thread that looked remotely interesting, i don't
know much about mozilla locks/monitors especially not in mailnews.
QA Contact: huang → gchan
By the definitions on <http://bugzilla.mozilla.org/bug_status.html#severity> and
<http://bugzilla.mozilla.org/enter_bug.cgi?format=guided>, crashing and dataloss
bugs are of critical or possibly higher severity.  Only changing open bugs to
minimize unnecessary spam.  Keywords to trigger this would be crash, topcrash,
topcrash+, zt4newcrash, dataloss.
Severity: major → critical
the assertion ere mentions in bug 221491 comment 16 is vaguely familiar, but i 
obviously can't say if i saw that assert in the session for my crash :)
I think this might have been fixed by the patch in 221023 - I think the body id
monitor wasn't cleared in some situations.
Status: NEW → RESOLVED
Closed: 21 years ago
Resolution: --- → FIXED
I checked in a change for bug 221023 that I believe may have fixed this, so I'm
marking this fixed. We weren't releasing the body id monitor in a certain
failure case, and that would generate the assertion on destruction of the
protocol object (and since it's a PR_Assert, it aborts).
Product: MailNews → Core
Product: Core → MailNews Core
You need to log in before you can comment on or make changes to this bug.