|
@@ -0,0 +1,52 @@
|
|
|
+From bd08e45d7b25f06da2fc6dc824146b471db5f1f4 Mon Sep 17 00:00:00 2001
|
|
|
+From: Stefano Babic <sbabic@denx.de>
|
|
|
+Date: Tue, 16 Jun 2020 10:29:55 +0200
|
|
|
+Subject: [PATCH] Shellscript stops before completing
|
|
|
+
|
|
|
+Commit 8fb94d7 reworks the way shell script are called, redirecting
|
|
|
+stdout and stderr to SWUpdate. A shell script runs then in a child
|
|
|
+process. Under some circumstances, SWUpdate closes the forked process
|
|
|
+before the child process completes.
|
|
|
+
|
|
|
+Be sure that the child process has terminated before to go on.
|
|
|
+
|
|
|
+Signed-off-by: Stefano Babic <sbabic@denx.de>
|
|
|
+Reported-by: Piotr Piwko <piotr.piwko@gmail.com>
|
|
|
+Tested-by: Piotr Piwko <piotr.piwko@gmail.com>
|
|
|
+Signed-off-by: Joris Offouga <offougajoris@gmail.com>
|
|
|
+---
|
|
|
+ core/pctl.c | 4 ++--
|
|
|
+ 1 file changed, 2 insertions(+), 2 deletions(-)
|
|
|
+
|
|
|
+diff --git a/core/pctl.c b/core/pctl.c
|
|
|
+index 8b1c667..01ad540 100644
|
|
|
+--- a/core/pctl.c
|
|
|
++++ b/core/pctl.c
|
|
|
+@@ -263,6 +263,7 @@ int run_system_cmd(const char *cmd)
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ int fds[2];
|
|
|
++ pid_t w;
|
|
|
+
|
|
|
+ close(stdoutpipe[PIPE_WRITE]);
|
|
|
+ close(stderrpipe[PIPE_WRITE]);
|
|
|
+@@ -276,7 +277,6 @@ int run_system_cmd(const char *cmd)
|
|
|
+ * and from stderr (of the child process) as ERROR
|
|
|
+ */
|
|
|
+ do {
|
|
|
+- pid_t w;
|
|
|
+ int n1 = 0;
|
|
|
+ struct timeval tv;
|
|
|
+ fd_set readfds;
|
|
|
+@@ -373,7 +373,7 @@ int run_system_cmd(const char *cmd)
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } while (ret > 0 && n1 > 0);
|
|
|
+- } while (!WIFEXITED(wstatus));
|
|
|
++ } while (w != process_id);
|
|
|
+
|
|
|
+ close(stdoutpipe[PIPE_READ]);
|
|
|
+ close(stderrpipe[PIPE_READ]);
|
|
|
+--
|
|
|
+2.25.1
|
|
|
+
|