Purify just reported a UMR in AccumulateCRC for me while visiting www.mozilla.org and the bonsai "checkins last 20 hours" page. It might be correct to have uninitilized memory in the style data (in this case the StyleMargin), but I think we should try to initialize all memory. I don't know what field in the style data it is, but Purify reports it to be 1 byte at 540 bytes from the beginning of the new:ed block, 1 byte at 544 bytes offset, 1 byte at 548 bytes offset and 1 byte at 552 bytes offset. The stack was: AccumulateCRC [nsStyleContext.cpp:4674] StyleMarginCRC [nsStyleContext.cpp:4706] nsStyleContextData::ComputeCRC32(UINT)const [nsStyleContext.cpp:2790] ??? [ip=0x0f347d78] StyleContextImpl::ShareStyleData(void) [nsStyleContext.cpp:4138] StyleContextImpl::RemapStyle(nsIPresContext *,int) [nsStyleContext.cpp:3912] NS_NewStyleContext(nsIStyleContext * *,nsIStyleContext *,nsIAtom *,nsISupportsArray *,nsIPresContext *) [nsStyleContext.cpp:4627] StyleSetImpl::GetContext(nsIPresContext *,nsIStyleContext *,nsIAtom *,nsISupportsArray *,int,int&) [nsStyleSet.cpp:837] StyleSetImpl::ResolveStyleFor(nsIPresContext *,nsIContent *,nsIStyleContext *,int) [nsStyleSet.cpp:921] nsPresContext::ResolveStyleContextFor(nsIContent *,nsIStyleContext *,int,nsIStyleContext * *) [nsPresContext.cpp:620]
Ok, I guess it's because the style margin is lazily calculated, but anyway, that means that the CRC is calculated from uninitalized data which will render the CRC quite useless if it's used to find styles that are the same.
Daniel: Thanks for the investigation and my apologies for having neglected my bug list for so long. A fix is under bug 74773. *** This bug has been marked as a duplicate of 74773 ***