WebKit Bugzilla
New
Browse
Log In
×
Sign in with GitHub
or
Remember my login
Create Account
·
Forgot Password
Forgotten password account recovery
RESOLVED FIXED
49045
LayoutTests/svg/animations/animate-path-nested-transforms.html causes assertion in debug mode.
https://bugs.webkit.org/show_bug.cgi?id=49045
Summary
LayoutTests/svg/animations/animate-path-nested-transforms.html causes asserti...
Shane Stephens
Reported
Friday, November 5, 2010 2:26:06 AM UTC
LayoutTests/svg/animations/animate-path-nested-transforms.html causes assertion in debug mode.
Attachments
Patch
(3.53 KB, patch)
2010-11-04 18:27 PDT
,
Shane Stephens
no flags
Details
Formatted Diff
Diff
Patch
(2.54 KB, patch)
2011-06-01 15:22 PDT
,
Rob Buis
zimmermann
: review+
Details
Formatted Diff
Diff
Show Obsolete
(1)
View All
Add attachment
proposed patch, testcase, etc.
Shane Stephens
Comment 1
Friday, November 5, 2010 2:27:55 AM UTC
Created
attachment 73024
[details]
Patch
Dumitru Daniliuc
Comment 2
Friday, November 5, 2010 3:54:40 AM UTC
Comment on
attachment 73024
[details]
Patch i don't think we should be changing the test (it's ok for it to fail for now, i added it to test_expectations). instead, we should try to find somebody familiar with this code and make them take a look at this issue and fix it. i'll try to find a good owner for this bug tomorrow, unless you want to do it. can you please describe the problem we're observing, and ideally, how it can be reproduced?
Dumitru Daniliuc
Comment 3
Friday, November 5, 2010 4:04:03 AM UTC
From
http://code.google.com/p/chromium/issues/detail?id=61978
: "OK, looks like there's a bug somewhere in the animation test framework that makes it nasty to ask for the location of stuff at 0.01 seconds if executing in debug mode." Antti, Simon, is this something you're familiar with?
Shane Stephens
Comment 4
Friday, November 5, 2010 5:54:08 AM UTC
More details: to use the animation framework you make a call like: function executeTest() { const expectedValues = [ ["animation", 0, "rect", startSample], ["animation", 0.1, "rect", startAnimateSample], ["animation", 1.00, "rect", endSample] ]; runAnimationTest(expectedValues); } I believe this uses a set of extra hooks into the SMILAnimation code (WebCore::SVGDocumentExtensions::sampleAnimationAtTime?) to exactly control the animation state. if the time value (here 0, 0.1 and 1.00) is 0.01, then in debug mode there's an assert in SVGSMILElement::progress here: if (elapsed < m_intervalBegin) { ASSERT(m_activeState != Active); if (m_activeState == Frozen && resultElement) updateAnimation(m_lastPercent, m_lastRepeat, resultElement); m_nextProgressTime = m_intervalBegin; return; } I didn't get a chance to characterize further than this. Hope this helps.
Martin Robinson
Comment 5
Sunday, November 7, 2010 4:39:05 AM UTC
***
Bug 49065
has been marked as a duplicate of this bug. ***
Nikolas Zimmermann
Comment 6
Wednesday, November 10, 2010 8:16:47 AM UTC
(In reply to
comment #4
)
> More details: to use the animation framework you make a call like: > > function executeTest() { > const expectedValues = [ > ["animation", 0, "rect", startSample], > ["animation", 0.1, "rect", startAnimateSample], > ["animation", 1.00, "rect", endSample] > ]; > > runAnimationTest(expectedValues); > } > > I believe this uses a set of extra hooks into the SMILAnimation code (WebCore::SVGDocumentExtensions::sampleAnimationAtTime?) to exactly control the animation state.
Correct.
> > if the time value (here 0, 0.1 and 1.00) is 0.01, then in debug mode there's an assert in SVGSMILElement::progress here: > > if (elapsed < m_intervalBegin) { > ASSERT(m_activeState != Active); > if (m_activeState == Frozen && resultElement) > updateAnimation(m_lastPercent, m_lastRepeat, resultElement); > m_nextProgressTime = m_intervalBegin; > return; > } > > I didn't get a chance to characterize further than this. Hope this helps.
Thanks, I'll have a look at this as soon as I'll find some time.
Nikolas Zimmermann
Comment 7
Wednesday, November 10, 2010 10:10:18 AM UTC
This also affects the new testcase provided in
bug 48215
.
Dirk Schulze
Comment 8
Sunday, January 23, 2011 10:25:26 PM UTC
I must have missed this bug. It should really get fixed :-P
Dirk Schulze
Comment 9
Sunday, January 23, 2011 10:29:23 PM UTC
***
Bug 48987
has been marked as a duplicate of this bug. ***
Martin Robinson
Comment 10
Thursday, February 17, 2011 12:59:15 AM UTC
Thanks for looking into this. Please remember to unskip svg/animations/animate-path-nested-transforms.html on GTK+ when you fix the issue.
Rob Buis
Comment 11
Wednesday, June 1, 2011 4:45:09 PM UTC
***
Bug 61798
has been marked as a duplicate of this bug. ***
Rob Buis
Comment 12
Wednesday, June 1, 2011 10:33:39 PM UTC
I think I know what goes wrong. First, the id value in the expected values is wrong for this test. That causes a change in this code section: (SMILTimeContainer::updateAnimations): SVGElement* targetElement = animation->targetElement(); // FIXME: This should probably be using getIdAttribute instead of idForStyleResolution. if (!targetElement || !targetElement->hasID() || targetElement->idForStyleResolution() != m_nextSamplingTarget) continue; samplingDiff = animation->intervalBegin(); Because these tests are only started on click, and intervalBegin() in that case is small but not 0, it is important for the later code calling progress to take this into account. Again, this is caused by a wrong id value in the expected results, as m_nextSamplingTarget will mismatch. For now I propose to just fix the tests. The only alternative I can think of is to give a warning or even assert when the id is not found at all? Cheers, Rob.
Rob Buis
Comment 13
Wednesday, June 1, 2011 11:22:13 PM UTC
Created
attachment 95674
[details]
Patch
Nikolas Zimmermann
Comment 14
Thursday, June 2, 2011 12:21:43 AM UTC
Comment on
attachment 95674
[details]
Patch Good catch, r=me.
Rob Buis
Comment 15
Thursday, June 2, 2011 3:21:10 PM UTC
Committed
r87907
: <
http://trac.webkit.org/changeset/87907
>
Note
You need to
log in
before you can comment on or make changes to this bug.
Top of Page
Format For Printing
XML
Clone This Bug