Fix broken endInsertionPoint forwarding chain resolution in DEBUG_VERBOSE print

In the Phase 2 debug block of ConflictSet::Impl::interleavedWrites, the
loop resolving the end insertion point's releaseDeferred/forwardTo chain
followed the begin node's chain instead (e = b->forwardTo). Once b is
resolved, b->forwardTo aliases the Entry union member, so e was assigned
garbage derived from version bytes and the loop dereferenced it,
causing a SEGV or hang whenever DEBUG_VERBOSE builds traced writes.

Use the end node's own forwarding chain (e = e->forwardTo), matching
the production code in the same loop body and in Phase 3.
This commit is contained in:
2026-08-30 20:17:22 -04:00
parent ec1b476977
commit 9a2c64d31c
+1 -1
View File
@@ -4981,7 +4981,7 @@ struct __attribute__((visibility("hidden"))) ConflictSet::Impl {
}
if (e != nullptr) {
while (e->releaseDeferred) {
e = b->forwardTo;
e = e->forwardTo;
}
}
fprintf(stderr, "search path: %s, begin: %s\n",