Assertion failure: !mInStyleRefresh, in GeckoRestyleManager::AttributeWillChange

RESOLVED WORKSFORME

Status

()

Core
DOM: Core & HTML
RESOLVED WORKSFORME
10 months ago
9 months ago

People

(Reporter: bradwerth, Assigned: bradwerth)

Tracking

Firefox Tracking Flags

(Not tracked)

Details

(Assignee)

Description

10 months ago
Steps to Reproduce:

1) Install WebExtension version of Ad Block Plus from https://downloads.adblockplus.org/devbuilds/adblockplusfirefox/.
2) Launch Firefox, wait for all chrome content to load, then move cursor over the ABP icon in toolbar, wait for tooltip to appear, then click the ABP icon.
(Assignee)

Comment 1

10 months ago
Here's a very long call stack showing how this manifests. This stack DOES NOT contain a call to GeckoRestyleManager::BeginProcessingRestyles, which is the only function that sets mInStyleRefresh to true, so that must have been called on a prior spin of the event loop.

0: mozilla::GeckoRestyleManager::AttributeWillChange() at GeckoRestyleManager.cpp:312
1: mozilla::RestyleManager::AttributeWillChange() at RestyleManagerInlines.h:61
2: mozilla::PresShell::AttributeWillChange() at PresShell.cpp:4362
3: non-virtual thunk to mozilla::PresShell::AttributeWillChange() at PresShell.cpp:0
4: nsNodeUtils::AttributeWillChange() at nsNodeUtils.cpp:132
5: nsDOMCSSAttributeDeclaration::GetCSSDeclaration() at nsDOMCSSAttrDeclaration.cpp:118
6: nsresult nsDOMCSSDeclaration::ModifyDeclaration<nsDOMCSSDeclaration::ParsePropertyValue() at nsDOMCSSDeclaration.cpp:300
7: nsDOMCSSDeclaration::ParsePropertyValue() at nsDOMCSSDeclaration.cpp:353
8: nsDOMCSSDeclaration::SetPropertyValue() at nsDOMCSSDeclaration.cpp:91
9: nsDOMCSSAttributeDeclaration::SetPropertyValue() at nsDOMCSSAttrDeclaration.cpp:224
10: nsDOMCSSDeclaration::SetWidth() at nsCSSPropList.h:4449
11: mozilla::dom::CSS2PropertiesBinding::set_width() at CSS2PropertiesBinding.cpp:44451
12: mozilla::dom::GenericBindingSetter() at BindingUtils.cpp:3014
13: mozilla::dom::GenericBindingSetter() at BindingUtils.cpp:2984
14: js::InternalCallOrConstruct() at Interpreter.cpp:469
15: InternalCall() at Interpreter.cpp:514
16: js::Call() at Interpreter.cpp:533
17: js::CallSetter() at Interpreter.cpp:662
18: SetExistingProperty() at NativeObject.cpp:2764
19: js::NativeSetProperty() at NativeObject.cpp:2799
20: js::SetProperty() at NativeObject.h:1553
21: js::SetPropertyIgnoringNamedGetter() at BaseProxyHandler.cpp:182
22: mozilla::dom::DOMProxyHandler::set() at DOMJSProxyHandler.cpp:225
23: js::Proxy::set() at Proxy.cpp:384
24: JSObject::nonNativeSetProperty() at jsobj.cpp:1047
25: js::SetProperty() at NativeObject.h:1552
26: js::Wrapper::set() at Wrapper.cpp:156
27: js::CrossCompartmentWrapper::set() at CrossCompartmentWrapper.cpp:238
28: js::Proxy::set() at Proxy.cpp:384
29: JSObject::nonNativeSetProperty() at jsobj.cpp:1047
30: js::SetProperty() at NativeObject.h:1552
31: SetPropertyOperation() at Interpreter.cpp:243
32: Interpret() at Interpreter.cpp:2862
33: js::RunScript() at Interpreter.cpp:409
34: js::InternalCallOrConstruct() at Interpreter.cpp:487
35: InternalCall() at Interpreter.cpp:514
36: js::CallFromStack() at Interpreter.cpp:520
37: Interpret() at Interpreter.cpp:3065
38: js::RunScript() at Interpreter.cpp:409
39: js::InternalCallOrConstruct() at Interpreter.cpp:487
40: InternalCall() at Interpreter.cpp:514
41: js::Call() at Interpreter.cpp:533
42: JS_CallFunctionValue() at jsapi.cpp:2884
43: nsFrameMessageManager::ReceiveMessage() at nsFrameMessageManager.cpp:1104
44: nsFrameMessageManager::ReceiveMessage() at nsFrameMessageManager.cpp:913
45: nsSameProcessAsyncMessageBase::ReceiveMessage() at nsFrameMessageManager.cpp:2094
46: nsAsyncMessageToParent::HandleMessage() at nsInProcessTabChildGlobal.cpp:62
47: mozilla::dom::SameProcessMessageQueue::Runnable::Run() at SameProcessMessageQueue.cpp:73
48: mozilla::dom::SameProcessMessageQueue::Flush() at SameProcessMessageQueue.cpp:42
49: SameChildProcessMessageManagerCallback::DoSendBlockingMessage() at nsFrameMessageManager.cpp:1937
50: nsFrameMessageManager::SendMessage() at nsFrameMessageManager.cpp:653
51: nsFrameMessageManager::SendSyncMessage() at nsFrameMessageManager.cpp:560
52: mozilla::dom::ProcessGlobal::SendSyncMessage() at ProcessGlobal.h:50
53: NS_InvokeByIndex at xptcinvoke_asm_x86_64_unix.S:129
54: CallMethodHelper::Invoke() at XPCWrappedNative.cpp:1996
55: CallMethodHelper::Call() at XPCWrappedNative.cpp:1315
56: XPCWrappedNative::CallMethod() at XPCWrappedNative.cpp:1282
57: XPC_WN_CallMethod() at XPCWrappedNativeJSOps.cpp:967
58: XPC_WN_CallMethod() at jscntxtinlines.h:293
59: js::InternalCallOrConstruct() at Interpreter.cpp:469
60: InternalCall() at Interpreter.cpp:514
61: js::CallFromStack() at Interpreter.cpp:520
62: Interpret() at Interpreter.cpp:3065
63: js::RunScript() at Interpreter.cpp:409
64: js::InternalCallOrConstruct() at Interpreter.cpp:487
65: InternalCall() at Interpreter.cpp:514
66: js::Call() at Interpreter.cpp:533
67: JS_CallFunctionValue() at jsapi.cpp:2884
68: nsXPCWrappedJSClass::CallMethod() at XPCWrappedJSClass.cpp:1215
69: nsXPCWrappedJS::CallMethod() at XPCWrappedJS.cpp:615
70: ::PrepareAndDispatch() at xptcstubs_x86_64_darwin.cpp:122
71: SharedStub + 91
72: nsContentPolicy::CheckPolicy() at nsContentPolicy.cpp:153
73: nsContentPolicy::ShouldLoad() at nsContentPolicy.cpp:214
74: NS_CheckContentLoadPolicy() at nsContentPolicyUtils.h:228
75: ShouldLoadCachedImage() at imgLoader.cpp:581
76: ValidateSecurityInfo() at imgLoader.cpp:693
77: imgLoader::ValidateEntry() at imgLoader.cpp:1818
78: imgLoader::LoadImage() at imgLoader.cpp:2178
79: nsContentUtils::LoadImage() at nsContentUtils.cpp:3722
80: mozilla::css::ImageLoader::LoadImage() at ImageLoader.cpp:270
81: mozilla::css::ImageValue::Initialize() at nsCSSValue.cpp:3047
82: mozilla::css::ImageValue::ImageValue() at nsCSSValue.cpp:3024
83: mozilla::css::ImageValue::ImageValue() at nsCSSValue.cpp:3023
84: nsCSSValue::StartImageLoad() at nsCSSValue.cpp:905
85: TryToStartImageLoadOnValue() at nsCSSDataBlock.cpp:98
86: TryToStartImageLoad() at nsCSSDataBlock.cpp:143
87: MapSinglePropertyInto() at nsCSSDataBlock.cpp:186
88: nsCSSExpandedDataBlock::MapRuleInfoInto() at nsCSSDataBlock.cpp:785
89: void mozilla::CSSVariableImageTable::ReplaceAll<nsCSSExpandedDataBlock::MapRuleInfoInto() at CSSVariableImageTable.h:102
90: nsCSSExpandedDataBlock::MapRuleInfoInto() at nsCSSDataBlock.cpp:784
91: (anonymous namespace)::CSSParserImpl::ParsePropertyWithVariableReferences() at nsCSSParser.cpp:2934
92: nsCSSParser::ParsePropertyWithVariableReferences() at nsCSSParser.cpp:18158
93: nsRuleNode::ResolveVariableReferences() at nsRuleNode.cpp:2558
94: nsRuleNode::WalkRuleTree() at nsRuleNode.cpp:2667
95: nsStyleList const* nsRuleNode::GetStyleList<true>() at nsStyleStructList.h:51
96: nsStyleList const* nsStyleContext::DoGetStyleList<true>() at nsStyleStructList.h:51
97: nsStyleContext::StyleList() at nsStyleStructList.h:51
98: nsStyleContext::ThreadsafeStyleList() at nsStyleStructList.h:51
99: nsStyleContext::CalcStyleDifference() at nsStyleContext.cpp:235
100: mozilla::ElementRestyler::CaptureChange() at GeckoRestyleManager.cpp:1326
101: mozilla::ElementRestyler::RestyleSelf() at GeckoRestyleManager.cpp:2751
102: mozilla::ElementRestyler::Restyle() at GeckoRestyleManager.cpp:1880
103: mozilla::ElementRestyler::RestyleContentChildren() at GeckoRestyleManager.cpp:3503
104: mozilla::ElementRestyler::RestyleChildren() at GeckoRestyleManager.cpp:3031
105: mozilla::ElementRestyler::Restyle() at GeckoRestyleManager.cpp:2035
106: mozilla::ElementRestyler::RestyleContentChildren() at GeckoRestyleManager.cpp:3503
107: mozilla::ElementRestyler::RestyleChildren() at GeckoRestyleManager.cpp:3031
108: mozilla::ElementRestyler::Restyle() at GeckoRestyleManager.cpp:2035
109: mozilla::ElementRestyler::RestyleContentChildren() at GeckoRestyleManager.cpp:3503
110: mozilla::ElementRestyler::RestyleChildren() at GeckoRestyleManager.cpp:3031
111: mozilla::ElementRestyler::Restyle() at GeckoRestyleManager.cpp:2035
112: mozilla::ElementRestyler::ComputeStyleChangeFor() at GeckoRestyleManager.cpp:3167
113: mozilla::GeckoRestyleManager::ComputeAndProcessStyleChange() at GeckoRestyleManager.cpp:3578
114: mozilla::GeckoRestyleManager::RestyleElement() at GeckoRestyleManager.cpp:232
115: mozilla::RestyleTracker::ProcessOneRestyle() at RestyleTracker.cpp:94
116: mozilla::RestyleTracker::DoProcessRestyles() at RestyleTracker.cpp:255
117: mozilla::GeckoRestyleManager::ProcessRestyles() at GeckoRestyleManager.h:371
118: mozilla::GeckoRestyleManager::UpdateOnlyAnimationStyles() at GeckoRestyleManager.cpp:684
119: mozilla::GeckoRestyleManager::ProcessPendingRestyles() at GeckoRestyleManager.cpp:557
120: mozilla::RestyleManager::ProcessPendingRestyles() at RestyleManagerInlines.h:44
121: mozilla::PresShell::DoFlushPendingNotifications() at PresShell.cpp:4200
122: nsIPresShell::FlushPendingNotifications() at nsIPresShell.h:591
123: nsRefreshDriver::Tick() at nsRefreshDriver.cpp:1890
124: mozilla::RefreshDriverTimer::TickDriver() at nsRefreshDriver.cpp:330
125: mozilla::RefreshDriverTimer::TickRefreshDrivers() at nsRefreshDriver.cpp:300
126: mozilla::RefreshDriverTimer::Tick() at nsRefreshDriver.cpp:322
127: mozilla::VsyncRefreshDriverTimer::RunRefreshDrivers() at nsRefreshDriver.cpp:763
128: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::TickRefreshDriver() at nsRefreshDriver.cpp:676
129: mozilla::VsyncRefreshDriverTimer::RefreshDriverVsyncObserver::ParentProcessVsyncNotifier::Run() at nsRefreshDriver.cpp:522
130: nsThread::ProcessNextEvent() at nsThread.cpp:1446
131: NS_ProcessPendingEvents() at nsThreadUtils.cpp:422
132: nsBaseAppShell::NativeEventCallback() at nsBaseAppShell.cpp:97
133: nsAppShell::ProcessGeckoEvents() at nsAppShell.mm:409
134: 0x00007fff764ac321 CoreFoundation`__CFRUNLOOP_IS_CALLING_OUT_TO_A_SOURCE0_PERFORM_FUNCTION__ + 17
135: 0x00007fff7648d21d CoreFoundation`__CFRunLoopDoSources0 + 557
136: 0x00007fff7648c716 CoreFoundation`__CFRunLoopRun + 934
137: 0x00007fff7648c114 CoreFoundation`CFRunLoopRunSpecific + 420
138: 0x00007fff759ecebc HIToolbox`RunCurrentEventLoopInMode + 240
139: 0x00007fff759eccf1 HIToolbox`ReceiveNextEventCommon + 432
140: 0x00007fff759ecb26 HIToolbox`_BlockUntilNextEventMatchingListInModeWithFilter + 71
141: 0x00007fff73f85a54 AppKit`_DPSNextEvent + 1120
142: 0x00007fff747017ee AppKit`-[NSApplication(NSEvent) _nextEventMatchingEventMask:untilDate:inMode:dequeue:] + 2796
143: ::-[GeckoNSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]() at nsAppShell.mm:131
144: 0x00007fff73f7a3db AppKit`-[NSApplication run] + 926
145: nsAppShell::Run() at nsAppShell.mm:685
146: nsAppStartup::Run() at nsAppStartup.cpp:287
147: XREMain::XRE_mainRun() at nsAppRunner.cpp:4632
148: XREMain::XRE_main() at nsAppRunner.cpp:4796
149: XRE_main() at nsAppRunner.cpp:4891
150: mozilla::BootstrapImpl::XRE_main() at Bootstrap.cpp:45
151: 0x000000010439f0e6 firefox`do_main() at nsBrowserApp.cpp:236
152: 0x000000010439ebc1 firefox`main() at nsBrowserApp.cpp:309
153: 0x000000010439ead4 firefox`start + 52
(Assignee)

Comment 2

9 months ago
No longer reproduces.
Status: NEW → RESOLVED
Last Resolved: 9 months ago
Resolution: --- → WORKSFORME
You need to log in before you can comment on or make changes to this bug.