Bug 79106 - Web Inspector: timeline hangs on a page with deep chain of nested events.
Summary: Web Inspector: timeline hangs on a page with deep chain of nested events.
Status: RESOLVED FIXED
Alias: None
Product: WebKit
Classification: Unclassified
Component: Web Inspector (Deprecated) (show other bugs)
Version: 528+ (Nightly build)
Hardware: All All
: P2 Normal
Assignee: Yury Semikhatsky
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2012-02-21 07:04 PST by Yury Semikhatsky
Modified: 2012-02-24 10:50 PST (History)
10 users (show)

See Also:


Attachments
Test page (122 bytes, text/html)
2012-02-21 07:04 PST, Yury Semikhatsky
no flags Details
Patch (5.42 KB, patch)
2012-02-21 07:08 PST, Yury Semikhatsky
pfeldman: review+
Details | Formatted Diff | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Yury Semikhatsky 2012-02-21 07:04:40 PST
Created attachment 127963 [details]
Test page

Try to run timeline on the attached page.

Result:
After awhile Timeline will hang. Stack overflow exception in the front-end.
Comment 1 Yury Semikhatsky 2012-02-21 07:08:21 PST
Created attachment 127967 [details]
Patch
Comment 2 Yury Semikhatsky 2012-02-21 08:14:11 PST
Committed r108355: <http://trac.webkit.org/changeset/108355>
Comment 3 Timothy Hatcher 2012-02-24 10:40:33 PST
How are timers nesting anyway? I thought they had to return to the run loop before firing the next timer. I think the fact that the timeline nests them should be considered a bug.
Comment 4 Pavel Feldman 2012-02-24 10:50:42 PST
(In reply to comment #3)
> How are timers nesting anyway? I thought they had to return to the run loop before firing the next timer. I think the fact that the timeline nests them should be considered a bug.

There is a timeline mode (turned on by default) that binds asynchronous events to their causes. As a result, Timer Fire falls to under the Set Timeout. In case animation is implemented as a series of such events, they all form a giant connected branch. It draws us out of stack bounds. There is now a way to disable this binding.