aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorbors-servo <metajack+bors@gmail.com>2015-09-24 11:05:28 -0600
committerbors-servo <metajack+bors@gmail.com>2015-09-24 11:05:28 -0600
commit30ffd09eb3daf4b0bc55627c281016f8f246fd6f (patch)
tree5f77f78f7c8371ad24236dfea5d7d0fdfe01f527
parent2d253cbf835df522595575fdd371e2068606271a (diff)
parentf8cd0d9b3bd3924c0d99462bad25f4ad2dad8a01 (diff)
downloadservo-30ffd09eb3daf4b0bc55627c281016f8f246fd6f.tar.gz
servo-30ffd09eb3daf4b0bc55627c281016f8f246fd6f.zip
Auto merge of #7675 - jgraham:freeze_crash, r=metajack
Prevent crash trying to freeze script task with no page. This fixes a crash resulting from a race between loading an initial document and navigating to a subsequent document. If the navigation happens before the initial document has had a chance to create its root page, we crash trying to unwrap a None. Note that the are likely further similar timing issues with more complex sequences of navigation and history manipulation. <!-- Reviewable:start --> [<img src="https://reviewable.io/review_button.png" height=40 alt="Review on Reviewable"/>](https://reviewable.io/reviews/servo/servo/7675) <!-- Reviewable:end -->
-rw-r--r--components/script/script_task.rs5
1 files changed, 5 insertions, 0 deletions
diff --git a/components/script/script_task.rs b/components/script/script_task.rs
index 96ff1a751eb..1c3b6c2cd37 100644
--- a/components/script/script_task.rs
+++ b/components/script/script_task.rs
@@ -1282,6 +1282,11 @@ impl ScriptTask {
/// Handles freeze message
fn handle_freeze_msg(&self, id: PipelineId) {
+ // Workaround for a race condition when navigating before the initial page has
+ // been constructed c.f. https://github.com/servo/servo/issues/7677
+ if self.page.borrow().is_none() {
+ return
+ };
let page = self.root_page();
let page = page.find(id).expect("ScriptTask: received freeze msg for a
pipeline ID not associated with this script task. This is a bug.");