Closed Bug 34663 Opened 24 years ago Closed 24 years ago

crash in nsDNSService::Shutdown()

Categories

(Core :: Networking, defect, P3)

x86
Windows NT
defect

Tracking

()

VERIFIED FIXED

People

(Reporter: jband_mozilla, Assigned: gordon)

References

Details

(Keywords: crash, Whiteboard: [nsbeta2+] 1d)

Attachments

(1 file)

While trying to reproduce bug http://bugzilla.mozilla.org/show_bug.cgi?id=34411 
I got a crash with a much different stack then found there.

Using NT debug build from April 5 noonish sources...

steps:
1) start mozilla
2) unplug network
3) choose a profile
4) wat for alert box saying that it can't open the page
5) quit.

It crashes inside the mLookups.Enumerate in nsDNSService::Shutdown().

At the point it crashes the current hashentry pointer is 0xdddddddd and the 
nentries for the hashtable is 0.

I'm wondering if entries are getting removed as you enumerate and bad things 
happen. When going direct to an nspr hastable it expects the enumeration 
function to return a value saying whether to remove the item or not. 
nsHashtable has a wrpper for that too. But if you are doing an indirect 
removal of items i the enumerator it might be freaking. Then again maybe 
something else is wrong?

Anyway, the stack is attached...
Attached file the stack
This looks like it could be a duplicate of bug 33821.  I think it is definitely a 
threading problem and that the lookups aren't getting full protection.  I'm 
pretty sure I know how to fix this, but I'm having trouble reproducing it because 
the nsIOService seems to be getting leaked, so Shutdown() isn't getting called on 
my NT and Mac builds.  I'm currently working on figuring out why...
Status: NEW → ASSIGNED
Target Milestone: --- → M16
Moving to M17 which is now considered part of beta2.
Target Milestone: M16 → M17
The crash looks like it is due to the fact we are trying to Remove() a hash table 
entry while Enumerating() it.  Unfortunately, nsSupportsHashTable wraps the 
enumerate callback function to PL_HashTableEnumerateEntries() so we can't use the 
HT_ENUMERATE_REMOVE flag to mark entries that need to be removed while we are 
enumerating the hash.  To efficiently weed out the hash table, we need to go 
around the nsSupportsHashTable api, and call HashTableEnumerateEntries() 
directly, or just give up on using an nsSupportsHashTable in the first place and 
handle the reference counting ourselves.
Keywords: beta2
Whiteboard: 1d
Keywords: nsbeta2
Adding crash keyword.
Keywords: beta2crash
[nsbeta2+]
Whiteboard: 1d → [nsbeta2+] 1d
Target Milestone: M17 → M16
Severity: normal → critical
A fix for this has been checked in.  I'm not sure we'll be able to verify it 
until bug 17390 is fixed.
Status: ASSIGNED → RESOLVED
Closed: 24 years ago
Depends on: 17390
Resolution: --- → FIXED
per Gordon's comment, waiting on 17390
verif:
Win NT 2000091505
Status: RESOLVED → VERIFIED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: