Closed Bug 702093 Opened 14 years ago Closed 14 years ago

Sporadic "TEST-UNEXPECTED-FAIL | chrome://mochitests/content/chrome/image/test/mochitest/test_bullet_animation.html | timing out after 120000ms. Animated image still doesn't look correct, after call #2150 to onStopFrame"

Categories

(Core :: Graphics: ImageLib, defect)

x86_64
macOS
defect
Not set
normal

Tracking

()

RESOLVED FIXED

People

(Reporter: dholbert, Assigned: jwir3)

References

()

Details

(Keywords: intermittent-failure, Whiteboard: [do not close when merging to m-c])

Attachments

(4 files, 4 obsolete files)

Looks like a we've got a new random orange (in a test that landed in the last 2 weeks, so it might have already been an issue when the test landed but it's just very low-frequency): { 10968 ERROR TEST-UNEXPECTED-FAIL | chrome://mochitests/content/chrome/image/test/mochitest/test_bullet_animation.html | timing out after 120000ms. Animated image still doesn't look correct, after call #2150 to onStopFrame Rev3 MacOSX Snow Leopard 10.6.2 mozilla-inbound opt test mochitest-other on 2011-11-12 22:30:51 PST for push 2da841d96925 https://tbpl.mozilla.org/php/getParsedLog.php?id=7372588&tree=Mozilla-Inbound }
Assignee: nobody → sjohnson
(In reply to Daniel Holbert [:dholbert] from comment #0) > Looks like a we've got a new random orange (in a test that landed in the > last 2 weeks) To clarify -- actually, this test just (re-)landed on 11/9 -- I initially thought it was landed on 11/1 because hg log lies and shows 11/1 as the land-date. (I think that happens because that's when it *previously* landed (and it didn't change between that landing and the more recent landing)... Basically, hg log seems to just be broken when a file is backed-out and re-landed without changing.)
I also changed the "call # to onStopFrame" comment to "poll #", so that it's more clear what is actually happening from the debug output.
Attachment #574187 - Flags: review?(dholbert)
Comment on attachment 574187 [details] [diff] [review] b702093: Patch that adds telemetry to better diagnose this problem. > ok(false, "timing out after " + currentTest.timeout + "ms. " >- + "Animated image still doesn't look correct, " + "after call #" >- + currentTest.onStopFrameCounter + " to onStopFrame"); >+ + "Animated image still doesn't look correct, " + "after poll #" >+ + currentTest.onStopFrameCounter); The "+" between "correct" and "after" is unnecessary. Can you just make "correct, after poll #" a single continuous string? (This affects one other spot in the patch, too. Also -- based on this string-change, it sounds like "onStopFrameCounter" is no longer an accurate name for this variable -- perhaps that should be renamed to "pollCounter" or something? >+ if (currentTest.currentSnapshotDebug) { >+ currentTest.outputDebugInfo("Snapshot #" + currentTest.onStopFrameCounter, >+ "snap#" + currentTest.onStopFrameCounter, The second parameter there ("snap#NN") ends up getting used as an element ID, inside outputDebugInfo(), I think. However, I don't think "#" is a valid character for use in an ID. So maybe this needs s/snap#/snapNum/ or something? >- this.outputDebugInfo(dataString, 'snap' + this.onStopFrameCounter, >- currentSnapshot.toDataURL()); >+ //this.outputDebugInfo(dataString, 'snap' + this.onStopFrameCounter, >+ // currentSnapshot.toDataURL()); >+ this.currentSnapshotDebug = currentSnapshot.toDataURL(); Should these commented-out lines just be deleted? Also: "currentSnapshotDebug" is a bit generic-sounding, to me at least -- it doesn't convey that it's a data URI. (It sounds like it could be a generic container for debugging info) When reading the patch, I wasn't sure what sort of data it contained, until I reached this toDataURL line. Maybe rename that variable to "debugDataURI" or something? Not a big deal, you can also leave it if you like. > if (result[0]) { > // SUCCESS! >- ok(true, "Animated image looks correct, " + "at call #" >- + this.onStopFrameCounter + " to onStopFrame"); >+ ok(true, "Animated image looks correct, " + "at poll #" >+ + this.onStopFrameCounter); As above, remove the needless string-concatenation after "correct," here.
Also -- I'd say to use s/telemetry/debugging info/ in the commit message. (I think of "telemetry" as "perf statistics")
(or rather, I think of "telemetry" as collected statistics/metrics, whereas this patch is about printing out screenshots)
Ok, addressed the review comments in this latest version.
Attachment #574187 - Attachment is obsolete: true
Attachment #574187 - Flags: review?(dholbert)
Attachment #574196 - Flags: review?(dholbert)
Comment on attachment 574196 [details] [diff] [review] b702093 (v2): Patch that adds debugging info to better diagnose this problem. >- var dataString = "Snapshot #" + this.onStopFrameCounter; >- this.outputDebugInfo(dataString, 'snap' + this.onStopFrameCounter, >- currentSnapshot.toDataURL()); >+ var dataString = "Snapshot #" + this.pollCounter; >+ >+ this.currentSnapshotDataURI = currentSnapshot.toDataURL(); > > if (result[0]) { > // SUCCESS! >- ok(true, "Animated image looks correct, " + "at call #" >- + this.onStopFrameCounter + " to onStopFrame"); >+ ok(true, "Animated image looks correct, at poll #" >+ + this.pollCounter); > > this.cleanUpAndFinish(); > } > } else { Looks like "dataString" is now completely unused and can just be dropped entirely. This applies to 2 places in the patch. r=me with that addressed.
Attachment #574196 - Flags: review?(dholbert) → review+
Keywords: checkin-needed
Keywords: checkin-needed
OS: Linux → Mac OS X
Whiteboard: [orange] → [orange][do not close when merging to m-c]
(In reply to Daniel Holbert [:dholbert] from comment #9) > Landed patch that adds debugging info: > https://hg.mozilla.org/integration/mozilla-inbound/rev/05a5faf71def https://hg.mozilla.org/mozilla-central/rev/05a5faf71def
Attached image Reference Image
Hmm... so this is really strange. The test takes three images - a "clean" image, to verify that the image for the bullet has actually loaded, a "reference" image, which should be a bullet with a static frame that represents the last frame of the animation, and a series of "snap" images, each of which represents the image of the animation at a certain time period (it polls). So, this attachment is the snapshot of the reference image, which is none of these - it should be an image that matches the snap image (which I'll post next). It looks like what it's rendering is the default bullet image, but adjusted in size to the 100x100 of the image that it's supposed to load.
This is the snapshot, after call #2157 to the polling function. This image is correct.
Attachment #574658 - Flags: review?(dholbert)
Attachment #574658 - Attachment is obsolete: true
Attachment #574658 - Flags: review?(dholbert)
Attachment #574686 - Flags: review?(dholbert)
Attachment #574686 - Attachment is obsolete: true
Attachment #574686 - Flags: review?(dholbert)
Attachment #574691 - Flags: review?(dholbert)
Comment on attachment 574691 [details] [diff] [review] b702093-fix (v3) - Potential fix for this bug >+AnimationTest.prototype.preloadImage = function() >+{ > if (this.srcAttr) { > this.myImage = new Image(); > this.myImage.onload = imageLoadCallback; > this.myImage.src = this.srcAttr; > } else { > gIsImageLoaded = true; >+ this.continueTest(); > } Per IRL discussion, it might be cleaner to have this lower clause just directly call "imageLoadCallback", if you like. >+AnimationTest.prototype.beginTest = function() > { > SimpleTest.waitForExplicitFinish(); > > currentTest = this; >+ this.preloadImage(); >+}; > >- this.takeReferenceSnapshot(); >- >+AnimationTest.prototype.continueTest = function() >+{ So now the test is split up into "beginTest" and "continueTest", and those are connected via "preloadImage". To make that control-flow a little more clear, could you add a comment near "this.preloadImage();" saying something like: // This triggers a (sync or async) call to continueTest Otherwise looks good! r=me
Attachment #574691 - Flags: review?(dholbert) → review+
actually, as just discussed, gIsImageLoaded is unused, so we can drop that, and then replace all calls to "imageLoadCallback" with "continueTest" r=me stands with that tweak.
Landed on inbound: https://hg.mozilla.org/integration/mozilla-inbound/rev/47131206c09f Again, please do not close when merging to m-c. This may fix the bug, or it might not we need to see if the intermittent oranges go away.
Depends on: 708443
I'm closing this as fixed, as I haven't seen another random orange in the last 3 weeks. Please reopen if additional random oranges appear.
Status: NEW → RESOLVED
Closed: 14 years ago
Resolution: --- → FIXED
Whiteboard: [orange][do not close when merging to m-c] → [do not close when merging to m-c]
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: