[Webkit-unassigned] [Bug 13563] REGRESSION: Crash loading message in Yahoo! Mail

bugzilla-daemon at webkit.org bugzilla-daemon at webkit.org
Thu May 17 00:17:38 PDT 2007


http://bugs.webkit.org/show_bug.cgi?id=13563





------- Comment #20 from ddkilzer at webkit.org  2007-05-17 00:17 PDT -------
Created an attachment (id=14588)
 --> (http://bugs.webkit.org/attachment.cgi?id=14588&action=view)
Debug patch

This is the patch I used to determine what's happening when this bug is
triggered.

Basically, the bug occurs when:

1. The rmvScroll(msg) JavaScript method fires.

2. Before rmvScroll(msg) calls deleteRule(), its code triggers a partial
relayout.  If I had to guess, it would be one of these two lines:

    msg.style.overflow = "visible";
    msg.style.visibility = "visible";

3. The deleteRule() and InsertRule() methods are called, replacing the rules.

4. The relayout continues after the stylesheet change, except that some data
structures still have references to deleted objects causing the crash.

The backtrace when deleteRule() is called from rmvScroll(msg) when the bug
happens (and when it doesn't) looks like this:

Breakpoint 1, WebCore::CSSSelector::~CSSSelector () at CSSSelector.h:65
65      fprintf(stderr, "Deleting CSSSelector(%s) = %p\n",
selectorText().ascii().data(), this);
#0  WebCore::CSSSelector::~CSSSelector () at CSSSelector.h:65
#1  0x01671f10 in WebCore::CSSSelector::~CSSSelector (this=0x170313d0) at
CSSSelector.h:69
#2  0x0134b7b8 in WebCore::CSSStyleRule::~CSSStyleRule () at
/Volumes/Data/WebKit/WebCore/css/CSSStyleRule.cpp:47
#3  0x015a4acc in WebCore::Shared<WebCore::StyleBase>::deref (this=0x17031434)
at Shared.h:52
#4  0x0167205c in WTF::RefPtr<WebCore::StyleBase>::~RefPtr () at RefPtr.h:41
#5  0x01672090 in WTF::RefPtr<WebCore::StyleBase>::~RefPtr (this=0x1733b120) at
RefPtr.h:41
#6  0x017412e4 in WTF::Vector<WTF::RefPtr<WebCore::StyleBase>, 0ul>::remove
(this=0x173260d4, position=0) at Vector.h:702
#7  0x01354ce0 in WebCore::StyleList::remove (this=0x173260c0, position=0) at
/Volumes/Data/WebKit/WebCore/css/StyleList.cpp:51
#8  0x013472d8 in WebCore::CSSStyleSheet::deleteRule (this=0x173260c0, index=0,
ec=@0xbfffd870) at /Volumes/Data/WebKit/WebCore/css/CSSStyleSheet.cpp:118
#9  0x012c8f50 in KJS::DOMCSSStyleSheetPrototypeFunction::callAsFunction
(this=0x17231480, exec=0xbfffde2c, thisObj=0x17231440, args=@0xbfffd958) at
/Volumes/Data/WebKit/WebCore/bindings/js/kjs_css.cpp:635
#10 0x0059b4f8 in KJS::JSObject::call (this=0x17231480, exec=0xbfffde2c,
thisObj=0x17231440, args=@0xbfffd958) at object.cpp:98
#11 0x005c083c in KJS::FunctionCallDotNode::evaluate (this=0x1702baa0,
exec=0xbfffde2c) at nodes.cpp:790
#12 0x005bceb8 in KJS::ExprStatementNode::execute (this=0x1702bac0,
exec=0xbfffde2c) at nodes.cpp:1723
#13 0x005b96a8 in KJS::SourceElementsNode::execute (this=0x1702bae0,
exec=0xbfffde2c) at nodes.cpp:2522
#14 0x005894d4 in KJS::BlockNode::execute (this=0x177f3a90, exec=0xbfffde2c) at
nodes.cpp:1699
#15 0x00597ec0 in KJS::TryNode::execute (this=0x177f3ad0, exec=0xbfffde2c) at
nodes.cpp:2344
#16 0x005b97fc in KJS::SourceElementsNode::execute (this=0x175b3dc0,
exec=0xbfffde2c) at nodes.cpp:2528
#17 0x005894d4 in KJS::BlockNode::execute (this=0x177f3b10, exec=0xbfffde2c) at
nodes.cpp:1699
#18 0x005bcd40 in KJS::IfNode::execute (this=0x177f3b30, exec=0xbfffde2c) at
nodes.cpp:1742
#19 0x005b97fc in KJS::SourceElementsNode::execute (this=0x177b6f60,
exec=0xbfffde2c) at nodes.cpp:2528
#20 0x005894d4 in KJS::BlockNode::execute (this=0x177f3b70, exec=0xbfffde2c) at
nodes.cpp:1699
#21 0x00589624 in KJS::DeclaredFunctionImp::execute (this=0x16fffbe0,
exec=0xbfffde2c) at function.cpp:317
#22 0x00598ac8 in KJS::FunctionImp::callAsFunction (this=0x16fffbe0,
exec=0xbfffe18c, thisObj=0x16f5fdc0, args=@0xbfffdf70) at function.cpp:104
#23 0x0059b4f8 in KJS::JSObject::call (this=0x16fffbe0, exec=0xbfffe18c,
thisObj=0x16f5fdc0, args=@0xbfffdf70) at object.cpp:98
#24 0x005c1088 in KJS::FunctionCallResolveNode::evaluate (this=0x17596d60,
exec=0xbfffe18c) at nodes.cpp:694
#25 0x005bceb8 in KJS::ExprStatementNode::execute (this=0x177b6ff0,
exec=0xbfffe18c) at nodes.cpp:1723
#26 0x005b96a8 in KJS::SourceElementsNode::execute (this=0x177b7010,
exec=0xbfffe18c) at nodes.cpp:2522
#27 0x005894d4 in KJS::BlockNode::execute (this=0x177b7030, exec=0xbfffe18c) at
nodes.cpp:1699
#28 0x00589624 in KJS::DeclaredFunctionImp::execute (this=0x16ffd2c0,
exec=0xbfffe18c) at function.cpp:317
#29 0x00598ac8 in KJS::FunctionImp::callAsFunction (this=0x16ffd2c0,
exec=0x1752feec, thisObj=0x16f5fdc0, args=@0x17021f24) at function.cpp:104
#30 0x0059b4f8 in KJS::JSObject::call (this=0x16ffd2c0, exec=0x1752feec,
thisObj=0x16f5fdc0, args=@0x17021f24) at object.cpp:98
#31 0x012ec3cc in KJS::ScheduledAction::execute (this=0x17021f20,
window=0x16f5fdc0) at
/Volumes/Data/WebKit/WebCore/bindings/js/kjs_window.cpp:1918
#32 0x012ef734 in KJS::Window::timerFired (this=0x16f5fdc0, timer=0x16e79e30)
at /Volumes/Data/WebKit/WebCore/bindings/js/kjs_window.cpp:2054
#33 0x012ef7d0 in KJS::DOMWindowTimer::fired (this=0x16e79e30) at
/Volumes/Data/WebKit/WebCore/bindings/js/kjs_window.cpp:2641
#34 0x0126b6dc in WebCore::TimerBase::fireTimers (fireTime=1179384417.077419,
firingTimers=@0xbfffe480) at
/Volumes/Data/WebKit/WebCore/platform/Timer.cpp:336
#35 0x0126b7a8 in WebCore::TimerBase::sharedTimerFired () at
/Volumes/Data/WebKit/WebCore/platform/Timer.cpp:353
#36 0x0126ab98 in timerFired () at
/Volumes/Data/WebKit/WebCore/platform/mac/SharedTimerMac.cpp:46
#37 0x907f2578 in __CFRunLoopDoTimer ()
#38 0x907deef8 in __CFRunLoopRun ()
#39 0x907de4ac in CFRunLoopRunSpecific ()
#40 0x93298b20 in RunCurrentEventLoopInMode ()
#41 0x932981b4 in ReceiveNextEventCommon ()
#42 0x93298020 in BlockUntilNextEventMatchingListInMode ()
#43 0x9379eae4 in _DPSNextEvent ()
#44 0x9379e7a8 in -[NSApplication
nextEventMatchingMask:untilDate:inMode:dequeue:] ()
#45 0x00006740 in ?? ()
#46 0x9379acec in -[NSApplication run] ()
#47 0x9388b87c in NSApplicationMain ()
#48 0x0005c77c in ?? ()
#49 0x0005c624 in ?? ()

