Closed Bug 404461 Opened 17 years ago Closed 17 years ago

when I open JavaScript Debugger I get assertion: Can't get mTree or mTreeView

Categories

(Core :: Disability Access APIs, defect)

x86
All
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: vasiliy.potapenko, Assigned: evan.yan)

References

Details

(Keywords: regression)

Attachments

(1 file, 1 obsolete file)

User-Agent:       Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.8.1.3) Gecko/20070309 Firefox/2.0.0.3
Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b2pre) Gecko/2007112010 SeaMonkey/2.0a1pre

When I open JavaScript Debugger or DOMI view AccessibleObject I get assertion: Can't get mTree or mTreeView! : 'mTree && mTreeView', file mozilla/accessible/src/xul/nsXULTreeAccessible.cpp, line 518

Reproducible: Always

Steps to Reproduce:
1. Start Seamonkey
2. Open Tools->Web Development->JavaScript Debugger
 	ntdll.dll!7c901230() 	
>	xpcom_core.dll!Break(const char * aMsg=0x0012f280)  Line 480	C++
 	xpcom_core.dll!NS_DebugBreak_P(unsigned int aSeverity=0x00000001, const char * aStr=0x01af1e64, const char * aExpr=0x01af1e50, const char * aFile=0x01af1e10, int aLine=0x00000206)  Line 358 + 0xc	C++
 	accessibility.dll!nsXULTreeAccessible::GetCachedTreeitemAccessible(int aRow=0x00000000, nsITreeColumn * aColumn=0x05e6c188, nsIAccessible * * aAccessible=0x0012f770)  Line 518 + 0x3a	C++
 	accessibility.dll!nsXULTreeColumnsAccessible::GetNextSibling(nsIAccessible * * aNextSibling=0x0012f770)  Line 1085 + 0x26	C++
 	accessibility.dll!nsAccessible::Shutdown()  Line 524 + 0x2f	C++
 	accessibility.dll!nsXULSelectableAccessible::Shutdown()  Line 73	C++
 	accessibility.dll!nsXULTreeAccessible::Shutdown()  Line 235	C++
 	accessibility.dll!nsDocAccessible::RefreshNodes(nsIDOMNode * aStartNode=0x05ebc91c)  Line 1704	C++
 	accessibility.dll!nsDocAccessible::FlushPendingEvents()  Line 1652	C++
 	accessibility.dll!nsDocAccessible::FlushEventsCallback(nsITimer * aTimer=0x05f04300, void * aClosure=0x05614ee0)  Line 1665	C++
 	xpcom_core.dll!nsTimerImpl::Fire()  Line 400 + 0xe	C++
 	xpcom_core.dll!nsTimerEvent::Run()  Line 489	C++
 	xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=0x00000001, int * result=0x0012f9b0)  Line 491	C++
 	xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00b3a140, int mayWait=0x00000001)  Line 227 + 0x14	C++
 	gkwidget.dll!nsBaseAppShell::Run()  Line 154 + 0xc	C++
 	tkitcmps.dll!nsAppStartup::Run()  Line 170 + 0x1a	C++
 	xul.dll!XRE_main(int argc=0x00000001, char * * argv=0x00b38228, const nsXREAppData * aAppData=0x00b38610)  Line 3142 + 0x23	C++
 	seamonkey.exe!main(int argc=0x00000001, char * * argv=0x00b38228)  Line 99 + 0x12	C++
 	seamonkey.exe!mainCRTStartup()  Line 398 + 0x11	C
 	kernel32.dll!7c816fd7() 	
