Closed
      
        Bug 490932
      
      
        Opened 16 years ago
          Closed 16 years ago
      
        
    
  
crash [@ nsFileView::SetDirectory(nsIFile*)] in XUL file chooser    
    Categories
(SeaMonkey :: Download & File Handling, defect)
Tracking
(status1.9.1 .4-fixed)
        RESOLVED
        FIXED
        
    
  
        
            seamonkey2.0b2
        
    
  
| Tracking | Status | |
|---|---|---|
| status1.9.1 | --- | .4-fixed | 
People
(Reporter: tonymec, Assigned: timeless)
Details
(Keywords: crash)
Crash Data
Attachments
(1 file)
| 
        
        
         2.88 KB,
          patch         
       | 
      
           neil
 :
              
              review+
          neil
 :
              
              superreview+
          dveditz
 :
              
              approval1.9.1.4+
           | 
      Details | Diff | Splinter Review | 
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b5pre) Gecko/20090428 SeaMonkey/2.0b1pre - Build ID: 20090428000523
Crash in XUL file chooser for "Save Link Target As..."
Reproducible: Tried but couldn't
bp-b999fcf6-f6e3-4a47-9f2f-0fd562090429
Here comes the Breakpad/Soccorro report:
*Details*
---------
Signature	nsFileView::SetDirectory(nsIFile*)
UUID	b999fcf6-f6e3-4a47-9f2f-0fd562090429
Time 	2009-04-29 08:44:54.882937
Uptime	88224
Last Crash	2326252 seconds before submission
Product	SeaMonkey
Version	2.0b1pre
Build ID	20090428000523
Branch	1.9.1
OS	Linux
OS Version	0.0.0 Linux 2.6.27.21-0.1-pae #1 SMP 2009-03-31 14:50:44 +0200 i686 GNU/Linux
CPU	x86
CPU Info	AuthenticAMD family 1 model 7 stepping 1
Crash Reason	SIGSEGV
Crash Address	0xb4f2a1e4
User Comments	At "save Link Target As", waiting for the XUL file selector to be fully displayed
Processor Notes 	
*Frames* - Crashing Thread
--------
0  	libfileview.so  	nsFileView::SetDirectory  	toolkit/components/filepicker/src/nsFileView.cpp:410
1 	libfileview.so 	nsFileView::SetShowHiddenFiles 	toolkit/components/filepicker/src/nsFileView.cpp:319
2 	libxpcom_core.so 	NS_GetXPTCallStub_P 	
3 	libxpconnect.so 	XPCWrappedNative::CallMethod 	js/src/xpconnect/src/xpcwrappednative.cpp:2450
4 	libxpconnect.so 	XPC_WN_GetterSetter 	js/src/xpconnect/src/xpcprivate.h:2326
5 	libmozjs.so 	js_Invoke 	js/src/jsinterp.cpp:1365
6 	libmozjs.so 	js_InternalInvoke 	js/src/jsinterp.cpp:1426
7 	libmozjs.so 	js_InternalGetOrSet 	js/src/jsinterp.cpp:1489
8 	libmozjs.so 	js_SetSprop 	js/src/jsscope.h:373
9 	libmozjs.so 	js_NativeSet 	js/src/jsobj.cpp:4298
10 	libmozjs.so 	js_SetPropertyHelper 	js/src/jsobj.cpp:4649
11 	libmozjs.so 	js_Interpret 	js/src/jsinterp.cpp:4741
12 	libmozjs.so 	js_Invoke 	js/src/jsinterp.cpp:1373
13 	libmozjs.so 	js_InternalInvoke 	js/src/jsinterp.cpp:1426
14 	libmozjs.so 	JS_CallFunctionValue 	js/src/jsapi.cpp:5187
15 	libgklayout.so 	nsJSContext::CallEventHandler 	dom/src/base/nsJSEnvironment.cpp:2011
16 	libgklayout.so 	nsJSEventListener::HandleEvent 	dom/src/events/nsJSEventListener.cpp:247
17 	libgklayout.so 	nsEventListenerManager::HandleEventSubType 	content/events/src/nsEventListenerManager.cpp:1101
18 	libgklayout.so 	nsEventListenerManager::HandleEvent 	content/events/src/nsEventListenerManager.cpp:1206
19 	libgklayout.so 	nsEventTargetChainItem::HandleEvent 	content/events/src/nsEventDispatcher.cpp:236
20 	libgklayout.so 	nsEventTargetChainItem::HandleEventTargetChain 	content/events/src/nsEventDispatcher.cpp:300
21 	libgklayout.so 	nsEventDispatcher::Dispatch 	content/events/src/nsEventDispatcher.cpp:514
22 	libgklayout.so 	PresShell::HandleDOMEventWithTarget 	layout/base/nsPresShell.cpp:6182
23 	libgklayout.so 	nsButtonBoxFrame::DoMouseClick 	layout/xul/base/src/nsButtonBoxFrame.cpp:160
24 	libgklayout.so 	nsButtonBoxFrame::MouseClicked 	layout/xul/base/src/nsButtonBoxFrame.h:62
25 	libgklayout.so 	nsButtonBoxFrame::HandleEvent 	layout/xul/base/src/nsButtonBoxFrame.cpp:130
26 	libgklayout.so 	nsPresShellEventCB::HandleEvent 	layout/base/nsPresShell.cpp:1237
27 	libgklayout.so 	nsEventTargetChainItem::HandleEventTargetChain 	content/events/src/nsEventDispatcher.cpp:346
28 	libgklayout.so 	nsEventDispatcher::Dispatch 	content/events/src/nsEventDispatcher.cpp:514
29 	libgklayout.so 	PresShell::HandleEventInternal 	layout/base/nsPresShell.cpp:6136
30 	libgklayout.so 	PresShell::HandleEventWithTarget 	layout/base/nsPresShell.cpp:6041
31 	libgklayout.so 	nsEventStateManager::CheckForAndDispatchClick 	content/events/src/nsEventStateManager.cpp:4073
32 	libgklayout.so 	nsEventStateManager::PostHandleEvent 	content/events/src/nsEventStateManager.cpp:3036
33 	libgklayout.so 	PresShell::HandleEventInternal 	layout/base/nsPresShell.cpp:6157
34 	libgklayout.so 	PresShell::HandlePositionedEvent 	layout/base/nsPresShell.cpp:6024
35 	libgklayout.so 	PresShell::HandleEvent 	layout/base/nsPresShell.cpp:5884
36 	libgklayout.so 	nsViewManager::HandleEvent 	view/src/nsViewManager.cpp:1394
37 	libgklayout.so 	nsViewManager::DispatchEvent 	view/src/nsViewManager.cpp:1353
38 	libgklayout.so 	HandleEvent 	view/src/nsView.cpp:167
39 	libwidget_gtk2.so 	nsWindow::DispatchEvent 	widget/src/gtk2/nsWindow.cpp:574
40 	libwidget_gtk2.so 	nsWindow::OnButtonReleaseEvent 	widget/src/gtk2/nsWindow.cpp:2808
41 	libwidget_gtk2.so 	button_release_event_cb 	widget/src/gtk2/nsWindow.cpp:5369
42 	libgtk-x11-2.0.so.0.1400.4 	libgtk-x11-2.0.so.0.1400.4@0x12dec5 	
43 	libgobject-2.0.so.0.1800.2 	libgobject-2.0.so.0.1800.2@0x9d8a 	
44 	libgobject-2.0.so.0.1800.2 	libgobject-2.0.so.0.1800.2@0x2012c 	
45 	libgobject-2.0.so.0.1800.2 	libgobject-2.0.so.0.1800.2@0x216ba 	
46 	libgobject-2.0.so.0.1800.2 	libgobject-2.0.so.0.1800.2@0x21cb5 	
47 	libgtk-x11-2.0.so.0.1400.4 	libgtk-x11-2.0.so.0.1400.4@0x2433fd 	
48 	libgtk-x11-2.0.so.0.1400.4 	libgtk-x11-2.0.so.0.1400.4@0x1269db 	
49 	libgtk-x11-2.0.so.0.1400.4 	libgtk-x11-2.0.so.0.1400.4@0x127d86 	
50 	libgdk-x11-2.0.so.0.1400.4 	libgdk-x11-2.0.so.0.1400.4@0x496c9 	
51 	libglib-2.0.so.0.1800.2 	libglib-2.0.so.0.1800.2@0x399c7 	
52 	libglib-2.0.so.0.1800.2 	libglib-2.0.so.0.1800.2@0x3d082 	
53 	libglib-2.0.so.0.1800.2 	libglib-2.0.so.0.1800.2@0x3d240 	
54 	libwidget_gtk2.so 	nsAppShell::ProcessNextNativeEvent 	widget/src/gtk2/nsAppShell.cpp:144
55 	libwidget_gtk2.so 	nsBaseAppShell::DoProcessNextNativeEvent 	widget/src/xpwidgets/nsBaseAppShell.cpp:151
56 	libwidget_gtk2.so 	nsBaseAppShell::OnProcessNextEvent 	widget/src/xpwidgets/nsBaseAppShell.cpp:278
57 	libxpcom_core.so 	nsThread::ProcessNextEvent 	xpcom/threads/nsThread.cpp:497
58 	libxpcom_core.so 	NS_ProcessNextEvent_P 	nsThreadUtils.cpp:227
59 	libnsappshell.so 	nsXULWindow::ShowModal 	xpfe/appshell/src/nsXULWindow.cpp:415
60 	libnsappshell.so 	nsContentTreeOwner::ShowAsModal 	xpfe/appshell/src/nsContentTreeOwner.cpp:528
61 	libembedcomponents.so 	nsWindowWatcher::OpenWindowJSInternal 	embedding/components/windowwatcher/src/nsWindowWatcher.cpp:989
62 	libembedcomponents.so 	nsWindowWatcher::OpenWindowJS 	embedding/components/windowwatcher/src/nsWindowWatcher.cpp:486
63 	libgklayout.so 	nsGlobalWindow::OpenInternal 	dom/src/base/nsGlobalWindow.cpp:7310
64 	libgklayout.so 	nsGlobalWindow::OpenDialog 	dom/src/base/nsGlobalWindow.cpp:5130
65 	libxpcom_core.so 	NS_GetXPTCallStub_P 	
66 	libxpconnect.so 	XPCWrappedNative::CallMethod 	js/src/xpconnect/src/xpcwrappednative.cpp:2450
67 	libxpconnect.so 	XPC_WN_CallMethod 	js/src/xpconnect/src/xpcwrappednativejsops.cpp:1583
68 	libmozjs.so 	js_Invoke 	js/src/jsinterp.cpp:1365
69 	libmozjs.so 	js_Interpret 	js/src/jsinterp.cpp:5132
70 	libmozjs.so 	js_Invoke 	js/src/jsinterp.cpp:1373
71 	libxpconnect.so 	nsXPCWrappedJSClass::CallMethod 	js/src/xpconnect/src/xpcwrappedjsclass.cpp:1614
72 	libxpconnect.so 	nsXPCWrappedJS::CallMethod 	js/src/xpconnect/src/xpcwrappedjs.cpp:561
73 	libxpcom_core.so 	PrepareAndDispatch 	xpcom/reflect/xptcall/src/md/unix/xptcstubs_gcc_x86_unix.cpp:95
74 	libxpcom_core.so 	NS_GetXPTCallStub_P 	
75 	libxpconnect.so 	XPCWrappedNative::CallMethod 	js/src/xpconnect/src/xpcwrappednative.cpp:2450
76 	libxpconnect.so 	XPC_WN_CallMethod 	js/src/xpconnect/src/xpcwrappednativejsops.cpp:1583
77 	libmozjs.so 	js_Invoke 	js/src/jsinterp.cpp:1365
78 	libmozjs.so 	js_Interpret 	js/src/jsinterp.cpp:5132
79 	libmozjs.so 	js_Invoke 	js/src/jsinterp.cpp:1373
80 	libmozjs.so 	js_InternalInvoke 	js/src/jsinterp.cpp:1426
81 	libmozjs.so 	JS_CallFunctionValue 	js/src/jsapi.cpp:5187
82 	libgklayout.so 	nsJSContext::CallEventHandler 	dom/src/base/nsJSEnvironment.cpp:2011
83 	libgklayout.so 	nsJSEventListener::HandleEvent 	dom/src/events/nsJSEventListener.cpp:247
84 	libgklayout.so 	nsEventListenerManager::HandleEventSubType 	content/events/src/nsEventListenerManager.cpp:1101
85 	libgklayout.so 	nsEventListenerManager::HandleEvent 	content/events/src/nsEventListenerManager.cpp:1206
86 	libgklayout.so 	nsEventTargetChainItem::HandleEvent 	content/events/src/nsEventDispatcher.cpp:236
87 	libgklayout.so 	nsEventTargetChainItem::HandleEventTargetChain 	content/events/src/nsEventDispatcher.cpp:300
88 	libgklayout.so 	nsEventDispatcher::Dispatch 	content/events/src/nsEventDispatcher.cpp:514
89 	libgklayout.so 	PresShell::HandleDOMEventWithTarget 	layout/base/nsPresShell.cpp:6182
90 	libgklayout.so 	nsXULMenuCommandEvent::Run 	layout/xul/base/src/nsXULPopupManager.cpp:2074
91 	libxpcom_core.so 	nsThread::ProcessNextEvent 	xpcom/threads/nsThread.cpp:510
92 	libxpcom_core.so 	NS_ProcessNextEvent_P 	nsThreadUtils.cpp:227
93 	libwidget_gtk2.so 	nsBaseAppShell::Run 	widget/src/xpwidgets/nsBaseAppShell.cpp:170
94 	libtoolkitcomps.so 	nsAppStartup::Run 	toolkit/components/startup/src/nsAppStartup.cpp:193
95 	libxul.so 	XRE_main 	toolkit/xre/nsAppRunner.cpp:3298
96 	seamonkey-bin 	main 	suite/app/nsSuiteApp.cpp:103
97 	libc-2.9.so 	libc-2.9.so@0x16704
          Comment 1•16 years ago
           
         | 
      ||
