Closed Bug 409179 Opened 17 years ago Closed 17 years ago

Inconsistent autoresume state causes download manager instantiation to fail (can lead to crash)

Categories

(Toolkit :: Downloads API, defect, P2)

defect

Tracking

()

RESOLVED FIXED
mozilla1.9beta4

People

(Reporter: Roberthollar1990, Assigned: sdwilsh)

References

Details

(Keywords: crash)

Attachments

(4 files)

User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2 Build Identifier: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.9b2) Gecko/2007121120 Firefox/3.0b2 Every time I try to download something Firefox jest crashes I've reinstalled it twice now nothing works. It happened after i switched around the download locations in the options pannel. Reproducible: Always Steps to Reproduce: 1.Change download location a few times 2.Click on any download 3.Watch as Firefox dies 4.Open Explorer and download with it Actual Results: you get the file with Explorer and not Firefox and Firefox dies Expected Results: downloaded the file <- I hope No add-ons not themes I'm using Xp pro sp2 Intel Core 2 Duo Nvidia 8800Gts
Do you submit crash data with breakpad after your crash? "1.Change download location a few times" - This is in Tools, Options, Main, Downloads? "2.Click on any download" - Any download from what site?
Version: unspecified → Trunk
Severity: major → critical
Keywords: crash
any site and yes in the tools options main and downloads ill screen capture a vid if you want
Did you submit crash data with breakpad after your crash?
Without a crash report, this is going to be hard to fix. I'm not reproducing it...
Keywords: regression
Keywords: regressionqawanted
BuildID: 2007121120 CrashTime: 1198195497 Email: InstallTime: 1198151926 Name: ProductName: Firefox SecondsSinceLastCrash: 41867 URL: http://www.fpsbanana.com/skins/download/34780 UserID: 813e6f97-9c9b-445c-8c49-673fc769c5c2 Vendor: Mozilla Version: 3.0b2 This report also contains information about the state of the application when it crashed.
it happens on any download form any website
(In reply to comment #5) > BuildID: 2007121120 > CrashTime: 1198195497 > Email: > InstallTime: 1198151926 > Name: > ProductName: Firefox > SecondsSinceLastCrash: 41867 > URL: http://www.fpsbanana.com/skins/download/34780 > UserID: 813e6f97-9c9b-445c-8c49-673fc769c5c2 > Vendor: Mozilla > Version: 3.0b2 Can you please include the actual incident ID? http://kb.mozillazine.org/Breakpad tells you how to give us the URL that's included in the crash report pertinent to this bug; thanks!
Signature nsDownloadProxy::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, unsigned int) UUID 3dec5d05-aa35-11dc-951d-001a4bd46e84 Time 2007-12-14 03:10:36-08:00 Build ID 2007110904 OS Windows NT OS Version 5.1.2600 Service Pack 2 CPU x86 CPU Info GenuineIntel family 6 model 15 stepping 6 Crash Reason EXCEPTION_ACCESS_VIOLATION Crash Address 0x0 Frame Signature Source 0 nsDownloadProxy::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, unsigned int) mozilla/toolkit/components/downloads/src/nsDownloadProxy.h:118 1 nsExternalAppHandler::CreateProgressListener() mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp:1833 2 nsExternalAppHandler::LaunchWithApplication(nsIFile*, int) mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp:2158 3 NS_InvokeByIndex_P mozilla/xpcom/reflect/xptcall/src/md/win32/xptcinvoke.cpp:101 4 AutoJSSuspendRequest::SuspendRequest() mozilla/js/src/xpconnect/src/xpcprivate.h:3363 5 XPCCallContext::XPCCallContext(XPCContext::LangType, JSContext*, JSObject*, JSObject*, long, unsigned int, long*, long*) mozilla/js/src/xpconnect/src/xpccallcontext.cpp:160
Summary: Firefox Crashes → Firefox Crashes [@ nsDownloadProxy::OnStateChange]
So, mInner is null, but I don't see how that's possible, unless nsDownloadManager::AddDownload is returning NS_OK *and* passing out nsnull as the nsIDownload object...
I can reproduce this crash in one of my profiles. Some downloads crash and other downloads simply never start. The download manager is empty. Sample crash: bp-5403a826-b15c-11dc-9f60-001a4bd46e84 I isolated the problem to downloads.sqlite. Comparing the database schema with one from a freshly created downloads.sqlite I found that the problematic file had one additional column (iconURL TEXT) and was missing one column (referrer TEXT). Adding a 'referrer' column of type TEXT (using sqlite3Explorer) to the problematic file made the crash go away. This particular trunk install was directly updated from 2007110405 to 2007122205.
That's, um, neat... Would you by chance happen to have that downloads.sqlite file still (unmodified)?
yah but this happens for me on all downloads no matter what it is quick time movies(sometimes), mods, games, pictures, ect...
(In reply to comment #14) > yah but this happens for me on all downloads no matter what it is quick time > movies(sometimes), mods, games, pictures, ect... Can you please attach your downloads.sqlite file? That will probably be the easiest way to determine what's up with this.
On OS X there is no crash but nothing happens after hitting the save button inside the save as dialog. I get an error: Can't convert to String. If such things happen and we cannot update to the new schema shouldn't we recreate the table? Is there a way to check this? It will also apply to all other sqlite databases. Confirming bug due to existence of crash report.
Status: UNCONFIRMED → NEW
Ever confirmed: true
My crashes occurred while downloading several files from SourceForge.net. The first crash followed something in the order of 10 downloads, and the second occurred after ~8 downloads. All downloads were saved into same directory. Can't reproduce specifics at this time, but will continue to attempt to find a reproducible sequence that will cause the crash.
Seeing this more - this should block.
Flags: blocking-firefox3?
Keywords: qawanted
Priority: -- → P1
Target Milestone: --- → Firefox 3 beta4
Was experiencing this bug in OS X (10.5). Moved my /Users/<username>/Library/Application\ Support/Firefox somewhere else (after seeing mention of the version different with the sqlite file) and it fixed it. Downloads now complete and I can see the download manager window. Not sure if that helps, just thought I'd mentioned it.
Flags: blocking-firefox3? → blocking-firefox3+
Shawn, when I replace my own downloads.sqlite file with the attached one the download manager code goes crazy. When it is initialized after some seconds on start of Firefox I get following error: Error: uncaught exception: [Exception... "Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)" location: "JS frame :: chrome://browser/content/browser.js :: anonymous :: line 988" data: no] This is here: http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/browser/base/content/browser.js&rev=1.965&mark=1073-1079&#1068 Even when I try to open the Download Manager window nothing happens and I get a similar error: Error: uncaught exception: [Exception... "Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)" location: "JS frame :: file:///Users/henrik/Projects/mozilla/bin/Minefield.app/Contents/MacOS/components/nsDownloadManagerUI.js :: show :: line 80" data: no] http://bonsai.mozilla.org/cvsblame.cgi?file=/mozilla/toolkit/components/downloads/src/nsDownloadManagerUI.js&rev=1.6&mark=78-81&#61 No idea if this is related to this bug or if I should file a new one.
I haven't had time to investigate this, but I'm imagining this bug lies with mozStorage or the download manager. I hope to investigate it this weekend or later next week.
Assignee: nobody → sdwilsh
Whiteboard: [needs patch]
Priority: P1 → P2
So, I made a test case for this and everything, but it's totally WFM: Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9b4pre) Gecko/2008021820 Minefield/3.0b4pre What does it *not* work on? Maybe this was fixed with bug 416205?
I'm seeing downloads.sqlite.corrupt files in my profile now, so I suspect that is the case. Can anyone else confirm this?
Keywords: qawanted
Whiteboard: [needs patch] → [fixed?]
Here is a downloads.sqlite file that exhibits behavior close to what this bug has morphed into...doesn't seem to match what the original filer has said though. On first opening firefox I see : Error: uncaught exception: [Exception... "Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)" location: "JS frame :: chrome://browser/content/browser.js :: anonymous :: line 917" data: no] When trying to open the download manager I get: Error: uncaught exception: [Exception... "Component returned failure code: 0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE) [nsIJSCID.getService]" nsresult: "0x80570016 (NS_ERROR_XPC_GS_RETURNED_FAILURE)" location: "JS frame :: file:///C:/Program%20Files/Minefield/components/nsDownloadManagerUI.js :: show :: line 80" data: no] When attempting to download any file I get: Error: uncaught exception: unknown (can't convert to string) I am seeing this on a completely new profile that has only had this downloads.sqlite file placed in it. Mozilla/5.0 (Windows; U; Windows NT 6.0; en-US; rv:1.9b4pre) Gecko/2008021904 Minefield/3.0b4pre
Sorry forgot to mention this in my earlier comment: I do not see any downloads.sqlite.corrupt files in my profile. Also when you try to open a file in its associated application when using this downloads.sqlite file firefox crashes. Here is an example breakpad report from this crash: http://crash-stats.mozilla.com/report/index/b8df645c-de44-11dc-acca-001a4bd43e5c?date=2008-02-18-17
Attached patch v1.0Splinter Review
So much for studying for my midterm... OK, so in that database it's the download with the id of 152. The issue is that the download is in the state of DOWNLOAD_FINISHED, but autoResume is set to AUTO_RESUME. Therefore, our query in RestoreActiveDownloads try's to restore it, which will fail (I'm not sure how, since my failure on mac is different than what you'd get). I'm not sure how this worked right before in the first place... I've submitted this to the try-server to post builds. We'll see if this fixes the issue for others. I'll post the link to the builds once one is out.
Attachment #304392 - Flags: review?(edilee)
Keywords: qawanted
Whiteboard: [fixed?] → [has patch][needs review Mardak]
(In reply to comment #28) > builds are here. If folks could test, that'd be awesome. > https://build.mozilla.org/tryserver-builds/2008-02-19_19:57-swilsher@mozilla.com-409179/ A) Before, *I could reproduce the un-openable Download Manager window* when using the downloads.sqlite file from comment 13 with the trunk Windows XP/Vista builds B) Now, though, with https://build.mozilla.org/tryserver-builds/2008-02-19_19:57-swilsher@mozilla.com-409179/swilsher@mozilla.com-409179-firefox-try-win32.installer.exe, I *can* open the window and don't see errors in the Error Console.
Verified also by myself. This patch works great. While I was able to reproduce the crash with the 2nd test case while trying to download and open a zip file, I don't see it anymore with your tryserver build. What makes me wonder is, that such inconsistent states could produce crashes that way.
Status: NEW → ASSIGNED
Flags: in-testsuite?
It crashed because the download manager service could not be instantiated, so mInner in nsDownloadProxy was null. I'm pretty sure there's a bug on nsITransfer->Init failing for exthandler that would also fix this.
Morphing bug. The crashing bits are over in bug 394247. Edward - we need to figure out how this got into the state it got into and fix that as well. I don't quite like the existing code since it will hide any future problems we may introduce. I'm also wondering if it's just a beta 2 bug that we since fixed, or what...
Blocks: 394247
Summary: Firefox Crashes [@ nsDownloadProxy::OnStateChange] → Inconsistent autoresume state causes download manager instantiation to fail (can lead to crash)
I run trunk builds so if the bug that caused that is in beta 2 it is also in trunk. (My build that would have caused that would be a day or two behind the date of the download).
Comment on attachment 304392 [details] [diff] [review] v1.0 >+ // Make sure we do not automatically resume >+ mAutoResume = DONT_RESUME; Odd.. the only place we set AUTO_RESUME is PauseAllDownloads and RestoreActiveDownloads. The latter only changes things at startup and is a single query, so that probably won't have some race condition. PauseAllDownloads could potentially have issues.. maybe with the virus scanner and the user quits? That would look like.. 1) start virus scan 2) quit app 2) pause downloads setting autoresume 2) update db to have autoresume 1) scan done setstate to completed 1) db already has autoresume set and only changes to FINISHED So setting DONT_RESUME in Finalize should fix that case. r=Mardak (Don't forget to add the sqlite file on checkin)
Attachment #304392 - Flags: review?(edilee) → review+
(In reply to comment #35) > 1) start virus scan > 2) quit app > 2) pause downloads setting autoresume > 2) update db to have autoresume > 1) scan done setstate to completed > 1) db already has autoresume set and only changes to FINISHED That's what I was thinking maybe. Did anyone on mac see this bug (naturally, not by using this downloads.sqlite file)?
Whiteboard: [has patch][needs review Mardak] → [has patch][has review]
Whiteboard: [has patch][has review] → [has patch][has review][can land]
(In reply to comment #36) > That's what I was thinking maybe. Did anyone on mac see this bug (naturally, > not by using this downloads.sqlite file)? I wasn't even able to reproduce the bug with the attached downloads.sqlite all the last time. But now I'm also able to crash Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10.4; en-US; rv:1.9b4pre) Gecko/2008022004 Minefield/3.0b4pre ID:2008022004 Do you mean that we should test it with the above steps mentioned in comment 35?
OS: Windows XP → All
Hardware: PC → All
Yeah, I'd expect comment 35 to always cause this, which means this particular case should *not* happen on anything but windows.
Ok, I'll try to run a test within the next days. Perhaps I'll find some time during FOSDEM. Meanwhile the missing breakpad id: bp-65575211-e004-11dc-8068-001a4bd43ef6 Comment 35 states "> 1) start virus scan". What should be scanned? An already downloaded file?
Signature nsDownloadProxy::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, unsigned int) UUID 65575211-e004-11dc-8068-001a4bd43ef6 Time 2008-02-20 14:36:52-08:00 Uptime 0 Product Firefox Version 3.0b4pre Build ID 2008022004 OS Mac OS X OS Version 10.4.11 8S2167 CPU x86 CPU Info GenuineIntel family 6 model 15 stepping 6 Crash Reason EXC_BAD_ACCESS / KERN_PROTECTION_FAILURE Crash Address 0x1960ee7 Comments Testing testcase on bug 409179. Crashing Thread Frame Signature Source 0 nsDownloadProxy::OnStateChange(nsIWebProgress*, nsIRequest*, unsigned int, unsigned int) mozilla/gfx/cairo/cairo/src/cairo-hull.c:116 1 nsExternalAppHandler::CreateProgressListener() mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp:1862 2 nsExternalAppHandler::LaunchWithApplication(nsIFile*, int) mozilla/uriloader/exthandler/nsExternalHelperAppService.cpp:2191 3 NS_InvokeByIndex_P mozilla/xpcom/reflect/xptcall/src/md/unix/xptcinvoke_unixish_x86.cpp:179 4 XPCWrappedNative::CallMethod(XPCCallContext&, XPCWrappedNative::CallMode) mozilla/js/src/xpconnect/src/xpcwrappednative.cpp:2339 anyone know why the source file is wrong?
Timeless, no idea. But we should move this to a new bug if Ted says yes.
timeless: that's bug 393317 (also filed upstream, but not getting any traction on it)
also note that this code lives in a .h file, which I imagine may cause part of the issue?
Shawn, could you also give a short note to my comment 37?
(In reply to comment #37) > I wasn't even able to reproduce the bug with the attached downloads.sqlite all > the last time. But now I'm also able to crash Mozilla/5.0 (Macintosh; U; Intel > Mac OS X 10.4; en-US; rv:1.9b4pre) Gecko/2008022004 Minefield/3.0b4pre > ID:2008022004 So, do you mean that in past nightlies you couldn't crash, but in the tryserver build you did? Or did the nightlies suddenly start making you crash with it? > Do you mean that we should test it with the above steps mentioned in comment > 35? Yes, but on the mac it's not going to happen. I strongly suspect that this bug would only show itself on windows.
(In reply to comment #45) > So, do you mean that in past nightlies you couldn't crash, but in the tryserver > build you did? Or did the nightlies suddenly start making you crash with it? Oh sorry for the bad wording. The official nightly builds crash. I haven't tested the patch on OS X right now. > Yes, but on the mac it's not going to happen. I strongly suspect that this bug > would only show itself on windows. Mmh, one question remains... which files I have to scan before quitting Minefield?
(In reply to comment #46) > Mmh, one question remains... which files I have to scan before quitting > Minefield? The download manager automatically starts a virus scan (with supporting virus scanners) when a download completes. If you quit before that finishes, we (being Edward and I) suspect you'll hit this bug.
(In reply to comment #47) > The download manager automatically starts a virus scan (with supporting virus > scanners) when a download completes. If you quit before that finishes, we > (being Edward and I) suspect you'll hit this bug. Do you have a list of supported virus scanners? It seems that Norton Symantec Antivirus isn't on that list. :/ I would try to test it with another one but have to know which are supported. Also the best testcase would be to download a large file. And why it would not appear under OS X? Are no virus scanners supported?
(In reply to comment #48) > Do you have a list of supported virus scanners? It seems that Norton Symantec > Antivirus isn't on that list. :/ I would try to test it with another one but > have to know which are supported. Also the best testcase would be to download a > large file. And why it would not appear under OS X? Are no virus scanners > supported? AVG implements the required interface I think. It doesn't work on OS X because we use a windows API.
I'm resolving this for now - I strongly suspect that the issue is fixed. Checking in toolkit/components/downloads/src/nsDownloadManager.cpp; new revision: 1.166; previous revision: 1.165 Checking in toolkit/components/downloads/test/unit/test_bug_409179.js; initial revision: 1.1 Checking in toolkit/components/downloads/test/unit/bug_409179_downloads.sqlite; initial revision: 1.1
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Flags: in-testsuite?
Flags: in-testsuite+
Flags: in-litmus-
Resolution: --- → FIXED
Whiteboard: [has patch][has review][can land]
(In reply to comment #49) > AVG implements the required interface I think. It doesn't work on OS X because > we use a windows API. I'll have a look at this within the next days. I installed Bitdefender under my newly Windows Vista Test VM and the scanner is called after the download has finished downloading.
Product: Firefox → Toolkit
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: