Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

New test failures in test-perf #20127

Closed
asajeffrey opened this issue Feb 26, 2018 · 19 comments
Closed

New test failures in test-perf #20127

asajeffrey opened this issue Feb 26, 2018 · 19 comments

Comments

@asajeffrey
Copy link
Member

@asajeffrey asajeffrey commented Feb 26, 2018

We started getting more test failures in test-perf, starting 2018-01-20. https://datastudio.google.com/u/0/reporting/1b16G5pQNp2lE-1nNcPlOure9G0eR36cq/page/heOK

screenshot-2018-2-26 servo test-perf

An example that used to pass is http:/localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html. To replicate this

  1. Grab the nightly builds http://servo-builds.s3.amazonaws.com/nightly/linux/2018-01-19T01:01:57Z-servo-tech-demo.tar.gz and http://servo-builds.s3.amazonaws.com/nightly/linux/2018-01-20T00:56:21Z-servo-tech-demo.tar.gz.
  2. Start a web server inside the etc/ci/performance directory, e.g. python -m SimpleHTTPServer 8123
  3. Point servo at http:/localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html.

The test fails nondeterministically, sometimes rendering and sometimes just producing a blank page.

There are no obvious culprits in the commits after 6fc71a7 and before b62b51a, which are the ones for Jan 19.

My suspicion is that this is a timing-sensitive deadlock, and that some commit on Jan 19 happened to change the timing such that the deadlock happens on CI.

My attempts to diagnose this haven't borne any fruit. I did once get a panic:

$ ../../../target/release/servo-2018-01-20 http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html
assertion failed: *body == ResponseBody::Empty (thread fetch thread for http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php, at components/net/fetch/methods.rs:438)
ERROR:servo: assertion failed: *body == ResponseBody::Empty
called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }" (thread fetch worker thread, at libcore/result.rs:916)
ERROR:servo: called `Result::unwrap()` on an `Err` value: "PoisonError { inner: .. }"

which seems to be the same panic as #19707 but I don't know if this is related. Most runs deadlock, they don't panic.

IRC conversation with @jdm at https://mozilla.logbot.info/servo/20180226#c14363739

@jdm
Copy link
Member

@jdm jdm commented Feb 26, 2018

Given that there are various mutexes involved in the fetch code and the HTTP cache, it's plausible that there could be a deadlock hiding in there.

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 26, 2018

Adding in an old skule debugging println, there are some loads that are never unblocked:

$ ../../../target/release/servo http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 26, 2018

Comparing a successful run:

servo http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png")).
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")).
Blockers = []
Blockers = []

with an unsuccessful run:

servo http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]

there's loads started but never terminated.

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 26, 2018

Now with the finish_loads being traced:

servo http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.htmlFinished Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")]
Finished Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html")

so it looks like some image loads aren't finishing.

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 26, 2018

A successful run with finish_load being tracked:

servo http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html
Finished Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")]
Finished Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")
Blockers = [Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG")]
Terminating Some(Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG")).
Finished Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG")
Blockers = []
Blockers = []
@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 26, 2018

Ah:

servo http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html
Adding Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Adding Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Finished Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished Stylesheet("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Adding Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")]
Adding Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Finished Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/w/extensions-1.17/WikimediaMobile/MobileRedirect.js@8.2")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png")
Adding Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2")
Adding Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Finished Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")
Blockers = [PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/7/70/Rorschach_blot_01.jpg/200px-Rorschach_blot_01.jpg"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/8/86/1_white,_red_rounded_rectangle.svg/8px-1_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/6/6a/2_white,_red_rounded_rectangle.svg/9px-2_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/a/aa/3_white,_red_rounded_rectangle.svg/9px-3_white,_red_rounded_rectangle.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/5/5b/Hermann_Rorschach_c.1910.JPG/220px-Hermann_Rorschach_c.1910.JPG"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/common/images/magnify-clip.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/1/1c/Wiki_letter_w_cropped.svg/20px-Wiki_letter_w_cropped.svg.png"), Image("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/skins-1.17/vector/images/search-ltr.png@301-2"), Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php")]
Finished PageSource("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html")

with two lines both saying Adding Script("http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/bits.wikimedia.org/en.wikipedia.org/load.php").

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 27, 2018

Good news... on my laptop in the office, I can trigger this with a debug build! Yay, less stumbling around in the dark! A sample run ends with:

...
INFO:net::http_loader: response for http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/upload.wikimedia.org/wikipedia/commons/thumb/4/4a/Commons-logo.svg/30px-Commons-logo.svg.png
INFO:net::http_loader:  - Server: SimpleHTTP/0.6 Python/2.7.12
INFO:net::http_loader:  - Date: Tue, 27 Feb 2018 20:02:32 GMT
INFO:net::http_loader:  - Content-type: image/png
INFO:net::http_loader:  - Content-Length: 1593
INFO:net::http_loader:  - Last-Modified: Thu, 14 Sep 2017 22:01:44 GMT
DEBUG:script::dom::window: script: performing reflow for reason RefreshTick
DEBUG:script::dom::window: script: layout forked
INFO:script::dom::window: script: waiting on layout

