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)

x86
Linux
defect
Not set
critical

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)

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
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
(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 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
(In reply to comment #5) Neil, is it fine to check in this patch as is, or do you want something to be modified?
Ugh, I guess someone can implement a broken filepicker that passes a broken object to the file view that returns a broken enumerator...
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?
Attachment #379150 - Attachment description: fix the problems → fix the problems [Checkin: Comment 9]
Status: ASSIGNED → RESOLVED
Closed: 16 years ago
Keywords: checkin-needed
Resolution: --- → FIXED
Attachment #379150 - Flags: approval1.9.1? → approval1.9.1.1?
Attachment #379150 - Flags: approval1.9.1.1? → approval1.9.1.2?
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?
I don't know more than what I wrote in comment 8. Maybe Neil or someone else can answer your question?
(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).
Attachment #379150 - Flags: approval1.9.1.3? → approval1.9.1.4+
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
Keywords: checkin-needed
Whiteboard: [c-n: m-1.9.1]
Attachment #379150 - Attachment description: fix the problems [Checkin: Comment 9] → fix the problems [Checkin: Comment 9 & 14]
Keywords: checkin-needed
Whiteboard: [c-n: m-1.9.1]
Target Milestone: --- → seamonkey2.0b2
Crash Signature: [@ nsFileView::SetDirectory(nsIFile*)]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Creator:
Created:
Updated:
Size: