Ver código fonte

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

Signed-off-by: Richard Chapman <rchapman@hpccsystems.com>
Richard Chapman 6 anos atrás
pai
commit
44b1c8febf
1 arquivos alterados com 21 adições e 2 exclusões
  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++)
             for (unsigned i = 0; i < sinks.ordinality()-1; i++)
                 threads.item(i).start(parentExtractSize, parentExtract);
                 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++)
             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
  #else
             class casyncfor: public CAsyncFor
             class casyncfor: public CAsyncFor
             {
             {