Status: UNCONFIRMED → NEW
Ever confirmed: true
I also encountered this bug when I simply invoke bookmarks.
Blocks: fox3access
OS: Windows XP → All
Attached patch patch (obsolete) — Splinter Review
I have an idea.
Attachment #289610 - Flags: review?(aaronleventhal)
can you describe your patch?
(In reply to comment #4)
> can you describe your patch?
> 


ntdll.dll!7c901230()    
>	xpcom_core.dll!Break(const char * aMsg=0x0012f280)  Line 480	C++
        xpcom_core.dll!NS_DebugBreak_P(unsigned int aSeverity=0x00000001, const
char * aStr=0x01af1e64, const char * aExpr=0x01af1e50, const char *
aFile=0x01af1e10, int aLine=0x00000206)  Line 358 + 0xc     C++

in function GetCachedTreeitemAccessible we have
NS_ASSERTION(mTree && mTreeView, "Can't get mTree or mTreeView!\n");


        accessibility.dll!nsXULTreeAccessible::GetCachedTreeitemAccessible(int
aRow=0x00000000, nsITreeColumn * aColumn=0x05e6c188, nsIAccessible * *
aAccessible=0x0012f770)  Line 518 + 0x3a  C++
accessibility.dll!nsXULTreeColumnsAccessible::GetNextSibling(nsIAccessible * *
aNextSibling=0x0012f770)  Line 1085 + 0x26       C++
        accessibility.dll!nsAccessible::Shutdown()  Line 524 + 0x2f     C++
        accessibility.dll!nsXULSelectableAccessible::Shutdown()  Line 73       
C++

in function Shutdown we have
mTree = nsnull;
mTreeView = nsnull;

        accessibility.dll!nsXULTreeAccessible::Shutdown()  Line 235     C++
        accessibility.dll!nsDocAccessible::RefreshNodes(nsIDOMNode *
aStartNode=0x05ebc91c)  Line 1704  C++
        accessibility.dll!nsDocAccessible::FlushPendingEvents()  Line 1652     
C++
        accessibility.dll!nsDocAccessible::FlushEventsCallback(nsITimer *
aTimer=0x05f04300, void * aClosure=0x05614ee0)  Line 1665     C++
        xpcom_core.dll!nsTimerImpl::Fire()  Line 400 + 0xe      C++
        xpcom_core.dll!nsTimerEvent::Run()  Line 489    C++
        xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=0x00000001, int *
result=0x0012f9b0)  Line 491    C++
        xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00b3a140, int
mayWait=0x00000001)  Line 227 + 0x14    C++
        gkwidget.dll!nsBaseAppShell::Run()  Line 154 + 0xc      C++
        tkitcmps.dll!nsAppStartup::Run()  Line 170 + 0x1a       C++
        xul.dll!XRE_main(int argc=0x00000001, char * * argv=0x00b38228, const
nsXREAppData * aAppData=0x00b38610)  Line 3142 + 0x23     C++
        seamonkey.exe!main(int argc=0x00000001, char * * argv=0x00b38228)  Line
99 + 0x12       C++
        seamonkey.exe!mainCRTStartup()  Line 398 + 0x11 C
        kernel32.dll!7c816fd7()         

i.e. we give mTree and mTreeView nsnull value in function nsXULTreeAccessible::Shutdown and we check them in function nsXULTreeAccessible::GetCachedTreeitemAccessible
I have transffered 'mTree = nsnull and mTreeView = nsnull' down
Possibly I should be more clear when I asked to describe a patch. I meant what's happen there i.e. why do we need to call GetCachedTreeitemAccessible duirng shutdown phase.

When nsAccessible::Shutdown is called on the tree then we run trough his children (columns and treeitems) and set theirs parent on nsnull. After that it looks RefreshChildren() will run through treeitems and shoutdown them too. But since tree has own children cache then is it ok we try to create treeitems accessibles to set theirs parents on nsnull when tree is going (gone) away?
Comment on attachment 289610 [details] [diff] [review]
patch

Surkov, can you look?
Attachment #289610 - Flags: review?(aaronleventhal) → review?(surkov.alexander)
Ah, Surkov is already looking.

Vasiliy, please add a comment before the 2 lines of code saying something like:

// This must occur after blah blah to avoid blah blah blah

I think the problem is we shouldn't call GetNextSibling() in nsAccessible::Shutdown(). GetNextSibling() could be overrided. And in that situation, derived accessible should take care of its own cache.

We cleared child accessible's mParent in InvalidateChildren(). So don't need to do that one more time in nsAccessible::Shutdown().
Attachment #289610 - Attachment is obsolete: true
Attachment #289767 - Flags: review?(surkov.alexander)
Attachment #289610 - Flags: review?(surkov.alexander)
Comment on attachment 289767 [details] [diff] [review]
remove GetNextSibling in nsAccessible::Shutdown()

correct, r=me
Attachment #289767 - Flags: review?(surkov.alexander) → review+
Assignee: aaronleventhal → Evan.Yan
Attachment #289767 - Flags: approval1.9?
Attachment #289767 - Flags: approval1.9? → approval1.9+
/cvsroot/mozilla/accessible/src/base/nsAccessible.cpp,v  <--  nsAccessible.cpp
new revision: 1.338; previous revision: 1.337
done
Status: NEW → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: