phetsims / unit-rates

"Unit Rates" is an educational simulation in HTML5, by PhET Interactive Simulations.
GNU General Public License v3.0
0 stars 2 forks source link

CT: Tried to insert a disposed Node #214

Closed pixelzoom closed 3 years ago

pixelzoom commented 5 years ago
unit-rates : xss-fuzz : run
Query: brand=phet&ea&fuzz&stringTest=xss&memoryLimit=1000
Uncaught Error: Assertion failed: Tried to insert a disposed Node
Error: Assertion failed: Tried to insert a disposed Node
    at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/assert/js/assert.js:22:13)
    at Node.insertChild (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/scenery/js/nodes/Node.js?:588:17)
    at Node.addChild (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/scenery/js/nodes/Node.js?:628:12)
    at ShoppingItem.animationCompletedCallback (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/unit-rates/js/shopping/view/ShoppingItemDragHandler.js?:194:25)
    at ShoppingItem.step (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/unit-rates/js/common/model/URMovable.js?:122:51)
    at FruitScene.step (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/unit-rates/js/shopping/model/ShoppingScene.js?:302:24)
    at ShoppingCategory.step (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/unit-rates/js/shopping/model/ShoppingCategory.js?:57:36)
    at ShoppingModel.step (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/unit-rates/js/shopping/model/ShoppingModel.js?:92:32)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/joist/js/Sim.js?:217:22
    at Action.execute (https://bayes.colorado.edu/continuous-testing/snapshot-1567847685135/axon/js/Action.js?:244:20)
id: Bayes Chrome
Approximately 9/7/2019, 5:14:45 AM
pixelzoom commented 4 years ago

This should be fixed by the above commit. I haven't been able to reproduce manually, and it occurs rarely in CT, so I'll give it a couple of weeks to see if it occurs again.

This has no negative consequences in the production version, so there's no need to cherry-pick to the release branch, and no need to regression test in the next QA cycle.

pixelzoom commented 4 years ago

Hmm.... Still happening, albeit very rarely.

unit-rates : fuzz : require.js : run
Query: brand=phet&ea&fuzz&memoryLimit=1000
Uncaught Error: Assertion failed: Tried to insert a disposed Node
Error: Assertion failed: Tried to insert a disposed Node
    at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/assert/js/assert.js?bust=1576989663760:22:13)
    at Node.insertChild (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/scenery/js/nodes/Node.js?bust=1576989663823:589:17)
    at Node.addChild (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/scenery/js/nodes/Node.js?bust=1576989663823:629:12)
    at ShoppingItem.animationCompletedCallback (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/unit-rates/js/shopping/view/ShoppingItemDragHandler.js?bust=1576989663823:196:25)
    at ShoppingItem.step (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/unit-rates/js/common/model/URMovable.js?bust=1576989663823:123:51)
    at FruitScene.step (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/unit-rates/js/shopping/model/ShoppingScene.js?bust=1576989663823:303:24)
    at ShoppingCategory.step (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/unit-rates/js/shopping/model/ShoppingCategory.js?bust=1576989663823:58:36)
    at ShoppingModel.step (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/unit-rates/js/shopping/model/ShoppingModel.js?bust=1576989663823:93:32)
    at https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/joist/js/Sim.js?bust=1576989663823:228:22
    at Action.execute (https://bayes.colorado.edu/continuous-testing/snapshot-1576979165487/axon/js/Action.js?bust=1576989663823:230:20)
id: Bayes Chrome
Approximately 12/21/2019, 6:46:05 PM
pixelzoom commented 4 years ago

The guard that I added in https://github.com/phetsims/unit-rates/commit/b7da895cd395f263a776ff510e85316aa588eb1f prevents an animation from being started for a disposed item. But it doesn't work if item is disposed while the animation is in progress, which appears to be what is happening here. I spent 15 minutes looking at ways to address this, and it's not straightforward. I could not reproduce manually, and it's a corner case that happens very infrequently.

So I'm going to defer this until a new release branch is created for this sim sometime in the future.

pixelzoom commented 4 years ago

As of 3/12/2020, I haven't seen this Error for many weeks.

pixelzoom commented 4 years ago

Still no sign of this Error as of 4/7/20. Closing.

pixelzoom commented 4 years ago

Reopening. This hadn't occurred for a long long time, then occurred once on 7/22/2020 @ 10:44:49 PM.

unit-rates : fuzz : unbuilt
https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/unit-rates/unit-rates_en.html?continuousTest=%7B%22test%22%3A%5B%22unit-rates%22%2C%22fuzz%22%2C%22unbuilt%22%5D%2C%22snapshotName%22%3A%22snapshot-1595479489296%22%2C%22timestamp%22%3A1595514420247%7D&brand=phet&ea&fuzz&memoryLimit=1000
Query: brand=phet&ea&fuzz&memoryLimit=1000
Uncaught Error: Assertion failed: Tried to insert a disposed Node
Error: Assertion failed: Tried to insert a disposed Node
at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/assert/js/assert.js:22:13)
at Node.insertChild (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/scenery/js/nodes/Node.js:617:15)
at Node.addChild (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/scenery/js/nodes/Node.js:657:10)
at ShoppingItem.animationCompletedCallback (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/unit-rates/js/shopping/view/ShoppingItemDragHandler.js:195:24)
at ShoppingItem.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/unit-rates/js/common/model/URMovable.js:116:49)
at FruitScene.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/unit-rates/js/shopping/model/ShoppingScene.js:288:22)
at ShoppingCategory.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/unit-rates/js/shopping/model/ShoppingCategory.js:58:38)
at ShoppingModel.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/unit-rates/js/shopping/model/ShoppingModel.js:90:30)
at https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/joist/js/Sim.js:289:20
at Action.execute (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1595479489296/axon/js/Action.js:225:18)
id: Bayes Chrome
Snapshot from 7/22/2020, 10:44:49 PM
pixelzoom commented 3 years ago

