Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Nondeterminism in animation controller's timer callbacks #426

Closed
burg opened this issue Jan 2, 2014 · 1 comment
Closed

Nondeterminism in animation controller's timer callbacks #426

burg opened this issue Jan 2, 2014 · 1 comment

Comments

@burg
Copy link
Owner

burg commented Jan 2, 2014

It seems that AnimationControllerPrivate::m_animationTimer is responsible for some nondeterminism that manifests as DOM animation events. This could be handled with ReplayableTimer, if support for repeating timer intervals is added.

A simple test case that asserts on capture is at: LayoutTests/animations/animation-direction-normal.html

Stack trace encountered when capturing on www.theverge.com:

ReplayEvents         --->Dispatching DOM event: type=transitionend, target=0/node[0x7fff1061cfa0] DIV
ASSERTION FAILED: withinInputExtent()
/Users/burg/repos/timelapse/Source/WebCore/replay/CaptureInputIterator.cpp(85) : virtual void WebCore::CaptureInputIterator::incrementExecutionTicks()
1   0x116d93c20 WTFCrash
2   0x119a462e5 WebCore::CaptureInputIterator::incrementExecutionTicks()
3   0x119a3b2a9 WebCore::ReplayController::willDispatchEvent(WebCore::Event const&, WebCore::Frame*, WebCore::PositionMark const&)
4   0x119a411d4 WebCore::InspectorReplayAgent::willDispatchEvent(WebCore::Event const&, WebCore::Frame*)
5   0x1188e0e94 WebCore::InspectorInstrumentation::willDispatchEventImpl(WebCore::InstrumentingAgents*, WebCore::Event const&, bool, WebCore::Document*)
6   0x1183b1815 WebCore::InspectorInstrumentation::willDispatchEvent(WebCore::Document*, WebCore::Event const&, bool)
7   0x1183b10da WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow>&)
8   0x1183b0b3e WebCore::EventTarget::fireEventListeners(WebCore::Event*)
9   0x1190ad09c WebCore::Node::handleLocalEvents(WebCore::Event&)
10  0x118385511 WebCore::EventContext::handleLocalEvents(WebCore::Event&) const
11  0x118386a64 WebCore::dispatchEventInDOM(WebCore::Event&, WebCore::EventPath const&, WebCore::WindowEventContext&)
12  0x1183865b0 WebCore::EventDispatcher::dispatchEvent(WebCore::Node*, WTF::PassRefPtr<WebCore::Event>)
13  0x1190ad11d WebCore::Node::dispatchEvent(WTF::PassRefPtr<WebCore::Event>)
14  0x117d15a42 WebCore::AnimationControllerPrivate::fireEventsAndUpdateStyle()
15  0x117d15056 WebCore::AnimationControllerPrivate::animationTimerFired(WebCore::Timer<WebCore::AnimationControllerPrivate>*)
16  0x117d21213 WebCore::Timer<WebCore::AnimationControllerPrivate>::fired()
17  0x11986f013 WebCore::ThreadTimers::sharedTimerFiredInternal()
18  0x11986ed29 WebCore::ThreadTimers::sharedTimerFired()
19  0x1195b1b13 WebCore::timerFired(__CFRunLoopTimer*, void*)
20  0x1091f2724 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
21  0x1091f225f __CFRunLoopDoTimer
22  0x10926376a __CFRunLoopDoTimers
23  0x1091adaa5 __CFRunLoopRun
24  0x1091ad275 CFRunLoopRunSpecific
25  0x10dc31f0d RunCurrentEventLoopInMode
26  0x10dc31cb7 ReceiveNextEventCommon
27  0x10dc31abc _BlockUntilNextEventMatchingListInModeWithFilter
28  0x10c22428e _DPSNextEvent
29  0x10c2238db -[NSApplication nextEventMatchingMask:untilDate:inMode:dequeue:]
30  0x10c2179cc -[NSApplication run]
31  0x10c202803 NSApplicationMain
@burg
Copy link
Owner Author

burg commented Apr 1, 2014

@burg burg closed this as completed Apr 1, 2014
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

1 participant