diff --git a/layout/base/crashtests/1729578.html b/layout/base/crashtests/1729578.html
new file mode 100644
index 000000000000..27dd8a140fe3
--- /dev/null
+++ b/layout/base/crashtests/1729578.html
@@ -0,0 +1,26 @@
+
+
+
+
+
+
+x
+
+- ;MLCI|=oV;nvAP*o7U
+x
diff --git a/layout/base/crashtests/crashtests.list b/layout/base/crashtests/crashtests.list
index 4e5e8132ba3f..3b031b4469d3 100644
--- a/layout/base/crashtests/crashtests.list
+++ b/layout/base/crashtests/crashtests.list
@@ -560,3 +560,4 @@ load 1685146.html
load 1689912.html
load 1690163.html
load 1723200.html
+load 1729578.html
diff --git a/layout/generic/nsTextFrame.cpp b/layout/generic/nsTextFrame.cpp
index f2b7ed65f588..100cdd432244 100644
--- a/layout/generic/nsTextFrame.cpp
+++ b/layout/generic/nsTextFrame.cpp
@@ -4493,8 +4493,11 @@ class nsContinuingTextFrame final : public nsTextFrame {
nsIFrame* FirstInFlow() const final;
nsTextFrame* FirstContinuation() const final {
- MOZ_DIAGNOSTIC_ASSERT(mFirstContinuation || !mPrevContinuation,
- "mFirstContinuation unexpectedly null!");
+ // If we have a prev-continuation pointer, then our first-continuation
+ // must be the same as that frame's.
+ MOZ_ASSERT((!mPrevContinuation && !mFirstContinuation) ||
+ (mPrevContinuation &&
+ mPrevContinuation->FirstContinuation() == mFirstContinuation));
return mFirstContinuation;
};