summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLuboš Luňák <l.lunak@collabora.com>2018-06-06 14:21:55 +0200
committerLuboš Luňák <l.lunak@collabora.com>2018-06-06 18:00:21 +0200
commitabb19edc79bd7d96827214d3b49f80e270e1c0b7 (patch)
treefb7d346d0fffb07ea5b55887e77e86c8df0cd97c
parent584a9e962f3e6c306bb2ba03c7d3b3cdbd3f206e (diff)
blacklist ocExternal for calc's threaded calculations
Opcode ocExternal is used for functions implemented as UNO calls, which has a number of problems: - ooo#118213-2 contains GETEOMONTH(), which maps to ocExternal, which calls AnalysisAddIn::getEomonth() in scaddins, which ends up calling ScModelObj::getPropertyValue(), which deadlocks on SolarMutex - it uses ScUnoAddInCollection class, which uses delayed initialization (even though it's created on-demand), which is not thread-safe; however, it seems that the initialization is generally done already while loading a file, so this is possibly in practice safe - who knows what all kinds of race conditions there are in all the functions this may call via UNO Change-Id: I80c4264102b8bc492853852c2c12e5cd2a8ea99e Reviewed-on: https://gerrit.libreoffice.org/55382 Reviewed-by: Michael Meeks <michael.meeks@collabora.com> Tested-by: Jenkins <ci@libreoffice.org>
-rw-r--r--sc/source/core/tool/token.cxx3
1 files changed, 2 insertions, 1 deletions
diff --git a/sc/source/core/tool/token.cxx b/sc/source/core/tool/token.cxx
index 000e537b65b8..ac4fed165b87 100644
--- a/sc/source/core/tool/token.cxx
+++ b/sc/source/core/tool/token.cxx
@@ -1321,7 +1321,8 @@ void ScTokenArray::CheckForThreading( OpCode eOp )
ocCell,
ocInfo,
ocStyle,
- ocDBSum
+ ocDBSum,
+ ocExternal
});
// We only call this if it was already disabled