Next occurrence was ~4 months later, on 11/7/2020, see below.

unit-rates : fuzz : unbuilt
https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/unit-rates/unit-rates_en.html?continuousTest=%7B%22test%22%3A%5B%22unit-rates%22%2C%22fuzz%22%2C%22unbuilt%22%5D%2C%22snapshotName%22%3A%22snapshot-1604755274496%22%2C%22timestamp%22%3A1604868474409%7D&brand=phet&ea&fuzz&memoryLimit=1000
Query: brand=phet&ea&fuzz&memoryLimit=1000
Uncaught Error: Assertion failed: Tried to insert a disposed Node
Error: Assertion failed: Tried to insert a disposed Node
at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/assert/js/assert.js:22:13)
at Node.insertChild (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/scenery/js/nodes/Node.js:645:15)
at Node.addChild (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/scenery/js/nodes/Node.js:685:10)
at ShoppingItem.animationCompletedCallback (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/unit-rates/js/shopping/view/ShoppingItemDragListener.js:189:23)
at ShoppingItem.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/unit-rates/js/common/model/URMovable.js:116:49)
at FruitScene.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/unit-rates/js/shopping/model/ShoppingScene.js:288:22)
at ShoppingCategory.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/unit-rates/js/shopping/model/ShoppingCategory.js:58:38)
at ShoppingModel.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/unit-rates/js/shopping/model/ShoppingModel.js:90:30)
at https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/joist/js/Sim.js:281:22
at Action.execute (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1604755274496/axon/js/Action.js:225:18)
id: Bayes Chrome
Snapshot from 11/7/2020, 6:21:14 AM
KatieWoe commented 3 years ago

2/8/21

unit-rates : multitouch-fuzz : unbuilt
https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/unit-rates/unit-rates_en.html?continuousTest=%7B%22test%22%3A%5B%22unit-rates%22%2C%22multitouch-fuzz%22%2C%22unbuilt%22%5D%2C%22snapshotName%22%3A%22snapshot-1612753303239%22%2C%22timestamp%22%3A1612772455197%7D&brand=phet&ea&fuzz&fuzzPointers=2&memoryLimit=1000
Query: brand=phet&ea&fuzz&fuzzPointers=2&memoryLimit=1000
Uncaught Error: Assertion failed: Tried to insert a disposed Node
Error: Assertion failed: Tried to insert a disposed Node
at window.assertions.assertFunction (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/assert/js/assert.js:25:13)
at Node.insertChild (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/scenery/js/nodes/Node.js:612:15)
at Node.addChild (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/scenery/js/nodes/Node.js:652:10)
at ShoppingItem.animationCompletedCallback (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/unit-rates/js/shopping/view/ShoppingItemDragListener.js:189:23)
at ShoppingItem.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/unit-rates/js/common/model/URMovable.js:116:49)
at FruitScene.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/unit-rates/js/shopping/model/ShoppingScene.js:288:22)
at ShoppingCategory.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/unit-rates/js/shopping/model/ShoppingCategory.js:59:38)
at ShoppingModel.step (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/unit-rates/js/shopping/model/ShoppingModel.js:90:30)
at https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/joist/js/Sim.js:282:22
at Action.execute (https://bayes.colorado.edu/continuous-testing/ct-snapshots/1612753303239/axon/js/Action.js:225:18)
id: Bayes Chrome
Snapshot from 2/7/2021, 8:01:43 PM
pixelzoom commented 3 years ago

Fixed in the above commit. Any attempt to animate a disposed item Node is now ignored. I alos reverted https://github.com/phetsims/unit-rates/commit/b7da895cd395f263a776ff510e85316aa588eb1f, because it was not the proper place to be addressing the problem.

Since this happens rarely in CT, I'm going to close this issue immediately. If it resurfaces, we can reopen.