So deadlock is looking quite likely, Script is waiting on layout which never completes. I wonder if script is holding a lock while doing this?

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 27, 2018

Aaand adding some extra debugging printlns to layout_thread:

            debug!("Sending webrender tx");
            self.webrender_api.send_transaction(self.webrender_document, txn);
            debug!("Finished webrender tx");

oh look:

...
DEBUG:script::dom::window: script: performing reflow for reason RefreshTick
DEBUG:script::dom::window: script: layout forked
INFO:script::dom::window: script: waiting on layout
DEBUG:layout_thread: layout: received layout request for: http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html
DEBUG:layout_thread: Number of objects in DOM: 2899
DEBUG:layout_thread: layout: parallel? true
DEBUG:layout_thread: layout: processing reflow request for: <html> (0x7ff89a21d130) (http://localhost:8123/page_load_test/tp5n/en.wikipedia.org/en.wikipedia.org/wiki/Rorschach_test.html) (query=Full)
DEBUG:layout_thread: First reflow, rebuilding user and UA rules
DEBUG:layout_thread: Doc sheets changed, flushing author sheets too
DEBUG:layout_thread: Draining restyles: 2887
DEBUG:layout_thread: Done building display list.
DEBUG:layout_thread: Layout done!
DEBUG:layout_thread: Observing paint time
DEBUG:layout_thread: Webrender tx
DEBUG:layout_thread: Sending webrender tx

So the webrender tx is sent but never completes.

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 27, 2018

Current guess: webrender does something with the image cache that needs a lock or similar, but oh dear it's still owned by the script thread.

@glennw
Copy link
Member

@glennw glennw commented Feb 27, 2018

I don't think there's any way that WR can interact with the image cache. In general WR is a push-style API where it shouldn't block on any API call (possible I'm forgetting something though). My guess would be an ipc-channel bug.

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 27, 2018

A back trace from gdb, from the layout thread in its stuck state...

(gdb) bt
#0  0x00007ffff6f3d9ff in __libc_send (fd=72, buf=0x7ffef48757b8, n=212960, flags=0) at ../sysdeps/unix/sysv/linux/x86_64/send.c:26
#1  0x000055555afc4de0 in ipc_channel::platform::unix::OsIpcSender::send::send_followup_fragment::h8fb452e0b6a33b7d (sender_fd=72, data_buffer=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:299
#2  0x000055555afc4854 in ipc_channel::platform::unix::OsIpcSender::send::h56c3ea42dede823a (self=0x7fffb0ff7c50, data=..., channels=..., shared_memory_regions=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:382
#3  0x000055555af722ce in ipc_channel::ipc::IpcBytesSender::send::h44de25eea07dcec3 (self=0x7fffb0ff7c50, data=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/ipc.rs:533
#4  0x000055555af7d232 in _$LT$ipc_channel..ipc..IpcBytesSender$u20$as$u20$webrender_api..channel..PayloadSenderHelperMethods$GT$::send_payload::h17d87dbd818df84a (self=0x7fffb0ff7c50, data=...) at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender_api/src/channel_ipc.rs:24
#5  0x000055555af3745e in webrender_api::api::RenderApi::send_transaction::h4a2dbff10a645acf (self=0x7fffb0ff7c48, document_id=..., transaction=...) at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender_api/src/api.rs:890
#6  0x00005555560e2399 in layout_thread::LayoutThread::compute_abs_pos_and_build_display_list::_$u7b$$u7b$closure$u7d$$u7d$::h55837ac19b8524c6 () at components/layout_thread/lib.rs:1064
#7  0x000055555629795f in profile_traits::time::profile::h6b662150452fe3fc (category=LayoutDispListBuild, meta=..., profiler_chan=..., callback=...) at /home/ajeffrey/github/asajeffrey/servo/components/profile_traits/time.rs:125
#8  0x0000555556006f7e in layout_thread::LayoutThread::compute_abs_pos_and_build_display_list::hbd63456fdd002277 (self=0x7fffb0ff6c30, data=0x7fffb0ff5520, reflow_goal=0x7fffb0ff54f8, document=..., layout_root=..., layout_context=0x7fffb0ff45c0, rw_data=0x7fffb023c020)
    at components/layout_thread/lib.rs:963
#9  0x000055555600d11c in layout_thread::LayoutThread::perform_post_main_layout_passes::h941534b62c343556 (self=0x7fffb0ff6c30, data=0x7fffb0ff5520, root_flow=0x7fffb0ff4d20, reflow_goal=0x7fffb0ff54f8, document=..., rw_data=0x7fffb023c020, layout_context=0x7fffb0ff45c0)
    at components/layout_thread/lib.rs:1623
