Closed
Bug 387830
Opened 18 years ago
Closed 18 years ago
shutdown after IE import can take a long time due to mozStorageService::FlushAsyncIO() / nsUrlClassifierDBService::Shutdown()
Categories
(Toolkit :: Safe Browsing, defect, P5)
Tracking
()
VERIFIED
FIXED
Firefox 3 beta3
People
(Reporter: moco, Unassigned)
References
Details
(Keywords: perf, regression, relnote)
shutdown after IE import can take a long time due to mozStorageService::FlushAsyncIO() / nsUrlClassifierDBService::Shutdown()
to reproduce:
1) create a new profile
2) File | Import from IE
3) exit
4) firefox.exe will take a long time to shutdown
(if you try to start up another instance during shutdown, you'll see this alert:
https://bugzilla.mozilla.org/attachment.cgi?id=270798
We appear to be in
nsUrlClassifierDBServiceWorker::CloseDb() which calls
mozStorageService::FlushAsyncIO()
Here are the stack traces for three of my threads:
ntdll.dll!7c90eb94()
[Frames below may be incorrect and/or missing, no symbols loaded for
ntdll.dll]
ntdll.dll!7c90e9c0()
kernel32.dll!7c8025cb()
msvcr80d.dll!malloc(unsigned int nSize=848) Line 152 + 0x15 bytes
C++
kernel32.dll!7c802532()
nspr4.dll!_PR_MD_WAIT_CV(_MDCVar * cv=0x05f5f65c, _MDLock *
lock=0x05e27344, unsigned int timeout=4294967295) Line 280 + 0x14 bytes C
nspr4.dll!_PR_WaitCondVar(PRThread * thread=0x05c15100, PRCondVar *
cvar=0x05f5f5e8, PRLock * lock=0x05e27328, unsigned int timeout=4294967295)
Line 204 + 0x17 bytes C
nspr4.dll!PR_WaitCondVar(PRCondVar * cvar=0x05f5f5e8, unsigned int
timeout=4294967295) Line 551 + 0x17 bytes C
strgcmps.dll!mozStorageService::FlushAsyncIO() Line 581 + 0xc bytes
C++
strgcmps.dll!mozStorageConnection::~mozStorageConnection() Line 91
C++
strgcmps.dll!mozStorageConnection::`scalar deleting destructor'() +
0xf bytes C++
strgcmps.dll!mozStorageConnection::Release() Line 68 + 0xce bytes
C++
tkitcmps.dll!nsUrlClassifierDBServiceWorker::CloseDb() Line 513 + 0x14
bytes C++
xpcom_core.dll!NS_InvokeByIndex_P(nsISupports * that=0x00000009,
unsigned int methodIndex=0, unsigned int paramCount=0, nsXPTCVariant *
params=0x06a2ff04) Line 102 C++
xpcom_core.dll!nsProxyObjectCallInfo::Run() Line 181 + 0x2d bytes
C++
xpcom_core.dll!nsProxyObjectCallInfo::Run() Line 181 + 0x2d bytes
C++
xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=1, int *
result=0x06a2ff1c) Line 491 C++
xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x05c14b78, int
mayWait=1) Line 227 + 0x16 bytes C++
xpcom_core.dll!nsThread::ThreadFunc(void * arg=0x05c14b78) Line 254 +
0xb bytes C++
nspr4.dll!_PR_NativeRunThread(void * arg=0x05c15100) Line 436 + 0xf
bytes C
nspr4.dll!pr_root(void * arg=0x05c15100) Line 122 + 0xf bytes C
msvcr80d.dll!_callthreadstartex() Line 348 + 0xf bytes C
msvcr80d.dll!_threadstartex(void * ptd=0x05c15aa0) Line 331 C
kernel32.dll!7c80b683()
ntdll.dll!7c90eb94()
[Frames below may be incorrect and/or missing, no symbols loaded for
ntdll.dll]
user32.dll!7e4193e9()
user32.dll!7e4193a8()
user32.dll!7e419402()
gkwidget.dll!PeekKeyAndIMEMessage(tagMSG * msg=0x0012f8c8, HWND__ *
hwnd=0x00000000) Line 53 + 0x18 bytes C++
gkwidget.dll!nsAppShell::ProcessNextNativeEvent(int mayWait=0) Line
142 + 0xb bytes C++
gkwidget.dll!nsBaseAppShell::DoProcessNextNativeEvent(int mayWait=0)
Line 137 + 0x11 bytes C++
gkwidget.dll!nsBaseAppShell::OnProcessNextEvent(nsIThreadInternal *
thr=0x00b9dc38, int mayWait=1, unsigned int recursionDepth=0) Line 225 + 0xd
bytes C++
xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=1, int *
result=0x0012f988) Line 480 C++
xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00b9dc38, int
mayWait=1) Line 227 + 0x16 bytes C++
xpcom_core.dll!nsThread::Shutdown() Line 445 + 0xb bytes C++
tkitcmps.dll!nsUrlClassifierDBService::Shutdown() Line 1030 C++
tkitcmps.dll!nsUrlClassifierDBService::Observe(nsISupports *
aSubject=0x0490c858, const char * aTopic=0x10036698, const unsigned short *
aData=0x10036d30) Line 1000 C++
xpcom_core.dll!nsObserverList::NotifyObservers(nsISupports *
aSubject=0x0490c858, const char * aTopic=0x10036698, const unsigned short *
someData=0x10036d30) Line 129 C++
xpcom_core.dll!nsObserverService::NotifyObservers(nsISupports *
aSubject=0x0490c858, const char * aTopic=0x10036698, const unsigned short *
someData=0x10036d30) Line 184 C++
xul.dll!nsXREDirProvider::DoShutdown() Line 766 C++
xul.dll!ScopedXPCOMStartup::~ScopedXPCOMStartup() Line 819 C++
xul.dll!XRE_main(int argc=2, char * * argv=0x00b99850, const
nsXREAppData * aAppData=0x00b9aaa0) Line 3003 C++
firefox.exe!main(int argc=2, char * * argv=0x00b99850) Line 87 + 0x12
bytes C++
firefox.exe!__tmainCRTStartup() Line 586 + 0x19 bytes C
firefox.exe!mainCRTStartup() Line 403 C
kernel32.dll!7c816fd7()
ntdll.dll!7c90eb94()
[Frames below may be incorrect and/or missing, no symbols loaded for
ntdll.dll]
ntdll.dll!7c90d9d6()
kernel32.dll!7c81268b()
strgcmps.dll!winSync(OsFile * id=0x00d8b1a8, int dataOnly=0) Line
16081 + 0xd bytes C
> strgcmps.dll!ProcessOneMessage(AsyncMessage * aMessage=0x0602f4b8) Line 1401 + 0x11 bytes C++
strgcmps.dll!ProcessAsyncMessages() Line 1534 + 0x9 bytes C++
strgcmps.dll!AsyncWriteThread::Run() Line 475 C++
xpcom_core.dll!nsThread::ProcessNextEvent(int mayWait=1, int *
result=0x041aff1c) Line 491 C++
xpcom_core.dll!NS_ProcessNextEvent_P(nsIThread * thread=0x00ee5878, int
mayWait=1) Line 227 + 0x16 bytes C++
xpcom_core.dll!nsThread::ThreadFunc(void * arg=0x00ee5878) Line 254 +
0xb bytes C++
nspr4.dll!_PR_NativeRunThread(void * arg=0x03d756c8) Line 436 + 0xf
bytes C
nspr4.dll!pr_root(void * arg=0x03d756c8) Line 122 + 0xf bytes C
msvcr80d.dll!_callthreadstartex() Line 348 + 0xf bytes C
msvcr80d.dll!_threadstartex(void * ptd=0x03d14a00) Line 331 C
kernel32.dll!7c80b683()
Flags: blocking-firefox3?
Comment 1•18 years ago
|
||
A lot of this is changing in bug 387196. A random guess is a big rollback is happening because of a canceled download, which should be less likely to happen with the new protocol (it downloads smaller chunks).
Updated•18 years ago
|
Keywords: perf,
regression
Comment 2•18 years ago
|
||
eh, might not be safe browsing - it could just be the unlucky one here. I'm assuming the import code adds a bunch of bookmarks? Please tell me that that is wrapped in a transaction (if it isn't, I bet that's our problem)
Comment 3•18 years ago
|
||
Seth, I believe this is affecting Migration as well.. It took well over 3 minutes for the browser to start after migration from IE "Finish" was clicked. During the wait, firefox.exe is taking 99% of CPU.
Should it be a separate bug?
Comment 4•18 years ago
|
||
ispiked mentioned in irc that what I'm seeing with slowness in Migration and Import is a bd issue and likely the same thing.
don't need another bug... and bug 387137 covers the lost bookmarks which I failed to mention previously
Updated•18 years ago
|
Flags: blocking-firefox3? → blocking-firefox3+
Updated•18 years ago
|
Target Milestone: --- → Firefox 3 M8
Updated•18 years ago
|
Target Milestone: Firefox 3 M8 → Firefox 3 M9
Reporter | ||
Comment 5•18 years ago
|
||
> Please tell me that that is wrapped in a transaction (if it isn't, I bet
> that's our problem)
shawn, it is not, and I think you are right. see bug #392003.
With the patch in that bug, this is not an issue on shutdown after ie import,
as I'm using a transaction (via RunInBatchMode)
> Should it be a separate bug?
twalker, see bug #392003.
Reporter | ||
Comment 6•18 years ago
|
||
twalker and others: with the fix for bug #392003, the steps in comment #0 are no longer cause the original problem, but that doesn't mean the underlying issue is fixed.
Comment 7•18 years ago
|
||
What is the underlying issue? Something in mozStorage or something?
I think I still suffer from this occasionally (although it's not that bad as it was, originally).
Firefox->Phishing Protection doesn't seem like the correct component for this, is it?
Updated•18 years ago
|
Target Milestone: Firefox 3 M10 → Firefox 3 M11
Comment 8•18 years ago
|
||
Seth, I think we should file a clean bug on the underlying issue and resolve this.
Priority: -- → P5
Target Milestone: Firefox 3 M11 → Firefox 3 Mx
Comment 9•18 years ago
|
||
Fixed as reported, please file bugs on any deeper issues
Status: NEW → RESOLVED
Closed: 18 years ago
Resolution: --- → FIXED
Comment 10•18 years ago
|
||
Seth, can you file a bug on the underlying issue and mark it blocking-firefox3?
I think I still suffer from this occasionally, although the shutdown doesn't take normally longer than 10s or so, but I still think that's unacceptable.
Updated•18 years ago
|
Target Milestone: Firefox 3 Mx → Firefox 3 M11
Comment 11•17 years ago
|
||
Was there ever a bug filed for the underlying issue? If so, I can close this bug down as verified. Doesn't show up in RC2.
Comment 12•17 years ago
|
||
AsyncIO was remove from storage, which probably took care of this. I think that was the underlying issue?
Assignee | ||
Updated•11 years ago
|
Product: Firefox → Toolkit
You need to log in
before you can comment on or make changes to this bug.
Description
•