The page load when the bug occurs looks like this (with the debug patch
applied):

>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x173ebc20 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ed0680 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x173ebc20 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ed0680 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17332250 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ef0eb0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17332250 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ef0eb0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17767070 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x15c615e0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17767070 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x15c615e0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
(timer firing): function () 
{
  rmvScroll(msg);
}
(timer firing): function () 
{
  rmvScroll(msg);
}
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1792f740 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1734ff60 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1792f740 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1734ff60 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x177badd0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17317180 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x177badd0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17317180 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1704f100 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175b8be0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1704f100 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175b8be0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17731ff0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16eeef70 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17731ff0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16eeef70 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1792de00 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e7dba0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1792de00 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e7dba0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ea9490 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e92cc0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ea9490 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e92cc0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1790d830 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x177eb2f0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1790d830 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x177eb2f0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175861d0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175ee8f0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175861d0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175ee8f0 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x173e57b0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175c4250 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x173e57b0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175c4250 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17746ae0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ef7d60 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17746ae0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ef7d60 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleSheet::deleteRule(index = 0d, ec = 0)
>>> Deleting CSSStyleRule(#message) = 0x17031430
Deleting CSSSelector(#message) = 0x170313d0
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17746ae0 CSSSelector* d->selector() = 0x170cb160 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16ef7d60 CSSSelector* d->selector() = 0x1708d010 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'

Note that when the bug does NOT occur, there is no relayout between the time
that rmvScroll(msg) is called and when the deleteRule()/insertRule() code is
called.  Also note that there are much fewer relayouts:

>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x173587c0 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e93780 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x173587c0 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e93780 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17044a90 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17353420 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17044a90 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17353420 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
(timer firing): function () 
{
  rmvScroll(msg);
}
(timer firing): function () 
{
  rmvScroll(msg);
}
>>> CSSStyleSheet::deleteRule(index = 0d, ec = 0)
>>> Deleting CSSStyleRule(#message) = 0x1702d680
Deleting CSSSelector(#message) = 0x1702d810
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x170592f0 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1750c470 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x170592f0 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x1750c470 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175da4d0 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17026b90 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x175da4d0 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x17026b90 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e7a230 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x170051d0 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x16e7a230 CSSSelector* d->selector() = 0x17017490 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'
>>> CSSStyleRule = 'div#message' CSSRuleData* d = 0x170051d0 CSSSelector* d->selector() = 0x17569b50 QualifiedName d->selector()->m_tag = 'div' AtomicString d->selector()->m_tag.localName() = 'div'

*NOTE: I am assuming a "relayout" occurs each time
CSSStyleSelector::matchRulesForList() is being called, although I haven't
looked at a backtrace for those functions when they're being called.


-- 
Configure bugmail: http://bugs.webkit.org/userprefs.cgi?tab=email
------- You are receiving this mail because: -------
You are the assignee for the bug, or are watching the assignee.



More information about the webkit-unassigned mailing list