#10 0x000055555600cf17 in layout_thread::LayoutThread::perform_post_style_recalc_layout_passes::h2b57408f969085ff (self=0x7fffb0ff6c30, root_flow=0x7fffb0ff4d20, data=0x7fffb0ff5520, reflow_goal=0x7fffb0ff54f8, document=..., rw_data=0x7fffb023c020, context=0x7fffb0ff45c0)
    at components/layout_thread/lib.rs:1607
#11 0x000055555600a048 in layout_thread::LayoutThread::handle_reflow::hca57fdd36265b2a4 (self=0x7fffb0ff6c30, data=0x7fffb0ff54e0, possibly_locked_rw_data=0x7fffb0ff6be0) at components/layout_thread/lib.rs:1324
#12 0x00005555560e0695 in layout_thread::LayoutThread::handle_request_helper::_$u7b$$u7b$closure$u7d$$u7d$::h5871da311130bec6 () at components/layout_thread/lib.rs:699
#13 0x0000555556297696 in profile_traits::time::profile::h3812dce6fa8f563e (category=LayoutPerform, meta=..., profiler_chan=..., callback=...) at /home/ajeffrey/github/asajeffrey/servo/components/profile_traits/time.rs:125
#14 0x00005555560041b0 in layout_thread::LayoutThread::handle_request_helper::h06f1971640bee6ca (self=0x7fffb0ff6c30, request=..., possibly_locked_rw_data=0x7fffb0ff6be0) at components/layout_thread/lib.rs:696
#15 0x000055555600317a in layout_thread::LayoutThread::handle_request::h6d19c0483cb18f55 (self=0x7fffb0ff6c30, possibly_locked_rw_data=0x7fffb0ff6be0) at components/layout_thread/lib.rs:642
#16 0x00005555560023d0 in layout_thread::LayoutThread::start::h52c3372aa444c6f1 (self=...) at components/layout_thread/lib.rs:555

which would suggest something similar to servo/ipc-channel#34 ?

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 27, 2018

@antrik looks like this might be a case where IPC channel send is blocking?

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 28, 2018

OK, more digging...

Servo ought to be deadlock-free even if IPC sending blocks. I even wrote some notes to myself!

//! There is a complexity intoduced by IPC channels, since they do not support
//! non-blocking send. This means that as well as `receiver.recv()` blocking,
//! `sender.send(data)` can also block when the IPC buffer is full. For this reason it is
//! very important that all IPC receivers where we depend on non-blocking send
//! use a router to route IPC messages to an mpsc channel. The reason why that solves
//! the problem is that under the hood, the router uses a dedicated thread to forward
//! messages, and:
//!
//! * Anything (other than a routing thread) can block on a routing thread
//!
//! See https://github.com/servo/servo/issues/14704

In particular, sending to the WR API is blocking. In particular, layout can block on WR:

self.webrender_api.send_transaction(self.webrender_document, txn);

Digging through this particular deadlock in rr, the font cache thread is blocked sending to WR:

#0  0x0000000070000002 in ?? ()
#1  0x00007f1c43b6d5d6 in ?? () from /usr/bin/../lib/rr/librrpreload.so
#2  0x00007f1c43b6af5e in ?? () from /usr/bin/../lib/rr/librrpreload.so
#3  0x00007f1c43b6bcd8 in ?? () from /usr/bin/../lib/rr/librrpreload.so
#4  0x00007f1c43b6d602 in ?? () from /usr/bin/../lib/rr/librrpreload.so
#5  0x00007f1c43b6d61f in ?? () from /usr/bin/../lib/rr/librrpreload.so
#6  0x00007f1c43b6e93f in ?? () from /usr/bin/../lib/rr/librrpreload.so
#7  0x00007f1c42cd0a02 in __libc_send (fd=39, buf=0x7f1bce136bb8, n=212960, flags=0) at ../sysdeps/unix/sysv/linux/x86_64/send.c:26
#8  0x00005632fc5aede0 in ipc_channel::platform::unix::OsIpcSender::send::send_followup_fragment::h8fb452e0b6a33b7d (sender_fd=39, data_buffer=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:299
#9  0x00005632fc5ae854 in ipc_channel::platform::unix::OsIpcSender::send::h56c3ea42dede823a (self=0x7f1c313f5040, data=..., channels=..., shared_memory_regions=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:382
#10 0x00005632fc55e30a in _$LT$ipc_channel..ipc..IpcSender$LT$T$GT$$GT$::send::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::hd7223557727fa362 (os_ipc_shared_memory_regions_for_serialization=0x7f1c313f65c0)
    at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/ipc.rs:190
