https://bugs.documentfoundation.org/show_bug.cgi?id=174266

--- Comment #2 from [email protected] ---
I asked codex to investigate the root cause and suggest a simple fix. I don't
expect it to meet your quality requirements, but I hope it saves you time.
Moreover, it noticed that the bug seems to have the same root cause as
https://bugs.documentfoundation.org/show_bug.cgi?id=174267

-----

Source analysis identifies a shared calculation fallback defect. After
detecting a formula-group cycle, ScFormulaCell::Interpret() can skip scalar
evaluation even when no enclosing dependency calculation remains active. C2
returns uncalculated and is read as zero, producing MIN(6,0)-1 = -1.

The proposed correction restricts that bailout to active dependency evaluation,
so ordinary reads receive completed results. The same correction fixes the
empty-string MIN failure. The faulty branch dates to 24afa5ddbecf (2018-07-06;
present in 6.2 source), not an established first failing binary. Related: bug
132451.

On locally patched 27.2.0.0.alpha0+ master 7528c0d40601, macOS 27.0.1 ARM64,
all 400 cells pass three load/hard-recalculation cycles per threading setting.
Both parallelism suites pass all 20 tests. Reverting restores the failure.
Patched Linux was not tested.

--- a/sc/source/core/data/formulacell.cxx
+++ b/sc/source/core/data/formulacell.cxx
@@ -1869,7 +1869,8 @@
             // Dependency calc inside InterpretFormulaGroup() failed due to
             // detection of a cycle and there are parent FG's in the cycle.
             // Skip InterpretTail() in such cases, only run InterpretTail for
the "cycle-starting" FG
-            if (!bPartOfCycleBefore && bPartOfCycleAfter &&
rRecursionHelper.AnyParentFGInCycle())
+            if (rRecursionHelper.GetDepComputeLevel() > 0 &&
!bPartOfCycleBefore
+                && bPartOfCycleAfter && rRecursionHelper.AnyParentFGInCycle())
             {
                 rDocument.DecInterpretLevel();
                 return bGroupInterpreted;

-- 
You are receiving this mail because:
You are the assignee for the bug.

Reply via email to