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 window.postMessage between unrelated iframes #407

Closed
burg opened this issue Oct 30, 2013 · 1 comment
Closed

Nondeterminism in window.postMessage between unrelated iframes #407

burg opened this issue Oct 30, 2013 · 1 comment

Comments

@burg
Copy link
Owner

burg commented Oct 30, 2013

Background: https://developer.mozilla.org/en-US/docs/Web/API/Window.postMessage

It sometimes is used on http://www.eyecon.ro/colorpicker/, in particular on the zrt_lookup.html iframe.

It should be straightforward to capture and replay this.


ReplayEvents         --->Dispatching DOM event: type=load, target=0/node[0x7faa47a1a8a0] IMG
                     --->---> Function Call: http://www.google-analytics.com/urchin.js:226, target=0/frame[0x7faa41820f30]
ReplayEvents         --->Dispatching DOM event: type=message, target=1/window[0x7faa47e929f0] http://www.eyecon.ro/colorpicker/
ASSERTION FAILED: withinInputExtent()
/Users/burg/repos/timelapse/Source/WebCore/replay/CaptureInputIterator.cpp(89) : virtual void WebCore::CaptureInputIterator::incrementExecutionTicks()
1   0x10dc00e50 WTFCrash
2   0x1106b14e5 WebCore::CaptureInputIterator::incrementExecutionTicks()
3   0x1106a92a9 WebCore::ReplayController::willDispatchEvent(WebCore::Event const&, WebCore::Frame*, WebCore::PositionMark const&)
4   0x1106af384 WebCore::InspectorReplayAgent::willDispatchEvent(WebCore::Event const&, WebCore::Frame*)
5   0x10f66c2c4 WebCore::InspectorInstrumentation::willDispatchEventImpl(WebCore::InstrumentingAgents*, WebCore::Event const&, bool, WebCore::Document*)
6   0x10f1b54c5 WebCore::InspectorInstrumentation::willDispatchEvent(WebCore::Document*, WebCore::Event const&, bool)
7   0x10f1b4cc5 WebCore::EventTarget::fireEventListeners(WebCore::Event*, WebCore::EventTargetData*, WTF::Vector<WebCore::RegisteredEventListener, 1ul, WTF::CrashOnOverflow>&)
8   0x10f1b472e WebCore::EventTarget::fireEventListeners(WebCore::Event*)
9   0x10f1b45a7 WebCore::EventTarget::dispatchEvent(WTF::PassRefPtr<WebCore::Event>)
10  0x10f0fe27b WebCore::DOMWindow::dispatchMessageEventWithOriginCheck(WebCore::SecurityOrigin*, WTF::PassRefPtr<WebCore::Event>, WTF::PassRefPtr<WebCore::ScriptCallStack>)
11  0x10f0fe02c WebCore::DOMWindow::postMessageTimerFired(WTF::PassOwnPtr<WebCore::PostMessageTimer>)
12  0x10f10dd03 WebCore::PostMessageTimer::fired()
13  0x1104e2543 WebCore::ThreadTimers::sharedTimerFiredInternal()
14  0x1104e2259 WebCore::ThreadTimers::sharedTimerFired()
15  0x110270e73 WebCore::timerFired(__CFRunLoopTimer*, void*)
16  0x7fff8ed6b804 __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__
@burg
Copy link
Owner Author

burg commented Oct 31, 2013

Strategy: make a new ReplayableTimer class, and have it be registered with AsyncEventProxy. Destruction causes unregistration (?). This should probably happen for network resources too.

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