#11 0x00005632fc544216 in _$LT$std..thread..local..LocalKey$LT$T$GT$$GT$::try_with::hd382c25d1798e76d (self=0x5632ff9f2da8, f=...) at /checkout/src/libstd/thread/local.rs:377
#12 0x00005632fc543007 in _$LT$std..thread..local..LocalKey$LT$T$GT$$GT$::with::hb68afeddf2035992 (self=0x5632ff9f2da8, f=...) at /checkout/src/libstd/thread/local.rs:288
#13 0x00005632fc55de15 in _$LT$ipc_channel..ipc..IpcSender$LT$T$GT$$GT$::send::_$u7b$$u7b$closure$u7d$$u7d$::h388768850448f367 (os_ipc_channels_for_serialization=0x7f1c313f6598) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/ipc.rs:171
#14 0x00005632fc543e16 in _$LT$std..thread..local..LocalKey$LT$T$GT$$GT$::try_with::h9404917d09ee045a (self=0x5632ff9f2d70, f=...) at /checkout/src/libstd/thread/local.rs:377
#15 0x00005632fc5431df in _$LT$std..thread..local..LocalKey$LT$T$GT$$GT$::with::hf8c13e393e0450f4 (self=0x5632ff9f2d70, f=...) at /checkout/src/libstd/thread/local.rs:288
#16 0x00005632fc55dd73 in _$LT$ipc_channel..ipc..IpcSender$LT$T$GT$$GT$::send::hc64e05753c1847d8 (self=0x7f1c313f5040, data=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/ipc.rs:170
#17 0x00005632fc520d41 in webrender_api::api::RenderApi::update_resources::h2b4d83b7e67a0fb5 (self=0x7f1c313f5040, resources=...) at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender_api/src/api.rs:815
#18 0x00005632fa78a997 in gfx::font_cache_thread::FontCache::get_font_template_info::_$u7b$$u7b$closure$u7d$$u7d$::h8abf259302e527af () at components/gfx/font_cache_thread.rs:381
#19 0x00005632fa740db9 in _$LT$std..collections..hash..map..Entry$LT$$u27$a$C$$u20$K$C$$u20$V$GT$$GT$::or_insert_with::h6b4c52d34061917c (self=..., default=...) at /checkout/src/libstd/collections/hash/map.rs:2036
#20 0x00005632fa6ee0cf in gfx::font_cache_thread::FontCache::get_font_template_info::h2874e97afb257780 (self=0x7f1c313f4fb0, template=...) at components/gfx/font_cache_thread.rs:373
#21 0x00005632fa6ee37e in gfx::font_cache_thread::FontCache::last_resort_font_template::hc41bed4a6b5ea0ab (self=0x7f1c313f4fb0, desc=0x7f1c313f4ca8) at components/gfx/font_cache_thread.rs:412
#22 0x00005632fa6eba68 in gfx::font_cache_thread::FontCache::run::h77815cbe8a34dcd6 (self=0x7f1c313f4fb0) at components/gfx/font_cache_thread.rs:177
#23 0x00005632fa78add2 in gfx::font_cache_thread::FontCacheThread::new::_$u7b$$u7b$closure$u7d$$u7d$::h050fff96c583ef9e () at components/gfx/font_cache_thread.rs:451
#24 0x00005632fa785a23 in std::sys_common::backtrace::__rust_begin_short_backtrace::h364fb7a0dfae5cb6 (f=...) at /checkout/src/libstd/sys_common/backtrace.rs:133
#25 0x00005632fa70fa47 in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h1d278a45c43fc231 () at /checkout/src/libstd/thread/mod.rs:406
#26 0x00005632fa76e513 in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h7b9897f0436a8a4d (self=..., _args=0) at /checkout/src/libstd/panic.rs:293
#27 0x00005632fa742f04 in std::panicking::try::do_call::hb7d2e0b5f62d03c4 (data=0x7f1c313f5438 "\240\334}=\034\177") at /checkout/src/libstd/panicking.rs:479
#28 0x00005632fcfb4c7f in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#29 0x00005632fa742dfa in std::panicking::try::h3ad22207e7efdf7d (f=...) at /checkout/src/libstd/panicking.rs:458
#30 0x00005632fa76e558 in std::panic::catch_unwind::hccef321c669c6a71 (f=...) at /checkout/src/libstd/panic.rs:358
#31 0x00005632fa70f8ae in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::h58f7c151c35533d7 () at /checkout/src/libstd/thread/mod.rs:405
#32 0x00005632fa70fa88 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::hb4bea853b7bf88da (self=0x7f1c3d6361c0, args=0) at /checkout/src/liballoc/boxed.rs:788
#33 0x00005632fcf9f9bc in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h13f1b0bf377a9f5b () at /checkout/src/liballoc/boxed.rs:798
#34 std::sys_common::thread::start_thread::hb5b6e0447b9691dc () at libstd/sys_common/thread.rs:24
#35 std::sys::unix::thread::Thread::new::thread_start::hcaff0bef1a01c624 () at libstd/sys/unix/thread.rs:90
#36 0x00007f1c42cc76ba in start_thread (arg=0x7f1c313f6700) at pthread_create.c:333
#37 0x00007f1c4156341d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

