diff options
-rwxr-xr-x | bitbake/bin/bitbake-worker | 12 |
1 files changed, 9 insertions, 3 deletions
diff --git a/bitbake/bin/bitbake-worker b/bitbake/bin/bitbake-worker index 577651386f..e8073f2ac3 100755 --- a/bitbake/bin/bitbake-worker +++ b/bitbake/bin/bitbake-worker | |||
@@ -237,9 +237,11 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask): | |||
237 | # Let SIGHUP exit as SIGTERM | 237 | # Let SIGHUP exit as SIGTERM |
238 | signal.signal(signal.SIGHUP, sigterm_handler) | 238 | signal.signal(signal.SIGHUP, sigterm_handler) |
239 | 239 | ||
240 | # No stdin | 240 | # No stdin & stdout |
241 | newsi = os.open(os.devnull, os.O_RDWR) | 241 | # stdout is used as a status report channel and must not be used by child processes. |
242 | os.dup2(newsi, sys.stdin.fileno()) | 242 | dumbio = os.open(os.devnull, os.O_RDWR) |
243 | os.dup2(dumbio, sys.stdin.fileno()) | ||
244 | os.dup2(dumbio, sys.stdout.fileno()) | ||
243 | 245 | ||
244 | if umask is not None: | 246 | if umask is not None: |
245 | os.umask(umask) | 247 | os.umask(umask) |
@@ -305,6 +307,10 @@ def fork_off_task(cfg, data, databuilder, workerdata, extraconfigdata, runtask): | |||
305 | if not quieterrors: | 307 | if not quieterrors: |
306 | logger.critical(traceback.format_exc()) | 308 | logger.critical(traceback.format_exc()) |
307 | os._exit(1) | 309 | os._exit(1) |
310 | |||
311 | sys.stdout.flush() | ||
312 | sys.stderr.flush() | ||
313 | |||
308 | try: | 314 | try: |
309 | if dry_run: | 315 | if dry_run: |
310 | return 0 | 316 | return 0 |