Tony, FF and SM have no other top of stack crashes in the past month but yours. And nothing else in bugzilla
Status: UNCONFIRMED → NEW
Ever confirmed: true
| Reporter | ||
          Comment 2•16 years ago
           
         | 
      ||
(In reply to comment #1)
> Tony, FF and SM have no other top of stack crashes in the past month but yours.
> And nothing else in bugzilla
Hm, if I can't reproduce it and no-one else sees it, then...
Of course, the fewer crashes the better. FWIW, I'm on openSUSE 11.1, I install all available Online Updates (if any) at least once a day, and if I can help the devs track the source of the bug by checking the version of some SuSE Linux package, just say which one (and warn me by private mail in addition to the bugmail, if you want a quick reaction). Also FWIW, I have Gnome2 and KDE4 installed but my window manager of choice is the KDE3 version.
I'm conscious of the fact that the XUL file chooser (as opposed to the OS file chooser) is little used nowadays, and requires a nondefault setting in about:config (namely: ui.allow_platform_file_picker set to false), but from my POV it has the enormous advantage of including a checkbox to display hidden files & directories, while on my OS file chooser, well, hidden F&D remain hidden whatever I do.
Assignee: nobody → timeless
Status: NEW → ASSIGNED
        Attachment #379150 -
        Flags: superreview?(neil)
        Attachment #379150 -
        Flags: review?(neil)
          Comment 4•16 years ago
           
         | 
      ||
Comment on attachment 379150 [details] [diff] [review]
fix the problems
[Checkin: Comment 9 & 14]
>   NS_NewISupportsArray(getter_AddRefs(mFileList));
>+  if (!mFileList)
>+    return NS_ERROR_OUT_OF_MEMORY;
>+
>   NS_NewISupportsArray(getter_AddRefs(mDirList));
>+  if (!mDirList)
>+    return NS_ERROR_OUT_OF_MEMORY;
>+
>   NS_NewISupportsArray(getter_AddRefs(mFilteredFiles));
>+  if (!mFilteredFiles)
>+    return NS_ERROR_OUT_OF_MEMORY;
Ideally you would file a [good first bug] on converting these to nsCOMArray.
I really think we can assume that this QI will succeed... r+sr=me on the rest.
>     nsCOMPtr<nsIFile> theFile = do_QueryInterface(nextItem);
> 
>-    PRBool isDirectory;
>-    theFile->IsDirectory(&isDirectory);
>+    PRBool isDirectory = PR_FALSE;
>+    if (theFile) {
>+      theFile->IsDirectory(&isDirectory);
> 
>-    if (isDirectory) {
>-      PRBool isHidden;
>-      theFile->IsHidden(&isHidden);
>-      if (mShowHiddenFiles || !isHidden) {
>-        mDirList->AppendElement(theFile);
>+      if (isDirectory) {
>+        PRBool isHidden;
>+        theFile->IsHidden(&isHidden);
>+        if (mShowHiddenFiles || !isHidden) {
>+          mDirList->AppendElement(theFile);
>+        }
>       }
>-    }
>-    else {
>-      mFileList->AppendElement(theFile);
>+      else {
>+        mFileList->AppendElement(theFile);
>+      }
        Attachment #379150 -
        Flags: superreview?(neil)
        Attachment #379150 -
        Flags: superreview+
        Attachment #379150 -
        Flags: review?(neil)
        Attachment #379150 -
        Flags: review+
oddly, qi's can fail when people do interesting things.
i don't really want to spend time updating patches. if the person pushing removes the line, i won't object, but i will nag them when someone crashes there later :)
Keywords: checkin-needed
          Comment 6•16 years ago
           
         | 
      ||
(In reply to comment #5)
Neil, is it fine to check in this patch as is, or do you want something to be modified?
          Comment 7•16 years ago
           
         | 
      ||
Ugh, I guess someone can implement a broken filepicker that passes a broken object to the file view that returns a broken enumerator...
          Comment 8•16 years ago
           
         | 
      ||
Comment on attachment 379150 [details] [diff] [review]
fix the problems
[Checkin: Comment 9 & 14]
Comment 2 seems to say this is npotDb: looking for approval (to be safe) rather than for blocking.
        Attachment #379150 -
        Flags: approval1.9.1?
          Comment 9•16 years ago
           
         | 
      ||
Comment on attachment 379150 [details] [diff] [review]
fix the problems
[Checkin: Comment 9 & 14]
http://hg.mozilla.org/mozilla-central/rev/be8e8cae360f
        Attachment #379150 -
        Attachment description: fix the problems → fix the problems
[Checkin: Comment 9]
          Updated•16 years ago
           
         | 
      
          Updated•16 years ago
           
         | 
      
        Attachment #379150 -
        Flags: approval1.9.1? → approval1.9.1.1?
          Updated•16 years ago
           
         | 
      
        Attachment #379150 -
        Flags: approval1.9.1.1? → approval1.9.1.2?
          Comment 10•16 years ago
           
         | 
      ||
Comment on attachment 379150 [details] [diff] [review]
fix the problems
[Checkin: Comment 9 & 14]
Serge: does anyone else use this code?
        Attachment #379150 -
        Flags: approval1.9.1.2? → approval1.9.1.3?
          Comment 11•16 years ago
           
         | 
      ||
I don't know more than what I wrote in comment 8.
Maybe Neil or someone else can answer your question?
          Comment 12•16 years ago
           
         | 
      ||
(In reply to comment #10)
> (From update of attachment 379150 [details] [diff] [review])
> Serge: does anyone else use this code?
As far as I know this code is only used by the XUL file chooser which is not enabled by default (although there is a pref to enable it on Linux).
          Updated•16 years ago
           
         | 
      
        Attachment #379150 -
        Flags: approval1.9.1.3? → approval1.9.1.4+
          Comment 13•16 years ago
           
         | 
      ||
Comment on attachment 379150 [details] [diff] [review]
fix the problems
[Checkin: Comment 9 & 14]
Approved for 1.9.1.4, a=dveditz for release-drivers
          Updated•16 years ago
           
         | 
      
Keywords: checkin-needed
Whiteboard: [c-n: m-1.9.1]
          Comment 14•16 years ago
           
         | 
      ||
Comment on attachment 379150 [details] [diff] [review]
fix the problems
[Checkin: Comment 9 & 14]
http://hg.mozilla.org/releases/mozilla-1.9.1/rev/99dc73270940
        Attachment #379150 -
        Attachment description: fix the problems
[Checkin: Comment 9] → fix the problems
[Checkin: Comment 9 & 14]
          Updated•16 years ago
           
         | 
      
          status1.9.1:
          --- → .4-fixed
Keywords: checkin-needed
Whiteboard: [c-n: m-1.9.1]
Target Milestone: --- → seamonkey2.0b2
          Updated•14 years ago
           
         | 
      
Crash Signature: [@ nsFileView::SetDirectory(nsIFile*)]
          You need to log in
          before you can comment on or make changes to this bug.
        
Description
•