although the WR back end is waiting to recv:

Thread 9 (Thread 13122.13129):
#0  0x000000007000000b in ?? ()
#1  0x00007f1c43b6d5d6 in ?? () from /usr/bin/../lib/rr/librrpreload.so
#2  0x00007f1c43b6af15 in ?? () from /usr/bin/../lib/rr/librrpreload.so
#3  0x00007f1c43b6c63d in ?? () from /usr/bin/../lib/rr/librrpreload.so
#4  0x00007f1c43b6d602 in ?? () from /usr/bin/../lib/rr/librrpreload.so
#5  0x00007f1c43b6d62b in ?? () from /usr/bin/../lib/rr/librrpreload.so
#6  0x00007f1c43b6e273 in ?? () from /usr/bin/../lib/rr/librrpreload.so
#7  0x00007f1c42cd0950 in recvmsg () at ../sysdeps/unix/syscall-template.S:84
#8  0x00005632fc5b2ae0 in ipc_channel::platform::unix::UnixCmsg::recv::hec990a70d11be28a (self=0x7f1c329f3350, fd=16, blocking_mode=Blocking) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:1016
#9  0x00005632fc5b1c4f in ipc_channel::platform::unix::recv::hab22e7ea7d28c703 (fd=16, blocking_mode=Blocking) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:882
#10 0x00005632fc5adcde in ipc_channel::platform::unix::OsIpcReceiver::recv::he0b41160a176334b (self=0x7f1c329f55b8) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:131
#11 0x00005632fb91d035 in _$LT$ipc_channel..ipc..IpcReceiver$LT$T$GT$$GT$::recv::h6a2c4672d068e773 (self=0x7f1c329f55b8) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/ipc.rs:77
#12 0x00005632fba7ad39 in webrender::render_backend::RenderBackend::run::h8f105d72ecc711a4 (self=0x7f1c329f51c8, profile_counters=...) at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender/src/render_backend.rs:734
#13 0x00005632fb8752d1 in webrender::renderer::Renderer::new::_$u7b$$u7b$closure$u7d$$u7d$::h9a9084baa0b449e3 () at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender/src/renderer.rs:2278
#14 0x00005632fbba5915 in std::sys_common::backtrace::__rust_begin_short_backtrace::he2c223461ec9df68 (f=...) at /checkout/src/libstd/sys_common/backtrace.rs:133
#15 0x00005632fb9b9edc in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::he974d1116247e84a () at /checkout/src/libstd/thread/mod.rs:406
#16 0x00005632fb9aac85 in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h18f220046052b5a0 (self=..., _args=0) at /checkout/src/libstd/panic.rs:293
#17 0x00005632fb9bb345 in std::panicking::try::do_call::hd285833cc2650086 (data=0x7f1c329f73d8 "") at /checkout/src/libstd/panicking.rs:479
#18 0x00005632fcfb4c7f in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#19 0x00005632fb9ba86d in std::panicking::try::hcc5f62d1ca1afa67 (f=...) at /checkout/src/libstd/panicking.rs:458
---Type <return> to continue, or q <return> to quit---
#20 0x00005632fb9b895d in std::panic::catch_unwind::h6161b76453a2f618 (f=...) at /checkout/src/libstd/panic.rs:358
#21 0x00005632fb9b9ce9 in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::hda133152a2b82233 () at /checkout/src/libstd/thread/mod.rs:405
#22 0x00005632fb9db186 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h1dea514d352e1f60 (self=0x7f1c3d6fb000, args=0) at /checkout/src/liballoc/boxed.rs:788
#23 0x00005632fcf9f9bc in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h13f1b0bf377a9f5b () at /checkout/src/liballoc/boxed.rs:798
#24 std::sys_common::thread::start_thread::hb5b6e0447b9691dc () at libstd/sys_common/thread.rs:24
#25 std::sys::unix::thread::Thread::new::thread_start::hcaff0bef1a01c624 () at libstd/sys/unix/thread.rs:90
#26 0x00007f1c42cc76ba in start_thread (arg=0x7f1c329fa700) at pthread_create.c:333
#27 0x00007f1c4156341d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109

One thing that's weird is that the fd that WR is listening on is fd 16, but the font cache is sending on fd 8:

(rr) thread 3
[Switching to thread 3 (Thread 13122.13134)]
#9  0x00005632fc5ae854 in ipc_channel::platform::unix::OsIpcSender::send::h56c3ea42dede823a (self=0x7f1c313f5040, data=..., channels=..., shared_memory_regions=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:382
382	                send_followup_fragment(dedicated_tx.fd.0, &data[byte_position..end_byte_position])
(rr) select-frame 9
(rr) print self.fd.ptr.pointer.__0.data.__0
$18 = 8
@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 28, 2018

