- David Hyatt checked in dramatic performance enhancments for tree scrolling by rows for M18.
The XPToolkit team resolved 93 bugs in the last week, fixing 34 of these, including 15 '+'. For details,
Mike Pinkerton (pinkerton)
Fixed 46223, regression of not being able to drop on mozilla from outside apps.
Applied patch from Dean Tessman for right clicking in context menus (31727)
Chris Saari (saari)
- Forward merging joki's changes. Successful tests on Mac and Linux right now. Should get Windows today.
- Helped Daniel fix a dogfood bug.
Daniel Matejka (danm)
- 45663 FIXE---[nsbeta2+]crash, nsbeta2, regression, topcrashcrash reloading page after switching to classic theme [@ Doc
- 43470 FIXE---[dogfood-][nsbeta2-]crash, nsbeta3crash closing new account wizard with confused text field
Eric Vaughan (evaughan):
Stuart Parmenter (pavlov):
reduced memory churn by not creating as many nsToolkit objects on unix
- fixed nsBasicEncoder being held on past XPCOM shutdown leak (bug
David Hyatt (hyatt):
Worked on the XUL template builder with waterson
to add the ability to prevent the template from groveling one level ahead to
determine whether or not a container should have children.
Patched the XUL template
builder and XP Menu code to prevent aggressive menu construction. This
fix decreases time to bring up windows, since RDF was groveling into closed
Patched XBL so that its exclusion mechanism takes
precedence over checking the child count. This prevents child
generation from happening when using XBL with XUL templates.
- Fixed keyboard navigation
and shortcut mnemonics in XP menus by making the XBL insertion point retrieval
(from the frame side) be recursive (finding the innermost insertion point).
- Abstracted the XBL insertion point mechanism so
that it can be used with XML and HTML (as well as XUL). The code is
still a static method on nsBox, and it needs to move into layout's
nsFrameManager, but it's ready to move. This fix will bring XML and HTML to
full parity with XUL as far as XBL capabilities (finally!).
- Patched XBL so that style contexts are properly
reparented when XBL's <children> mechanism is used, both with static
content and dynamically added content (using the DOM). This patch helps
attinasi, who was unable to land his style optimizations because of this bug
- Added a timed select capability to the tree
widget, so that onselect handlers don't fire immediately when the selection
is adjusted. Mailnews can also use this functionality when adjusting
the selection following the deletion. This results in a large
performance speedup for arrow key scrolling in tree widgets (especially in
the thread pane).
- Fixed a positioning problem with the tree
widget's child rows that resulted in all rows being placed at (0,0) before
being moved to their correct positions. This was causing the textfield
flicker when typing in mailcompose.
- Added an API to nsIScrollableFrame to enable
child scrolling views to perform blits while scrolling. Discovered that
all child views appear not to be blitting, which means any nested scrolling
view was invalidating itself when scrolling. Applied this patch to the
tree widget to enable it to finally blit when scrolling.
- Improved line scrolling in the tree widget (it's
actually as fast as 4.7 on my Win32 machine) on all platforms.
- Added synchronous painting on row construction to
reduce tree widget flashing on page scrolls and thumb drags.
- Fixed a multiple style context resolution problem
in the tree widget. All rows and items were resolving their style
contexts twice during construction.
- Implemented finer-grained sharing in the XUL
cache to provide another decrease in the time to show windows. Most
large stylesheets (such
as global.css) were never being cached because they were @imported from
other stylesheets. Patched the CSS loader to check the XUL cache when
@importing stylesheets and patched it to place stylesheets that were loaded
via @import directives into the XUL cache for other windows to reference
when they load.
- Added support for "bindingattached" event
handlers to XBL. This will enable the toolbars to be re-written (fixing
numerous toolbar bugs) with a better architecture.
- Stubbed out support for "bindingdetached"
handlers in XBL.
- Fixed a bug on a binding swap (through style) that was
preventing resizing of the sidebar in mailnews.
- Patched scrollboxes to fix a bug that prevented
- Implemented support for
obtaining a XUL object's x/y position and rect. This is equivalent to
IE's offsetWidth,offsetHeight,offsetLeft and offsetTop properties
Dan Rosen (dr)
- Successfully indoctrinated, set up his Linux box (thanks for nothing, IS), and dived into bugfixing.
- Brian Ryner (bryner)
fixed linux bookmarks crasher (45786)
39326, distinguish between src and dest in drag/drop
- Checkin 'fix in hand' bugs - 37301,35394, 43874,44503
- Fix up the XUL cache
- Work on resizing columns in tree
- Continue to work on performance issues (Quantify
begin working on performance bugs (12761, 16710, 26502)
- 46556 -[nsbeta2+]ETA ???crash, nsbeta2Crash after change theme [@ DocumentViewerImpl::MakeWindow]
- 36532 M18nsbeta3+nsbeta3Mozilla hangs on the splash screen when using UNC to launch
- 42109 -nsbeta3+crash, nsbeta3crash at shift-clicking a title in the messages list
46426 M18nsbeta3+crash, nsbeta3crash deleting and selecting local messages quickly
Proxy Auto Config finally in!
Several bug fixes. Really down to Zarro Boogs for nsbeta2+
Exceptional work by the whole team to nail the last few cache bugs for
PR2. Kudos to all of gteam!
Huge list of untargetted bugs to go thru. Hopefully resolved by end of
No official status but he has been working on a Win2K only problem which
has been difficult to reproduce. And also helping Neeti out on cache bugs.
Bugs 40084, 46014 resolved by the collective efforts of the entire Necko
& ImageLib team.- Thanks to Pam, Gordon, Ruslan and Gagan.
Currently working on bug 40449
bug#46049: [probably will be nsbeta2+] fix for 30852 puts added channel
load attribute on loadgroup. fixed by backing out nsLoadGroup.cpp change
on 30852 (since I had approval to fix that.)
bug#46032: closed/fixed. nsbeta2+. changing imglib load attrib to value
of default channel off of LoadGroup works (instead of the attrib attached
to the LoadGroup).
bug#46236: closed/WONTFIX. bug is can't display corrupted image.
bug#41056: closed/fixed. Could not reproduce on Mac OS 8.5.
bug#40192: closed/fixed. Works ok now.
bug#42208: closed/wontfix. (user using old internal icon names).
bug#19283: closed/fixed. png transparency works. when alpha fixed.
bug#40066: closed as worksforme.
bug#41627: close/duplicate of #41107.
bug#45999: closed/fixed. by checkins for #46049.
bug#22754: closed/fixed. gif crash.
bug#42290: closed/works for me.
bug#42788: closed/works for me.
GTeam Cache Bugs Extravaganza.
bug#41107: got to the core of the problem. Animated images are not kept
in image cache and js preloaded images are assumed to be in image cache.
Proxy Auto Config finally switched on. The last bug was a regression caused
by SOCKs checkin a while back.
Helped keep the whole team's nsbeta2+ in focus.
Helped Neeti with her cache bugs.
Navin Gupta joins the MailNews team starting today! Welcome
Hyatt for tree scrolling improvements (the number 1 marketing request for
The whole team for getting all our beta2 bugs fixed!
Joe Francis for helping fix autocomplete/IME recently
Jennifer Glick and Andrew Wooldridge fixed a number of Address Book UI
bugs last week for us.
thanks again to firstname.lastname@example.org
for fixing more menu stuff
MScott helped security team implement the ability to download certificates
via the uriloader for beta2.
Still minusing bugs in our triage meetings, need to get some plusses soon
AB Sync server still not reachable due to missing firewall access.
The press around this feature has been cut from beta2, we're trying to
get the feature itself in so we can promote it on the website.
Vacations & Sabbaticals!
Bug List (None Left!!!)
closed last week (1 dogfood, 11 nsbeta2+, 25 total)
Triage (608 candidates)
Mail Triage is currently minusing bugs and sorting potential plus bugs
into different buckets for prioritization. Mail developers continue
to work on a small number of pre-approved bugs while we figure out what
to give actual plus status. We're planning to have all plus bugs
marked by the end of the week.
Opening the trunk to beta3 is a HUGE relief :-)
Converting prefs to nsIFile
Working on embedding vs profiles and prefs
Completed cleanup the Message compose menus and fixed all the enable/disable
Fixed the "quit mailnews and crash" bug
Fixed last problems with Netcenter Webmail
- Helped UREG and Franklin teams with following bugs
- 1283 - Activation team to query Franklin multiplexer
- 1420 - Franklin team to set webmail cookie on receiving request from UREG
- 1626 - "Login Failed" for webmail acocunt (mailbox is not getting created)
- These bugs have been fixed. Verified on test servers. Waiting for changes to
get pushed on to
- Helping Nisheeth with history bug.
- 1231 - Go Back screen on Activation error screens is not working
- This is a history.back() problem. Helping Nisheeth with his proposed fix. Bug fixing is still in progress.
- Many (UREG and Franklin) changes getting pushed on to production servers. We
need to see how things shape out.
- This week
- Continue to work with UREG and Franklin teams on activation and webmail beta bugs.
- Help with other beta2 bugs and verifications.
- Start on beta3 Profile Manager bugs.
- CCK is out of the water as far as the build
process is concerned.
fixed several bugs
- Kyle needs some more time to
come up to speed on cck and we will
not have the infozip (for multiple windows platforms) for Beta2.
Vidur, Waterson, Valeski and I got together on Friday to triage all the
bugs we've filed for embedding. We've uncovered:
bugs nominated for nsbeta3
of those fall outside of Jud's and my groups
or those are footprint/mlk, 16
We feel that to adequately tackle footprint problems
to satisfy the embedding project's needs, it will require a consorted effort
on the part of many CPD engineers. Engineers closes to the code in question
need do the analysis to uncover memory consumption problems and help minimize
footprint. There are currently 77
memory bugs nominated for beta3 (the 44 above fall outside of the architecture
and embedding groups) -- but these are just the tip of the iceberg, and
we still have no data on how these particular bugs will affect overall
memory consumption. We need to raise the priority of footprint work throughout
On top of this memory footprint problem are numerous
architectural cleanup tasks which seem to be below the seamonkey radar.
These tasks serve 2 purposes:
stabilize APIs for embedding,
buy us insurance post-seamonkey FCS so that developers
wishing to extend mozilla don't come to depend on every API we've got (this
is a major problem when all your source code is publicly visible).
We should decide that the embedding goal is everyone's
priority, or we shouldn't do it at all. It's clear from this data that
it goes well beyond Jud's group.
Edward Kandrot starts this week and is in orientation today. He will begin
helping us with footprint and performance issues.
Big speedups for large documents by Chris Waterson and David Baron (see
Wrapped up M17/nsbeta2 bug 46013 (no themes on startup), which ended up
being caused by two different faults. Decoupled RDF from layout (yay!)
and fixed refcounting & teardown in the chrome registry's datasource.
Landed nsTextRun evisceration; caused some regressions, but I think those
are dealt with now. This takes a big chunk out of the "slow on long text
docs" bugs; however, we're still about 2x slower than 4.x and IE on long,
flat text & HTML (down from 3x to 4x slower). (N.B. that dbaron's fixes
to GetLinkState() are another big contributor to this speedup.)
Landed pent-up M18/nsbeta3 work; mostly fixes to RDF and XUL templates,
some minor layout correctness bugs.
Moved nsFixedSizeAllocator into xpcom/ds (from RDF) for use by harishd
for parser node arena allocation. (Also, alecf & bienvenu had expressed
Attended footprint meeting and sent out active footprint/performance task
Ongoing API Review work.
Set up http://www.mozilla.org/xmlextras. A bit of minor bug fixing.
[Lots of Netscape internal meetings]
Made progress on Views and Formatting proposal, and clarified the issues
for the teleconference and face-to-face meeting about it.
Spent a lot of time working on the bug lists, working towards resolutions
on a number of xpcom fixes. No actual code changes were rolled out.
Spent more time researching and discussing Component Manager issues. I
would rather go slow than do the wrong thing at this point.
Will log more bugs this weekend and try to come up with a reasonable schedule
for beta3 work, and a last pass at the APIs, with descriptions.
no status (2 more weeks of vacation)
Fixed some bugs.
Did some investigation of footprint bugs.
Worked on getting jar process running on the Mac. Need to do a little more
Jarring is working on Windows, not checked in. Linux needs a little more
Working on reworking streams interfaces to solve problems for embedding.
Got sucked into 4.7 on Thursday and Friday.
bug #46899: fixed/checked-in changes to ns[C]String::SetCapacity(0) to
bug #46898: verified/checked-in for jag's nsCString::ToInteger patch
bugs #28221, #46738: looked at Doug Turner's string profiling data (here
are copies for people outside the firewall: Book1.txt, Book2.txt) but I
think we need more data before we can draw any meaty conclusions
worked with David Boswell on Mozilla Developer Day schedule, speakers,
Posted the slides from my O'Reilly presentation and hooked them up to the
Mozilla at the O'Reilly OSS Convention page
updated distribution instructions for Mac with details of BuildID generation
at Dawn Endico's request
fixed the nsCOMPtr User's Guide and a couple of other documents to have
the cool horizontal menu
1) Parser token and string usage
Description: The parser currently heap allocates small CToken
instances and keeps them on a recycler list "for performance reasons".
The recycler list is currently unbounded in size. Text tokens also use
nsStrings to store copies of their text data - also heap allocated. The
overall memory usage shows up high in bloatblame logs. The working set
memory usage also stays pretty high because of the unbounded token recycler.
Module owner: email@example.com
Task owner: firstname.lastname@example.org,
7/28 - Harish is looking at arena allocating the token objects. Scott
is working on a segmented string implementation which
can deal with substrings that share the underlying buffer for the token
8/2 - Harish switched token allocation to be arena-based. Needs help
from waterson for analysis. Scott is working on a segmented string implementation
which can deal with substrings that share the underlying buffer for the
Description: Currently each DocShell has a script context and
script global object associated with it. For each script global object,
in the shell. This redundancy has both performance and bloat repercussions.
The thought is that we might be able to have "super global" object on which
the core classes are defined. This would be the JS prototype of the per
shell script global.
Module owner: email@example.com
Task owner: firstname.lastname@example.org,
7/28 - JBand to determine the memory used by the core classes. JBand,
Vidur and Johnny to determine what could break
with a super global.
8/2 - JBand did some analysis. Initializing the core classes is around
87k, per window, per document. This is bigger than one would expect so
JBand will do more analysis.
3) Image Library
Description: We have anecdotal information that the image memory
cache (not the network memory cache) is not being hit very often. We also
don't know if the size of the cache is bounded and if it a memory flush
Module owner: email@example.com
Task owner: firstname.lastname@example.org
7/28 - Syd to work with Pam to analyze image memory cache usage and
8/2 - Syd met with Pnunn to get an introduction to image lib. They
put some debug logging into the image lib and believes that the cache is
being used correctly for chrome images. Syd to do more analysis with chrome
and content images.
The image lib cache size is hardcoded now - it should be controllable
via a pref.
4) CSS Loader
Description: Analysis from email@example.com shows that we
are loading the same CSS files from disk at startup time redundantly. The
Loader should be caching compiled CSS style sheets so that we don't
hit the disk. Chris' suspicion is that we aren't hitting the cache for
@imported stylesheets. Why are we loading the CSS files multiple times?
If the cache does exist, is it bounded? It needs to be a memory flush listener.
Module owner: firstname.lastname@example.org,
Task owner: email@example.com
7/28 - Pierre to investigate why we are loading the CSS files multiple
times and not hitting the CSS Loader cache.
8/2 - Hyatt says CSSLoaderCache is only per document. He has fixed
the chrome cache to cache across documents for chrome. Still need to look
5) When to flush memory
Description: When should the memory flushers be run? The current
thinking is to have a combination of a timer and an IsLowMemory predicate
(requires hooking into malloc/free, new/delete for each platform) to determine
when to run them.
Task owner: firstname.lastname@example.org,
7/28 - Wade to investigate implementing the IsLowMemory perdicate.
8/2 - Wade found a utility to get memory information on Linux, but
Warren didn't have luck using it. Warren and Wade to investigate more.
6) .xpt file loading
Description: Currently we're loading more type library information
than we necessarily use because of the way xpt files are created as part
of the module build process. Better factoring of the xpt files could result
in less loading at startup time and less memory usage. Also, the type library
info needs to be a memory flush listener.
Module owner: email@example.com,
Task owner: firstname.lastname@example.org
7/28 - JBand to investigate either better factoring of typelibs in
xpt files or the idea of putting all of the individual small xpt files
into a single zip file.
8/2 - JBand found that Warren's idea of putting everything into a zip
file is not slower. JBand to look into playing with the build system to
switch the packaging mechanism.
7) Networking memory/disk cache
Description: We have anecdotal information that we're not hitting
the networking memory/disk caches that often. We need to do analysis of
cache hit rates.
Module owner: email@example.com
Task owner: firstname.lastname@example.org
7/28 - Gagan and Neeti to do analysis.
8/2 - Gagan found that some cache logic sits in HTTP and would like
to see if it's possible to move the logic into generic code so that it
can be used by other protocols. Image library might want to use cache manager.
8) Component registry loading
Description: We load and inflate the component registry at startup
time. We've heard anecdotally that the in-memory cost of the component
registry is 1-3 megs. This hit could become worse if/when we implement
RayW's new scheme for prog IDs. Need to see if we can use a better scheme
to reduce bloat.
Module owner: email@example.com
Task owner: firstname.lastname@example.org,
7/28 - Chris and Doug to do analysis of memory usage so we have real
8/2 - Doug found that we're hitting the disk too often in reading the
component registry. There's a lot of seeking going on. One option in dealing
with this is reading the entire file into memory. Another is to explore
a different file format. Warren to look into this.
Need to do more analysis on the in-memory component manger representation
to see if we can get it more compact.
9) String bundles
used by string bundle hashtables have showed up fairly high on the bloatblame
list. Each StringKey holds an AutoString which seems wasteful for the keys
in the hashtable itself (the AutoStrings are useful during lookup when
the key is stack allocated). We need to reduce the size of StringKeys.
Also, could string bundles be arena allocated?
Module owner: email@example.com
Task owner: firstname.lastname@example.org,
Bugs: string key/hashtable issue: 46711
string bundles: 46712
7/28 - Warren to look into alternatives for StringKeys and string bundle
8/2 - Warren to look into putting a bit into StringKeys to deal with
the case where the key doesn't own its string - it points to the static
version or an arena allocated version of a string. Arena allocation should
happen for some of the hashtables that use StringKey. Warren to also look
at whether double-byte string keys are always necessary.
10) Bloatblame FE
Description: Currently bloatblame is a post-processing tool.
We believe we can get much more useful information if we can get more real-time
data of module memory usage. Brendan has been working on the back-end of
the real-time bloatblame. Wade and Pavlov are both looking into a front-end
to display/graph the data.
Module owner: email@example.com
Task owner: firstname.lastname@example.org,
7/28 - Brendan is on vacation and we believe that the currently checked
in version does not implement all the back-end changes necessary. We may
need to wait till Brendan returns.
8/2 - No progress.
11) Chrome cache analysis
Description: Dougt's analysis about redundant file loading at
startup time shows that we're also loading the same JS chrome file multiple
times. We need to figure out why the chrome cache isn't sharing compiled
Module owner: email@example.com
Task owner: firstname.lastname@example.org
7/28 - Chris to determine what's happening here
8/2 - Caching is already done per document. Hyatt to look into caching
12) Mail/New bloat analysis
Description: Does mail/news have bloat analysis tasks that should
go on this list?
Module owner: email@example.com,
Task owner: firstname.lastname@example.org
7/28 - Chris to get David or Alec to come to the meeting and send us
a list of tasks.
8/2 - Chris: Every message is recreating a mime parser - 300-400k of
bloat over ~2000 messages. Bienvenu, Alec, etc. are working on that.
The necko group met today to work on the cache related issues with this agenda
Wrap up nsbeta2+ if any.
- Identify current problems with the cache.
- Solve these problems or have people assigned to be working on solving them.
- Make sure our solutions are in line for beta3 schedule.
As a result of the discussion we had the following problems with the existing
cache were identified-
After about an hour of discussion the following solutions/tasks were determined-
- Cache entries getting updated only in OnEnd This should mostly be
fixed now, but was left on the list to make sure we covered it.
- Cache Corruption Using the cache for a while results in nasty
database corruption which has manifested itself in crashing the app to freezing
up on the Mac.
- IMS problem This is the problem with bugzilla pages not getting
updated correctly because our logic for checking the cache "once per session"
was busted. This is fixed as well. Bug 46014.
- Caching when we shouldn't There have been known cases (specifically
on ETrade) when we get a "Pragma: no-cache" and we'd still land up caching the
- Delete/Replace cache entries The current cache login using the cache
entry that was found thru GetCachedNetData call to replace and update
it with a new one. This entry is also marked inUse and so we have problems
- Testing (about:cache) Most of these cache bugs would be really easy
to detect if we had a reliable robust test suite that we could run thru each
time the cache code changed. Tever adds that about:cache used to be a reliable
way for QA to verify that a cache entry was available in the cache. This is not
implemented in Mozilla.
- Multithreading issues (simultaneous access) We currently have no
mechanism to safely provide simultaneous access to cache.
- Versioning cache entries The cache data itself has no versioning
mechanism, this means that each time when we build/upgrade the data structure
for cache entries, if someone has older cache sitting around we have a
guaranteed crash or a hang.
- Cache checks for replacement policies, cache headers, etc. Several
existing bugs indicate that we may not be checking correctly for replacement
policies, the load group flags that are provided on the channel when a request
comes thru. We also have cases of incorrect response header handling (like
Pragma no-cache, etc.)
- Cache logic inside HTTP A significant portion of the actual cache
logic sits in the HTTP code (nsHTTPChannel::CheckCache,
nsHTTPChannel::CacheReceivedResponse among others.) This makes it difficult to
use cache for anything else but HTTP. Besides adding the bloat to the actual
- Preferences are messed up. Several cache preferences are not
Owners of these bugs, please add more details since I only filed these bugs with
respect to the discussion we had. Several of these bugs require a lot more info
before the nsbeta3 nominations can be resolved.
- Verify that the replacement policies are correct, cache headers are being
honored, and preferences work correctly. Make sure we don't cache when we
shouldn't. No duplicate caching (memory as well as disk) As a safe measure we
may even consider no caching when there is no content_length associated with a
transaction. Bug 47400 (neeti,
gagan, tever) [Solves 9, 11]
- Add logging to cache, implement about:cache Bug
21095 (gagan, neeti, tever) [Solves 6]
- Build a robust cache test suite Bug 47401 (tever, gagan, neeti) [Solves everyone's problems
and provides a way to detect them early on]
- Break GetCachedNetData into existing entry and new one.Bug 47403 (neeti, ruslan,
gordon) [Solves 1, 2, 4, 5]
- Move cache out of HTTP Bug 47405 (gordon, ruslan) [Solves 10, addresses 7]
- Add reader/writer monitors/locks. Bug 47406 (ruslan, gordon) [Solves 7]
- Add a version file to verify correct versioning. Bug
47408 (neeti, gagan) [Solves 8]