Преглед изворни кода

HPCC-22366 Roxie may core after exception, if child queries not stopped

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman пре 6 година
родитељ
комит
44b1c8febf
1 измењених фајлова са 21 додато и 2 уклоњено
  1. 21 2
      roxie/ccd/ccdserver.cpp

+ 21 - 2
roxie/ccd/ccdserver.cpp

@@ -27530,9 +27530,28 @@ public:
             }
             for (unsigned i = 0; i < sinks.ordinality()-1; i++)
                 threads.item(i).start(parentExtractSize, parentExtract);
-            sinks.item(sinks.ordinality()-1).execute(parentExtractSize, parentExtract);
+            try
+            {
+                sinks.item(sinks.ordinality()-1).execute(parentExtractSize, parentExtract);
+            }
+            catch (IException *E)
+            {
+                noteException(E);
+                E->Release();
+            }
             for (unsigned i = 0; i < sinks.ordinality()-1; i++)
-                threads.item(i).join();
+            {
+                try
+                {
+                    threads.item(i).join();
+                }
+                catch (IException *E)
+                {
+                    noteException(E);
+                    E->Release();
+                }
+            }
+            checkAbort();
  #else
             class casyncfor: public CAsyncFor
             {