Ah, the fds are created with socketpair, so it's not too surprising that they are different. I still don't understand why the WR thread is still waiting to recv though :/

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 28, 2018

Ah, I have a theory!

The webrender API sends a transaction by first sending the payload, the sending the transaction itself: https://github.com/servo/webrender/blob/d7735c7da9844775d4a3e6ec8b6cea25fb0b0486/webrender_api/src/api.rs#L897-L903

The problem is that IPC send is blocking when the buffer is full. At this point, the WR back end is waiting on its API channel https://github.com/servo/webrender/blob/d7735c7da9844775d4a3e6ec8b6cea25fb0b0486/webrender/src/render_backend.rs#L727-L736

The problem is that the transaction sender is blocked waiting to send the payload, after which it will send the transaction msg. But the WR back end is waiting for the transaction message before unblocking the payload.

Cyclic blocking, so DEADLOCK!

Gosh this was painful to diagnose.

Here's the relevant GDB backtraces...

(gdb) thread 14
[Switching to thread 14 (Thread 0x7fffe4bfe700 (LWP 16493))]
#0  0x00007ffff6f3d94d in recvmsg () at ../sysdeps/unix/syscall-template.S:84
84	../sysdeps/unix/syscall-template.S: No such file or directory.
(gdb) bt
#0  0x00007ffff6f3d94d in recvmsg () at ../sysdeps/unix/syscall-template.S:84
#1  0x000055555afc8ae0 in ipc_channel::platform::unix::UnixCmsg::recv::hec990a70d11be28a (self=0x7fffe4bf7350, fd=15, blocking_mode=Blocking) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:1016
#2  0x000055555afc7c4f in ipc_channel::platform::unix::recv::hab22e7ea7d28c703 (fd=15, blocking_mode=Blocking) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:882
#3  0x000055555afc3cde in ipc_channel::platform::unix::OsIpcReceiver::recv::he0b41160a176334b (self=0x7fffe4bf95b8) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:131
#4  0x000055555a333035 in _$LT$ipc_channel..ipc..IpcReceiver$LT$T$GT$$GT$::recv::h6a2c4672d068e773 (self=0x7fffe4bf95b8) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/ipc.rs:77
#5  0x000055555a490d39 in webrender::render_backend::RenderBackend::run::h8f105d72ecc711a4 (self=0x7fffe4bf91c8, profile_counters=...) at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender/src/render_backend.rs:734
#6  0x000055555a28b2d1 in webrender::renderer::Renderer::new::_$u7b$$u7b$closure$u7d$$u7d$::h9a9084baa0b449e3 () at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender/src/renderer.rs:2278
#7  0x000055555a5bb915 in std::sys_common::backtrace::__rust_begin_short_backtrace::he2c223461ec9df68 (f=...) at /checkout/src/libstd/sys_common/backtrace.rs:133
#8  0x000055555a3cfedc in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::he974d1116247e84a () at /checkout/src/libstd/thread/mod.rs:406
#9  0x000055555a3c0c85 in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h18f220046052b5a0 (self=..., _args=0) at /checkout/src/libstd/panic.rs:293
#10 0x000055555a3d1345 in std::panicking::try::do_call::hd285833cc2650086 (data=0x7fffe4bfb3d8 "\200+\217\361\377\177") at /checkout/src/libstd/panicking.rs:479
#11 0x000055555b9cac7f in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#12 0x000055555a3d086d in std::panicking::try::hcc5f62d1ca1afa67 (f=...) at /checkout/src/libstd/panicking.rs:458
#13 0x000055555a3ce95d in std::panic::catch_unwind::h6161b76453a2f618 (f=...) at /checkout/src/libstd/panic.rs:358
#14 0x000055555a3cfce9 in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::hda133152a2b82233 () at /checkout/src/libstd/thread/mod.rs:405
#15 0x000055555a3f1186 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h1dea514d352e1f60 (self=0x7ffff18fc000, args=0) at /checkout/src/liballoc/boxed.rs:788
#16 0x000055555b9b59bc in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h13f1b0bf377a9f5b () at /checkout/src/liballoc/boxed.rs:798
#17 std::sys_common::thread::start_thread::hb5b6e0447b9691dc () at libstd/sys_common/thread.rs:24
#18 std::sys::unix::thread::Thread::new::thread_start::hcaff0bef1a01c624 () at libstd/sys/unix/thread.rs:90
#19 0x00007ffff6f346ba in start_thread (arg=0x7fffe4bfe700) at pthread_create.c:333
#20 0x00007ffff57d041d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:109
(gdb) thread 26
[Switching to thread 26 (Thread 0x7fffb0ffe700 (LWP 16506))]
#0  0x00007ffff6f3d9ff in __libc_send (fd=63, buf=0x7fff092757b8, n=212960, flags=0) at ../sysdeps/unix/sysv/linux/x86_64/send.c:26
26	../sysdeps/unix/sysv/linux/x86_64/send.c: No such file or directory.
(gdb) bt
#0  0x00007ffff6f3d9ff in __libc_send (fd=63, buf=0x7fff092757b8, n=212960, flags=0) at ../sysdeps/unix/sysv/linux/x86_64/send.c:26
#1  0x000055555afc4de0 in ipc_channel::platform::unix::OsIpcSender::send::send_followup_fragment::h8fb452e0b6a33b7d (sender_fd=63, data_buffer=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:299
#2  0x000055555afc4854 in ipc_channel::platform::unix::OsIpcSender::send::h56c3ea42dede823a (self=0x7fffb0ff7c50, data=..., channels=..., shared_memory_regions=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/platform/unix/mod.rs:382
#3  0x000055555af722ce in ipc_channel::ipc::IpcBytesSender::send::h44de25eea07dcec3 (self=0x7fffb0ff7c50, data=...) at /home/ajeffrey/.cargo/registry/src/github.com-1ecc6299db9ec823/ipc-channel-0.9.0/src/ipc.rs:533
#4  0x000055555af7d232 in _$LT$ipc_channel..ipc..IpcBytesSender$u20$as$u20$webrender_api..channel..PayloadSenderHelperMethods$GT$::send_payload::h17d87dbd818df84a (self=0x7fffb0ff7c50, data=...) at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender_api/src/channel_ipc.rs:24
#5  0x000055555af3745e in webrender_api::api::RenderApi::send_transaction::h4a2dbff10a645acf (self=0x7fffb0ff7c48, document_id=..., transaction=...) at /home/ajeffrey/.cargo/git/checkouts/webrender-c3596abe1cf4f320/681e181/webrender_api/src/api.rs:890
#6  0x00005555560e2399 in layout_thread::LayoutThread::compute_abs_pos_and_build_display_list::_$u7b$$u7b$closure$u7d$$u7d$::h55837ac19b8524c6 () at components/layout_thread/lib.rs:1064
#7  0x000055555629795f in profile_traits::time::profile::h6b662150452fe3fc (category=LayoutDispListBuild, meta=..., profiler_chan=..., callback=...) at /home/ajeffrey/github/asajeffrey/servo/components/profile_traits/time.rs:125
#8  0x0000555556006f7e in layout_thread::LayoutThread::compute_abs_pos_and_build_display_list::hbd63456fdd002277 (self=0x7fffb0ff6c30, data=0x7fffb0ff5520, reflow_goal=0x7fffb0ff54f8, document=..., layout_root=..., layout_context=0x7fffb0ff45c0, rw_data=0x7fffb083c020)
    at components/layout_thread/lib.rs:963
