summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
authorMichael Meeks <michael.meeks@collabora.com>2016-07-12 19:30:53 +0100
committerMichael Meeks <michael.meeks@collabora.com>2016-07-12 20:01:25 +0000
commite9a1afbd3e12c6935cbacbff84b1b70fea0add85 (patch)
treef46663c1c4ed9f9d942c37ac76d165ae67a59550 /sc
parent37204431c68a4725b4539fa35e9fcea4fe94c166 (diff)
tdf#100883 - opencl impls. that use SEH are still bad.
Amazingly we fell-back to the old calculation path for crashes in older LibreOffices, might as well have this on master. Change-Id: Ifc1de41c93329207d7a1917c736e361d840c2821 Reviewed-on: https://gerrit.libreoffice.org/27166 Tested-by: Jenkins <ci@libreoffice.org> Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Diffstat (limited to 'sc')
-rw-r--r--sc/source/core/opencl/formulagroupcl.cxx7
1 files changed, 7 insertions, 0 deletions
diff --git a/sc/source/core/opencl/formulagroupcl.cxx b/sc/source/core/opencl/formulagroupcl.cxx
index cc82df9ef2c6..6747bc90e2a8 100644
--- a/sc/source/core/opencl/formulagroupcl.cxx
+++ b/sc/source/core/opencl/formulagroupcl.cxx
@@ -4059,6 +4059,7 @@ DynamicKernel* DynamicKernel::create( const ScCalcConfig& rConfig, ScTokenArray&
// OpenCLError used to go to the catch-all below, and not delete pDynamicKernel. Was that
// intentional, should we not do it here then either?
delete pDynamicKernel;
+ ::opencl::kernelFailures++;
return nullptr;
}
catch (const Unhandled& uh)
@@ -4068,6 +4069,7 @@ DynamicKernel* DynamicKernel::create( const ScCalcConfig& rConfig, ScTokenArray&
// Unhandled used to go to the catch-all below, and not delete pDynamicKernel. Was that
// intentional, should we not do it here then either?
delete pDynamicKernel;
+ ::opencl::kernelFailures++;
return nullptr;
}
catch (...)
@@ -4075,6 +4077,7 @@ DynamicKernel* DynamicKernel::create( const ScCalcConfig& rConfig, ScTokenArray&
// FIXME: Do we really want to catch random exceptions here?
SAL_WARN("sc.opencl", "Dynamic formula compiler: unexpected exception");
// FIXME: Not deleting pDynamicKernel here!?, is that intentional?
+ ::opencl::kernelFailures++;
return nullptr;
}
return pDynamicKernel;
@@ -4185,21 +4188,25 @@ public:
catch (const UnhandledToken& ut)
{
SAL_INFO("sc.opencl", "Dynamic formula compiler: UnhandledToken: " << ut.mMessage << " at " << ut.mFile << ":" << ut.mLineNumber);
+ ::opencl::kernelFailures++;
return CLInterpreterResult();
}
catch (const OpenCLError& oce)
{
SAL_WARN("sc.opencl", "Dynamic formula compiler: OpenCLError from " << oce.mFunction << ": " << ::opencl::errorString(oce.mError) << " at " << oce.mFile << ":" << oce.mLineNumber);
+ ::opencl::kernelFailures++;
return CLInterpreterResult();
}
catch (const Unhandled& uh)
{
SAL_INFO("sc.opencl", "Dynamic formula compiler: Unhandled at " << uh.mFile << ":" << uh.mLineNumber);
+ ::opencl::kernelFailures++;
return CLInterpreterResult();
}
catch (...)
{
SAL_WARN("sc.opencl", "Dynamic formula compiler: unexpected exception");
+ ::opencl::kernelFailures++;
return CLInterpreterResult();
}