diff options
author | Luboš Luňák <l.lunak@collabora.com> | 2018-06-06 14:21:55 +0200 |
---|---|---|
committer | Luboš Luňák <l.lunak@collabora.com> | 2018-06-06 18:00:21 +0200 |
commit | abb19edc79bd7d96827214d3b49f80e270e1c0b7 (patch) | |
tree | fb7d346d0fffb07ea5b55887e77e86c8df0cd97c | |
parent | 584a9e962f3e6c306bb2ba03c7d3b3cdbd3f206e (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.cxx | 3 |
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 |