#9  0x000055555600d11c in layout_thread::LayoutThread::perform_post_main_layout_passes::h941534b62c343556 (self=0x7fffb0ff6c30, data=0x7fffb0ff5520, root_flow=0x7fffb0ff4d20, reflow_goal=0x7fffb0ff54f8, document=..., rw_data=0x7fffb083c020, layout_context=0x7fffb0ff45c0)
    at components/layout_thread/lib.rs:1623
#10 0x000055555600cf17 in layout_thread::LayoutThread::perform_post_style_recalc_layout_passes::h2b57408f969085ff (self=0x7fffb0ff6c30, root_flow=0x7fffb0ff4d20, data=0x7fffb0ff5520, reflow_goal=0x7fffb0ff54f8, document=..., rw_data=0x7fffb083c020, context=0x7fffb0ff45c0)
    at components/layout_thread/lib.rs:1607
#11 0x000055555600a048 in layout_thread::LayoutThread::handle_reflow::hca57fdd36265b2a4 (self=0x7fffb0ff6c30, data=0x7fffb0ff54e0, possibly_locked_rw_data=0x7fffb0ff6be0) at components/layout_thread/lib.rs:1324
#12 0x00005555560e0695 in layout_thread::LayoutThread::handle_request_helper::_$u7b$$u7b$closure$u7d$$u7d$::h5871da311130bec6 () at components/layout_thread/lib.rs:699
#13 0x0000555556297696 in profile_traits::time::profile::h3812dce6fa8f563e (category=LayoutPerform, meta=..., profiler_chan=..., callback=...) at /home/ajeffrey/github/asajeffrey/servo/components/profile_traits/time.rs:125
#14 0x00005555560041b0 in layout_thread::LayoutThread::handle_request_helper::h06f1971640bee6ca (self=0x7fffb0ff6c30, request=..., possibly_locked_rw_data=0x7fffb0ff6be0) at components/layout_thread/lib.rs:696
#15 0x000055555600317a in layout_thread::LayoutThread::handle_request::h6d19c0483cb18f55 (self=0x7fffb0ff6c30, possibly_locked_rw_data=0x7fffb0ff6be0) at components/layout_thread/lib.rs:642
#16 0x00005555560023d0 in layout_thread::LayoutThread::start::h52c3372aa444c6f1 (self=...) at components/layout_thread/lib.rs:555
#17 0x00005555560df862 in _$LT$layout_thread..LayoutThread$u20$as$u20$layout_traits..LayoutThreadFactory$GT$::create::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h243d80a2d30da09d () at components/layout_thread/lib.rs:313
#18 0x0000555556018c1f in profile_traits::mem::ProfilerChan::run_with_memory_reporting::h864d355b6a9be6b4 (self=0x7fffb0ffc680, f=..., reporter_name=..., channel_for_reporter=..., msg=0x1) at /home/ajeffrey/github/asajeffrey/servo/components/profile_traits/mem.rs:63
#19 0x00005555560dfe0f in _$LT$layout_thread..LayoutThread$u20$as$u20$layout_traits..LayoutThreadFactory$GT$::create::_$u7b$$u7b$closure$u7d$$u7d$::h5285a5bf82719ce4 () at components/layout_thread/lib.rs:312
#20 0x000055555631a0b5 in std::sys_common::backtrace::__rust_begin_short_backtrace::h793a2b4da029430d (f=...) at /checkout/src/libstd/sys_common/backtrace.rs:133
#21 0x0000555556041b4c in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::_$u7b$$u7b$closure$u7d$$u7d$::h599f7ce68ab6b2d2 () at /checkout/src/libstd/thread/mod.rs:406
#22 0x000055555623e8e5 in _$LT$std..panic..AssertUnwindSafe$LT$F$GT$$u20$as$u20$core..ops..function..FnOnce$LT$$LP$$RP$$GT$$GT$::call_once::h9e0e9934f247b2a0 (self=..., _args=0) at /checkout/src/libstd/panic.rs:293
#23 0x00005555561430a5 in std::panicking::try::do_call::h38072fd3f75c4876 (data=0x7fffb0ffcd38 "\002") at /checkout/src/libstd/panicking.rs:479
#24 0x000055555b9cac7f in __rust_maybe_catch_panic () at libpanic_unwind/lib.rs:102
#25 0x0000555556142a9d in std::panicking::try::hc7558e494655edfa (f=...) at /checkout/src/libstd/panicking.rs:458
#26 0x000055555623ea2d in std::panic::catch_unwind::h553127c6add952c4 (f=...) at /checkout/src/libstd/panic.rs:358
#27 0x0000555556041999 in std::thread::Builder::spawn::_$u7b$$u7b$closure$u7d$$u7d$::h02997a1c0a8a5e92 () at /checkout/src/libstd/thread/mod.rs:405
#28 0x0000555556041ba6 in _$LT$F$u20$as$u20$alloc..boxed..FnBox$LT$A$GT$$GT$::call_box::h77af4008b196478e (self=0x7fffb22cc000, args=0) at /checkout/src/liballoc/boxed.rs:788
#29 0x000055555b9b59bc in _$LT$alloc..boxed..Box$LT$alloc..boxed..FnBox$LT$A$C$$u20$Output$u3d$R$GT$$u20$$u2b$$u20$$u27$a$GT$$u20$as$u20$core..ops..function..FnOnce$LT$A$GT$$GT$::call_once::h13f1b0bf377a9f5b () at /checkout/src/liballoc/boxed.rs:798
#30 std::sys_common::thread::start_thread::hb5b6e0447b9691dc () at libstd/sys_common/thread.rs:24
#31 std::sys::unix::thread::Thread::new::thread_start::hcaff0bef1a01c624 () at libstd/sys/unix/thread.rs:90
#32 0x00007ffff6f346ba in start_thread (arg=0x7fffb0ffe700) at pthread_create.c:333
#33 0x00007ffff57d041d in clone () at ../sysdeps/unix/sysv/linux/x8
@jdm
Copy link
Member

@jdm jdm commented Feb 28, 2018

Blocking sends are a problem on mac as well as linux. I wrote a program that demonstrates that the IPC channels on mac eventually block during the send operation if no receive operation occurs.

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 28, 2018

Yes, @antrik didn't think there was any way to give non-blocking semantics to ipc send on all platforms.

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Feb 28, 2018

Hopefully this is fixed by servo/webrender#2480

@asajeffrey
Copy link
Member Author

@asajeffrey asajeffrey commented Mar 2, 2018

@asajeffrey asajeffrey closed this Mar 2, 2018
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Linked pull requests

Successfully merging a pull request may close this issue.

None yet
3 participants
You can’t perform that action at this time.