Practical AJAX Race Detection For JavaScript Web Applications
Christoffer Quist Adamsen, Anders Møller, Saba Alimadadi, Frank Tip
saba@northeastern.edu
Practical AJAX Race Detection For JavaScript Web Applications - - PowerPoint PPT Presentation
Practical AJAX Race Detection For JavaScript Web Applications Christoffer Quist Adamsen, Anders Mller, Saba Alimadadi, Frank Tip saba@northeastern.edu J ava S cript 69.8 323,938 222,852 45.3 JS Java JS Java popularity % active
Practical AJAX Race Detection For JavaScript Web Applications
Christoffer Quist Adamsen, Anders Møller, Saba Alimadadi, Frank Tip
saba@northeastern.edu
JS Java
222,852 323,938
JS Java
45.3 69.8
popularity % active repositories
function addRemoveFilter (fId) { filters = toggleFilter(fId); url = createUrl(server, filters); $.ajax({ url: url, success: updateStationData }); }
Diesel Car Wash simplified and modified example from chevronwithtechron.com
client server
request response request response
car wash car wash car wash, diesel car wash, diesel
click click
function addRemoveFilter (fId) { filters = toggleFilter(fId); url = createUrl(server, filters); $.ajax({ url: url, success: updateStationData }); }
Diesel Car Wash simplified and modified example from chevronwithtechron.com
client server
request response request response
car wash car wash car wash, diesel car wash, diesel
click click
client server
request response request response
car wash car wash car wash, diesel car wash, diesel
function addRemoveFilter (fId) { filters = toggleFilter(fId); url = createUrl(server, filters); $.ajax({ url: url, success: updateStationData }); }
Diesel Car Wash simplified and modified example from chevronwithtechron.com
client server
request response request response
car wash car wash car wash, diesel car wash, diesel
click click
client server
request response request response
car wash car wash car wash, diesel car wash, diesel
client server
request response request response
car wash car wash car wash, diesel car wash, diesel
Zheng et al., 2011 Petrov et al., 2012 Raychev et al., 2013 Hong et al., 2014 Jensen et al., 2015 Mutlu et al., 2015 Wang et al., 2016 Zhang & Wang, 2017 Adamsen et al., 2017a, 2017b
detecting harmful races reducing benign warnings providing helpful reports performance and practicality
application user events event races
AXRacer J A J
Instrument automatically Trigger user events Generate event traces Create event graphs Find event conflicts
application user events
AXRacer J A J
Instrument automatically Trigger user events Generate event traces Create event graphs Find event conflicts
application user events
AXRacer J A J
Instrument automatically Trigger user events Generate event traces Create event graphs Find event conflicts
application user events
v1 v2 v3 response received response loaded happens before click (x, y, w, h) (x’, y’, w’, h’)AXRacer J A J
Instrument automatically Trigger user events Generate event traces Create event graphs Find event conflicts
v1 v3 (x, y, w, h) (x’, y’, w’, h’)AXRacer J A J
application user events
potentially conflicted events event races
synchronous mode adverse mode
v v’s consequences w w’s consequences v v’s consequences w w’s consequencesAXRacer J A J
hi bye
Does help us find and understand
AXRacer J J A
AX A J J
races?
12 web applications, 20 pages
effectiveness
7 65 80
Pass Fail False Positive
152 tests
false positives
7 65 80
Pass Fail False Positive
152 tests
effectiveness
7 65 80
Pass Fail False Positive
152 tests dataset queries interactive maps auto completion
race characteristics
effectiveness
comparison
7 65 80
Pass Fail False Positive
https://eventracer.org/
EventRacer*
*
Raychev et al. OOPSLA’13
2 events ~130,000 races ~37,000 locations ~740 uncovered
152 tests
usefulness
performance
phase 1 phase 2 (per test)
duration (s)
8 18
avg: 26s page load execution
duration (s)
5 28 36
avg: 69s page load execution report
common developer practices
https://github.com/cs-au-dk/ajaxracer
@saba_a