[Libreoffice-commits] core.git: sc/inc sc/source
Noel Grandin (via logerrit)
logerrit at kemper.freedesktop.org
Thu Aug 5 10:16:32 UTC 2021
sc/inc/table.hxx | 10 ++++++----
sc/source/core/data/table1.cxx | 2 +-
2 files changed, 7 insertions(+), 5 deletions(-)
New commits:
commit 2a5ba0a0096334b5097fd6aeec54c18c876e94d4
Author: Noel Grandin <noel.grandin at collabora.co.uk>
AuthorDate: Thu Aug 5 10:07:25 2021 +0200
Commit: Noel Grandin <noel.grandin at collabora.co.uk>
CommitDate: Thu Aug 5 12:15:54 2021 +0200
tsan:data-race in ScTable::bStreamValid
which is touched from multiple threads when doing formula groups.
WARNING: ThreadSanitizer: data race (pid=837458)
Write of size 2 at 0x7b5800031aa8 by thread T17:
/media/disk2/libo-san/sc/source/core/data/table1.cxx:379:22
(libsclo.so+0x5b4f5d)
/media/disk2/libo-san/sc/source/core/data/document.cxx:927:23
(libsclo.so+0x443220)
ScFormulaCell::ScInterpretTailParameter)
/media/disk2/libo-san/sc/source/core/data/formulacell.cxx:2266:23 (l
ibsclo.so+0x550fc4)
long, unsigned long, unsigned int, unsigned int)
/media/disk2/libo-san/sc/source/core/data/colum
n2.cxx:2998:15 (libsclo.so+0x375bb3)
short, int, int, unsigned int, unsigned int)
/media/disk2/libo-san/sc/source/core/data/table1.cx
x:2555:24 (libsclo.so+0x5c095b)
ScRange const&, unsigned int, unsigned int)
/media/disk2/libo-san/sc/source/core/data/documen8.cxx:4
21:11 (libsclo.so+0x436cef)
ScFormulaCell::InterpretFormulaGroupThreading(sc::FormulaLogger::GroupScope&,
bool&, bool&, int, int)::Executor::doWork()
/media/disk2/libo-san/sc/source/core/da
ta/formulacell.cxx:4875:29 (libsclo.so+0x55e869)
/media/disk2/libo-san/comphelper/source/misc/threadpool.cxx:314:9
(libcomphelper.so+0x1480ff)
/media/disk2/libo-san/comphelper/source/misc/threadpool.cxx:83:24
(libcomphelper.so+0x1480ff)
/media/disk2/libo-san/salhelper/source/thread.cxx:40:9
(libuno_salhelpergcc3.so.3+0x5350)
/media/disk2/libo-san/salhelper/source/thread.cxx
(libuno_salhelpergcc3.so.3+0x53b9)
(libuno_salhelpergcc3.so.3+0x565e)
/media/disk2/libo-san/sal/osl/unx/thread.cxx:264:9
(libuno_sal.so.3+0x68325)
Previous read of size 2 at 0x7b5800031aa8 by thread T18:
/media/disk2/libo-san/sc/inc/table.hxx:315:71 (libsclo.so+0x443175)
/media/disk2/libo-san/sc/source/core/data/document.cxx:919:30
(libsclo.so+0x443175)
ScFormulaCell::ScInterpretTailParameter)
/media/disk2/libo-san/sc/source/core/data/formulacell.cxx:2182:48 (l
ibsclo.so+0x550c03)
long, unsigned long, unsigned int, unsigned int)
/media/disk2/libo-san/sc/source/core/data/colum
n2.cxx:2998:15 (libsclo.so+0x375bb3)
short, int, int, unsigned int, unsigned int)
/media/disk2/libo-san/sc/source/core/data/table1.cx
x:2555:24 (libsclo.so+0x5c095b)
ScRange const&, unsigned int, unsigned int)
/media/disk2/libo-san/sc/source/core/data/documen8.cxx:4
21:11 (libsclo.so+0x436cef)
ScFormulaCell::InterpretFormulaGroupThreading(sc::FormulaLogger::GroupScope&,
bool&, bool&, int, int)::Executor::doWork()
/media/disk2/libo-san/sc/source/core/da
ta/formulacell.cxx:4875:29 (libsclo.so+0x55e869)
/media/disk2/libo-san/comphelper/source/misc/threadpool.cxx:314:9
(libcomphelper.so+0x1480ff)
Change-Id: Iae65982248a468e25eab8c8ecefb551a87d202d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/120060
Tested-by: Jenkins
Reviewed-by: Noel Grandin <noel.grandin at collabora.co.uk>
diff --git a/sc/inc/table.hxx b/sc/inc/table.hxx
index 6ecc0746d7b5..4c1a96e7f901 100644
--- a/sc/inc/table.hxx
+++ b/sc/inc/table.hxx
@@ -19,8 +19,6 @@
#pragma once
-#include <algorithm>
-#include <vector>
#include <tools/gen.hxx>
#include <tools/color.hxx>
#include "attarray.hxx"
@@ -35,9 +33,12 @@
#include "document.hxx"
#include "drwlayer.hxx"
+#include <algorithm>
+#include <atomic>
+#include <memory>
#include <optional>
#include <set>
-#include <memory>
+#include <vector>
template <typename A, typename D> class ScBitMaskCompressedArray;
template <typename A, typename D> class ScCompressedArray;
@@ -236,7 +237,6 @@ private:
mutable bool bTableAreaValid:1;
mutable bool bTableAreaVisibleValid:1;
bool bVisible:1;
- bool bStreamValid:1;
bool bPendingRowHeights:1;
bool bCalcNotification:1;
bool bGlobalKeepQuery:1;
@@ -244,6 +244,8 @@ private:
bool bActiveScenario:1;
bool mbPageBreaksValid:1;
bool mbForceBreaks:1;
+ /** this is touched from formula group threading context */
+ std::atomic<bool> bStreamValid;
// Default attributes for the unallocated columns.
ScAttrArray aDefaultColAttrArray;
diff --git a/sc/source/core/data/table1.cxx b/sc/source/core/data/table1.cxx
index b0885b08e5cb..23c2d85ca52e 100644
--- a/sc/source/core/data/table1.cxx
+++ b/sc/source/core/data/table1.cxx
@@ -269,7 +269,6 @@ ScTable::ScTable( ScDocument& rDoc, SCTAB nNewTab, const OUString& rNewName,
bTableAreaValid(false),
bTableAreaVisibleValid(false),
bVisible(true),
- bStreamValid(false),
bPendingRowHeights(false),
bCalcNotification(false),
bGlobalKeepQuery(false),
@@ -277,6 +276,7 @@ ScTable::ScTable( ScDocument& rDoc, SCTAB nNewTab, const OUString& rNewName,
bActiveScenario(false),
mbPageBreaksValid(false),
mbForceBreaks(false),
+ bStreamValid(false),
aDefaultColAttrArray(static_cast<SCCOL>(-1), nNewTab, rDoc, nullptr)
{
if (bColInfo)
More information about the Libreoffice-commits
mailing list