Closed
Bug 157627
Opened 22 years ago
Closed 22 years ago
'registry.dat' grows by 45KB! on _every_ start of win32/commercial/branch
Categories
(Core Graveyard :: Profile: BackEnd, defect, P1)
Tracking
(Not tracked)
VERIFIED
FIXED
mozilla1.0.1
People
(Reporter: jrgmorrison, Assigned: serhunt)
References
Details
(Whiteboard: [ADT1 RTM] [PL2:NA] [ETA 07/23])
Attachments
(2 files, 1 obsolete file)
(deleted),
patch
|
serhunt
:
review+
dveditz
:
superreview+
asa
:
approval+
|
Details | Diff | Splinter Review |
(deleted),
image/gif
|
Details |
Steps to reproduce:
1) Install current branch build
2) Shut down mozilla.
3) Delete (or rename) the '...\Application Data\Mozilla' directory
4) Start mozilla. Note size of '...\Application Data\Mozilla\registry.dat'
5) Repeat step 4.
6) Repeat step 4.
...
Actual results: 'registry.dat' grows by 45KB on each start of browser
Expected results: 'registry.dat' should not need to grow in size, if
nothing in environment has changed. (And if it did
need to grow, obviously 45KB is way too much
Reproducible 100% in current 07/15 branch build on win2k. (Haven't checked
other platforms, or trunk, yet).
Not entirely sure who owns this, so spreading the love among dveditz, dougt,
ccarlen. Reassign as appropriate.
Comment 1•22 years ago
|
||
Are you seeing bug 109739?
Comment 2•22 years ago
|
||
*** This bug has been marked as a duplicate of 109739 ***
Status: NEW → RESOLVED
Closed: 22 years ago
Resolution: --- → DUPLICATE
Reporter | ||
Comment 3•22 years ago
|
||
This is essentially the same problem as bug 109739, but there is
a particular aspect to this bug report that makes it something that
we can't just shrug our (Netscape) shoulders and say "well, end users
won't see this".
The 'registry.dat' file grows...:
Mozilla Netscape
-----------------------------------------------------------------
1.1 07/15 trunk When a different When a different
binary is started binary is started
-----------------------------------------------------------------
1.0 07/15 branch When a different EVERY time the same
binary is started build is started
This should really move to a bugscape bug for the commercial build.
Hopefully we can find the cause of this happening only in the commercial
build, and get that build to only add to registry.dat when a different
build is started.
[I'll note that the large file size doesn't appear to add to startup time, at
least on win2k with a SCSI drive. (I'm less optimistic about Mac performance
not being affected, although this bug still needs to be confirmed on Mac
and Linux for the commercial branch).]
Status: RESOLVED → REOPENED
Resolution: DUPLICATE → ---
Summary: 'registry.dat' grows by 45KB! on each start of mozilla.exe → 'registry.dat' grows by 45KB! on _every_ start of win32/commercial/branch
Reporter | ||
Comment 4•22 years ago
|
||
I opened http://bugscape.mcom.com/show_bug.cgi?id=17790 for the commercial only
bug.
Status: REOPENED → RESOLVED
Closed: 22 years ago → 22 years ago
Resolution: --- → INVALID
Summary: 'registry.dat' grows by 45KB! on _every_ start of win32/commercial/branch
Reporter | ||
Comment 5•22 years ago
|
||
...and put the summary back. Duh.
Status: RESOLVED → VERIFIED
Summary: 'registry.dat' grows by 45KB! on _every_ start of win32/commercial/branch
Comment 6•22 years ago
|
||
jrgm, I've heard reports at mozillazine that this is happening for people using
mozilla builds too.
Reporter | ||
Comment 7•22 years ago
|
||
Well, yeah. Bug 109739 covers it for the general case (i.e., someone who
downloads new mozilla builds on a regular basis will have registry.dat
grow huge over time). But that's (comparatively) not as bad as growing
every time the browser is started.
Or are you saying that someone can reproduce the above in a mozilla build.
If so, we can reopen this bug, but as far as as I can see, the every time
thing is only in commercial branch.
Comment 8•22 years ago
|
||
Mozilla builds happen on the branch, too -- why would it be a commercial-only
problem? Are you blaming activation? 109739 was plugins, and that's common code.
Comment 9•22 years ago
|
||
er, never mind. And I had just read your chart, too. D'oh!
Comment 10•22 years ago
|
||
I think we should reopen this bug.
http://www.mozillazine.org/talkback/read.php?f=2&i=2084&t=2084 reports it
growing with every launch.
Comment 11•22 years ago
|
||
Reopening per Asa, 'registry.dat' growing with every launch
Status: VERIFIED → REOPENED
Resolution: INVALID → ---
Comment 12•22 years ago
|
||
FYI, there is a long thread about this problem in netscape.netscape7.windows, a
NS7 user is reporting that he discovered he had a 68MB registry.dat file after a
few months using NS7PR1 !
Reporter | ||
Comment 13•22 years ago
|
||
To quote from the comment referenced by asa: "I have recently found out that
my registry.dat file get 30k larger each time I switch from running
mozilla.exe from the installed version to the debug version and vise-versa."
Okay, that is column one from my table above, and that is a duplicate of bug
109739, no? I'll note again that I opened bugscape bug 17790 to cover the
Netscape-specific aspect of this bug, which is that in the commercial build,
starting the _same_ build will write the registry.dat _every_ time (i.e.,
not just when switching builds).
But that 68MB number makes me feel ill :-(. It suggests that we must implement
Pack (or equivalent), but I'd hate to have to call that on every startup.
Assignee: ccarlen → peterlubczynski
Status: REOPENED → NEW
Comment 14•22 years ago
|
||
When running different versions of the browser, there could be a version
mis-match in the registry cache and cause the cache to invalidate. Because it
has no Pack() method, it grows out of control. :(
Updated•22 years ago
|
Assignee | ||
Comment 16•22 years ago
|
||
I think we can dup this to bug 109739, given that bug is being really taken care
of, which it seems to be as it got ADT1.
Assignee | ||
Comment 17•22 years ago
|
||
Can anybody please try today's Netscape build? I am using Mozilla/5.0 (Windows;
U; Windows NT 5.1; en-US; rv:1.1b) Gecko/20020719 Netscape/7.0b1+ and cannot
repro the problem any more.
I do have npcdt.dll in the Components folder, although it is not listed in the
about:plugins page for some reason.
Reporter | ||
Comment 18•22 years ago
|
||
Yes, I also think that this bug should be duped to bug 109739. (The Netscape
specific aspects are being dealt with in bugscape bug 17790).
av: I believe that user agent string is for a trunk commercial build. The
'every time you launch' aspect of this bug is specific to the _branch_
commercial build. Refer to the table in comment #3.
I can reproduce the comm. branch bug in today's builds on both a win98 and
a win2k machine.
Further comments in http://bugscape.mcom.com/show_bug.cgi?id=17790
Updated•22 years ago
|
Whiteboard: [PL2:NA] [ETA 07/22] [depends on bug 109139 which is ADT1 RTM] → [PL2:NA] [ETA 07/22] [depends on bug 109139 which is ADT1]
Comment 19•22 years ago
|
||
On a side note, setting NSPR_LOG_MODULES=all:8 and running with -console, I'm
surprised at how much a Netscape commercial build outputs. Does this add bloat
or reduce performance when not used?
I think this problem is caused by nsIModule-type "new" XPCOM plugins. npcdt.dll
is one of these kinds of plugins (can be verified with depends.exe) and only
ships with the Netscape commercial builds. Copying that DLL to my components
folder and somehow getting it to "register", I was able to reproduce the
problem in a Mozilla branch debug build. To verify a true XPCOM plugin is
registered, set a breakpoint in the middle of
|nsPluginHostImpl::LoadXPCOMPlugins|. Linux users may also be seeing this
regularly as I think JRE 1.4 is one of these 'components'.
First off let me say that I think there are *several* problems here. This patch
attempts of the fix the problem of the growing registry on each start on
Netscape commercial builds because of XPCOM style plugin/components (may help
Linux w/JRE 1.4 too). The (ApplicationRegistry) registry grows because we
detect plugins have changed each time we scan:
// count plugins remained in cache, if there are some, that means some
plugins were removed;
// while counting, we should ignore unwanted plugins which are also present
in cache
PRUint32 cachecount = 0;
for (nsPluginTag * cachetag = mCachedPlugins; cachetag; cachetag =
cachetag->mNext) {
if (!(cachetag->mFlags & NS_PLUGIN_FLAG_UNWANTED))
cachecount++;
}
// if there is something left in cache, some plugins got removed from the
directory
// and therefor their info did not get removed from the cache info list
during directory scan;
// flag this fact
if (cachecount > 0)
*aPluginsChanged = PR_TRUE;
}
When they change, we nuke the subtree and re-write the info. There is no Pack()
method so it grows endless. We think plugins have changed because we are not
marking or removing the cached plugin when it's a 'component' and loaded from
the ApplicationComponentRegistry. The flag is not set in the loop above and
cachecount is equal to my plugin/components. There may be several ways to fix
this specific problem and this patch takes one stab at it by simply removing
the cached tag for the XPCOM plugin. This list is cleaned up shortly thereafter
anyway post scanning. We probably should not cache these plugins twice anyway
in the registry but I thought just removing it may be least risky. Thoughts?
Reviews?
Reporter | ||
Comment 20•22 years ago
|
||
(Re: NSPR logging: A PR_LOG call, in an optimized build with FORCE_PR_LOG set,
but NSPR_LOG_MODULES not defined, adds three instructions (including a branch)
to the line of execution. So, that's pretty minimal, but I'll check if there
is a perceivable impact on startup or pageload (where it is called a lot) or
on bloat (although unless FORCE_PR_LOG is widespread, I doubt that this has
a major impact on code size). On the other hand, I think that having logging
available has in the past helped to diagnose end user problems "in the field").
Assignee | ||
Comment 21•22 years ago
|
||
Peter, although I still cannot see the problem with npcdt plugin, I see now that
this can happen. But instead of not caching XPCOM plugins why not just treat
them as unwanted in the code you cited above? Something along the following lines:
if (!*aPluginsChanged) {
// count plugins remained in cache, if there are some, that means...
// while counting, we should ignore unwanted plugins which are...
PRUint32 cachecount = 0;
for (nsPluginTag * cachetag = mCachedPlugins; cachetag; cachetag =
cachetag->mNext) {
if ((cachetag->mFlags & NS_PLUGIN_FLAG_UNWANTED) ||
!(cachetag->mFlags & NS_PLUGIN_FLAG_OLDSCHOOL))
continue;
cachecount++;
}
I think the reason I want XPCOM plugins still be in our cache is that if such a
plugin lives in the Plugins folder rather than in the Components folder we are
going to be screwed again because every time we will think it has just been
added. But given this patch is supposed to go to the branch only, I am fine with
yours.
Comment 22•22 years ago
|
||
Andrei,
You may need to delete components.reg and restart several times to get the CDT
plugin to get picked up when |LoadXPCOMPlugins| is called. Use the branch. Do
not have another copy of the CDT plugin/component in any plugins folder. You
may have to use regxpcom as last resort.
NS_PLUGIN_FLAG_OLDSCHOOL can not be used here because it is only valid after
mEntryPoint has been set which is typically in |GetPluginFactory|.
That's fine if we shouldn't remove the cache tag. We can just as well mark it
as "unwanted" to avoid cachecount++. This patch does that and it also stops the
appreg from growing on each startup. It still may grow at other times when
plugins have changed.
However, you do bring up a valid point if the same copy of the plugin is in
both a plugins folder and a components folder. Currently, |LoadXPCOMPlugin|
does not set |tag->mLastModifiedTime|, it is Zero. It may also cause us to
always think new plugins have been installed. This may be yet another bug.
Attachment #92131 -
Attachment is obsolete: true
Assignee | ||
Comment 23•22 years ago
|
||
Comment on attachment 92191 [details] [diff] [review]
patch v.2
I feel better, thanks, Peter, r=av
Attachment #92191 -
Flags: review+
Updated•22 years ago
|
Whiteboard: [PL2:NA] [ETA 07/22] [depends on bug 109139 which is ADT1] → [PL2:NA] [ETA 07/23] [depends on bug 109139 which is ADT1]
Assignee | ||
Comment 24•22 years ago
|
||
I was able to reproduce and test it eventually. The patch fixes things neatly.
The problem with the registry growth has even more impact than it was originally
thought (thanks jrgm for pointing this out): it grows on every about:plugins too
which essentially means on every javascript:navigator.plugins.refresh. The patch
fixes this too.
I think we must check it in as it solves the original problem and is simple and
safe. It will not interfere with more profound solution which dougt and serge
are working on in bug 109937.
Assignee | ||
Comment 25•22 years ago
|
||
Sorry, 'bug 109937' should read 'bug 109739'.
Comment 26•22 years ago
|
||
Comment on attachment 92191 [details] [diff] [review]
patch v.2
sr=dveditz
Attachment #92191 -
Flags: superreview+
Comment 27•22 years ago
|
||
Adding adt1.0.1+ on behalf of the adt. Please check into the Mozilla branch
after getting approval from drivers.
Keywords: adt1.0.1+,
mozilla1.0.1
Comment 28•22 years ago
|
||
Comment on attachment 92191 [details] [diff] [review]
patch v.2
a=asa (on behalf of drivers) for checkin to 1.1
Attachment #92191 -
Flags: approval+
Updated•22 years ago
|
Whiteboard: [PL2:NA] [ETA 07/23] [depends on bug 109139 which is ADT1] → [ADT1 RTM] [PL2:NA] [ETA 07/23]
Comment 29•22 years ago
|
||
a=chofmann for the branch. add the fixed1.0.1 keyword after checking in on the
branch.
Assignee | ||
Comment 30•22 years ago
|
||
Formally marking fixed as the patch is on the trunk now.
Status: NEW → RESOLVED
Closed: 22 years ago → 22 years ago
Resolution: --- → FIXED
Comment 31•22 years ago
|
||
marking as "mozilla1.0.1+" per Comment #29 From chris hofmann.
Keywords: mozilla1.0.1 → mozilla1.0.1+
Comment 33•22 years ago
|
||
fix looks great, the registry has stopped growing. verified on today's build
0723. made sure that I had the CDT plugin present.
Keywords: fixed1.0.1 → verified1.0.1
Comment 34•22 years ago
|
||
by ' the registry has stopped growing' , i meant, rigistry.dat does not increase
if I repeatedly launch the same branch build (0723).
Comment 36•22 years ago
|
||
I'm not really sure if this has been "Fixed" maybe it's due to other changes,
but I was one of the original multi-meg registry.dat file victims and just
recently I checked and yes it was wan't growing, but it also wasn't optimized
either.
I guess with parsing out the pluginreg.dat file the registry.dat and the
pluginreg.dat aren't cleaned out or something. Here's my example after already
having cleaned out my registry.dat file back in August or September and using
those build I had no problem with the file "growing", but here's what I found
yesterday
Steps to reproduce (at least on Windows Systems):
- have mozilla open or in Quick Launch mode
- go to the blah-blah\Application Data\Mozilla and rename the pluginreg.dat and
the registry.dat files
- close mozilla or exit out of quick launch
- new files are created and here is what I've seen in size:
old registry.dat 173k New 1.04kb
old pluginreg.dat 7.67kb New 5.78kb
Somewhere there is some cleanup that should be done, not really sure where
though, thanks.
Comment 37•22 years ago
|
||
Reopened per Comment #36
Status: VERIFIED → REOPENED
Resolution: FIXED → ---
Comment 38•22 years ago
|
||
The growth problem has been fixed. If you want to open a new bug on cleaning out
the old cruft go ahead, but I doubt it'll get much action (in fact there may be
such a bug, search for "registry packing" or similar). Effort by the profile
folks is focusing on other problems such as portability, and may replace
registry.dat entirely in the future.
Status: REOPENED → RESOLVED
Closed: 22 years ago → 22 years ago
Resolution: --- → FIXED
Comment 39•22 years ago
|
||
Sorry about getting testy below, but here goes:
Is this really fair to just dismiss this, since there could very well be users
that have huge registry.dat files out there? This patch should really be
marked, 'incomplete' or 'insufficient', cleaning this file should have been part
of the solution, not spunoff for a future conceptualized rewrite.
Oh well, I'll make sure to check my .dat files renegade files.
Comment 40•22 years ago
|
||
I just checked one of my other computers (one that I don't even use that much)
and found a 1.1 meg registry.dat file, fun for the whole family!!!
Comment 41•22 years ago
|
||
Also, can someone guage the load and startup impact of such a large file? Just
wondering.
Reporter | ||
Comment 42•22 years ago
|
||
re: startup impact, see comment #3 (and reconfirmed today). Despite the large
size, this does not impact startup on win2k (and likely linux, although I'm not
sure about mac [particularly os/9]). The app does not try to read this entire
file; it just opens, maps, checks a header, seeks, reads, closes and unmaps
(from what I can tell).
I'd have preferred (in a perfect world) that this had been cleaned up. But
that would be bug 10210 as dveditz points out.
Comment 43•22 years ago
|
||
I had posted a write up on my site about clearing this and just updated it
include Netscape 7.01 based on this email that I got:
"Re: Mozilla registry.dat files. A week ago I installed Netscape 7.01. It is
based on Mozilla build 1.0.2, the latest stable release. I followed your
instructions for renaming the registry.dat file, then restarting Netscape.
Registry.dat file went from 2407KB to 25KB on restart, with no noticable change
in settings or performance. Hopefully there will be a fix because I seriously
like the browser. Good work on your finding!"
Maybe Netscape should apply the patch soon or release 7.1 based on 1.2a, hope
this helps.
http://www.mrtech.com/news/messages/2466.html
Reporter | ||
Comment 44•22 years ago
|
||
um, and what if the users to whom you are recommending this procedure have
more than one profile and/or have a profile that doesn't have the default
profile name and/or that profile is not located in the default profile
directory. How do they recover their existing profile(s)?
[Actually, I'm going to defer to somebody from the installer group for an
authoritative explanation about the above. But I thought you might like to
know that deleting that file can have unintended consequences. You should
warn your readers that they risk dataloss if they do this, and, at minimum,
that they should back up their 'Application Data\Mozilla' before trying any
of this.]
Updated•22 years ago
|
QA Contact: ktrina → gbush
Comment 45•22 years ago
|
||
The registry.dat file stores the locations of all profiles used by the
application as well as plugin information used by the application.
People who regularly install and test are the ones most l likely to see this
problem and the ones most able to be aware of the pitfalls of deleting this file.
Mel's instructions seem to alert people to these issues.
It would not be recommended for other users
Updated•9 years ago
|
Product: Core → Core Graveyard
You need to log in
before you can comment on or make changes to this bug.
Description
•