{ "id": "86996", "key": "TIMOB-7813", "fields": { "issuetype": { "id": "1", "description": "A problem which impairs or prevents the functions of the product.", "name": "Bug", "subtask": false }, "project": { "id": "10153", "key": "TIMOB", "name": "Titanium SDK/CLI", "projectCategory": { "id": "10100", "description": "Titanium and related SDKs used in application development", "name": "Client" } }, "fixVersions": [ { "id": "12097", "description": "", "name": "Sprint 2012-05", "archived": true, "released": true, "releaseDate": "2012-03-11" }, { "id": "12593", "name": "Release 2.0.0", "archived": false, "released": true, "releaseDate": "2012-03-30" } ], "resolution": { "id": "1", "description": "A fix for this issue is checked into the tree and tested.", "name": "Fixed" }, "resolutiondate": "2012-03-08T11:21:19.000+0000", "created": "2012-02-25T10:50:19.000+0000", "priority": { "name": "Critical", "id": "1" }, "labels": [ "qe-and021312", "regression", "release-note-2.0.0" ], "versions": [ { "id": "13070", "description": "Release 1.8 Service Pack 2", "name": "Release 1.8.2", "archived": true, "released": true, "releaseDate": "2012-02-29" } ], "issuelinks": [], "assignee": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "updated": "2012-03-12T11:06:03.000+0000", "status": { "description": "The issue is considered finished, the resolution is correct. Issues which are closed can be reopened.", "name": "Closed", "id": "6", "statusCategory": { "id": 3, "key": "done", "colorName": "green", "name": "Done" } }, "components": [ { "id": "10202", "name": "Android", "description": "Android Platform" } ], "description": "Steps to Reproduce:\r\n1. Launch KS > Platform > Set Interval (timer)\r\n2. Let the test run up to 1000, back and restart\r\n3. Repeat step 2 until the test because slow and jumpy (~10-15 times)\r\n\r\nActual:\r\nThe set interval is slow and jumpy\r\n\r\nExpected:\r\nThe set interval should be fast and not jumpy\r\n\r\nNote:\r\nRestarting KS and just going to Set Interval test you do not encounter the issue.", "attachment": [], "flagged": false, "summary": "Android: Interval - v8 only - When running through the platform tab in KS, set interval becomes very slow and jumpy", "creator": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "subtasks": [], "reporter": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "environment": "Studio: 1.0.9.201202141208\r\nSDK: 1.8.2.v20120223174636\r\nDevice: Nexus Galaxy 4.0.2, LG Slate 3.1, Nexus S 2.3.6", "comment": { "comments": [ { "id": "184398", "author": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Additional info: Just running the Set Interval and timing how long it takes to hit 1000, increments each time the test is re-ran\r\n1st: 22.19 seconds\r\n2nd: 29.29 seconds\r\n3rd: 31.86 seconds\r\n\r\nWhen ran with 1.8.1 it takes ~ 10 seconds each run even after relaunch", "updateAuthor": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-02-27T13:44:29.000+0000", "updated": "2012-02-27T15:11:54.000+0000" }, { "id": "184418", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "Interestingly, it doesn't appear to happen with 1.8.1. So something between 1.8.1 and the version you mention in the description (from Feb 3rd, when the master branch was still 1.9.0) has caused this. I've also confirmed that it happens on the current (2.0.0) master branch and on the current (1.8.2) 1_8_X branch.\r\n\r\nStill investigating.", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2012-02-27T15:19:40.000+0000", "updated": "2012-02-27T15:19:40.000+0000" }, { "id": "184440", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "I've got it down to the line of code:\r\n\r\nhttps://github.com/appcelerator/titanium_mobile/blob/da5c15399033ed7c3a257fbc2cc141f4a0311a67/android/runtime/v8/src/java/org/appcelerator/kroll/runtime/v8/V8Runtime.java#L74\r\n\r\nThis is central to our memory management. I'll have to discuss with Josh.", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2012-02-27T18:33:26.000+0000", "updated": "2012-02-27T18:33:26.000+0000" }, { "id": "184442", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "An easy way to re-create for testing: On the platform tab, just go into and out of XHR 10 times (or more if you want to see the delay more). You don't even need to do anything once you get to the XHR window. Just in and out. Do it 20 times, then run to the Set Interval test.\r\n\r\nIt has nothing to do with the XHR tests, of course. You can go into any submenu of tests 10 times (even on a tab different than Platform) and see the same behavior. So it's like it's related to the number of objects that the idle time GC check in v8 has to examine, or something like that.", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2012-02-27T18:37:51.000+0000", "updated": "2012-02-27T18:39:58.000+0000" }, { "id": "185006", "author": { "name": "mattapperson", "key": "mattapperson", "displayName": "me@gmail.com", "active": true, "timeZone": "America/Los_Angeles" }, "body": "This is a blocker for several apps I am working on...", "updateAuthor": { "name": "mattapperson", "key": "mattapperson", "displayName": "me@gmail.com", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-03-05T08:04:01.000+0000", "updated": "2012-03-05T08:04:01.000+0000" }, { "id": "185283", "author": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "body": "PR ready\r\n\r\nhttps://github.com/appcelerator/titanium_mobile/pull/1577\r\n\r\nWe thereby reduce the impact of V8 GC calls. However since there is only one runtime thread, anything on that thread (Javascript calls, the V8 GC, etc.) that takes longer than a setInterval's interval will end up pushing back that interval a bit. (To put another way: the setInterval callback cannot be called until the runtime thread is free.)", "updateAuthor": { "name": "billdawson", "key": "billdawson", "displayName": "Bill Dawson", "active": true, "timeZone": "Europe/Berlin" }, "created": "2012-03-06T16:30:13.000+0000", "updated": "2012-03-06T16:30:13.000+0000" }, { "id": "186013", "author": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "body": "Tested on Nexus Galaxy 4.0.2 takes ~10 second to get to 1000 on every relaunch", "updateAuthor": { "name": "nhuynh", "key": "nhuynh", "displayName": "Natalie Huynh", "active": true, "timeZone": "America/Los_Angeles" }, "created": "2012-03-12T11:06:03.000+0000", "updated": "2012-03-12T11:06:03.000+0000" } ], "maxResults": 7, "total": 7, "startAt": 0 } } }