'Docker build: the command returned a non-zero code: 141

My docker build is interrupted with error:

The command '/bin/bash -o pipefail -c yes "" | make -C build modules_prepare' returned a non-zero code: 141

According to the output there does not seem to be any error:

Sending build context to Docker daemon  4.608kB
Step 1/22 : FROM nvcr.io/nvidia/deepstream:6.0-triton
 ---> 6e629647efba
Step 2/22 : ENV DEBIAN_FRONTEND noninteractive
 ---> Using cache
 ---> 14c68281630c
Step 3/22 : ENV VERSION="2.83.18%2Brev1.dev"
 ---> Using cache
 ---> 335b81c074f5
Step 4/22 : ENV BALENA_MACHINE_NAME="genericx86-64-ext"
 ---> Using cache
 ---> c7edbb00963b
Step 5/22 : ENV YOCTO_VERSION=5.10.43
 ---> Using cache
 ---> 249c826b797d
Step 6/22 : ENV YOCTO_KERNEL=${YOCTO_VERSION}-yocto-standard
 ---> Using cache
 ---> e461e8e8d344
Step 7/22 : ENV NVIDIA_DRIVER_VERSION=470.86
 ---> Using cache
 ---> 3f03b3e9cc5d
Step 8/22 : ENV NVIDIA_DRIVER=NVIDIA-Linux-x86_64-${NVIDIA_DRIVER_VERSION}
 ---> Using cache
 ---> 6ffdcc3b3f3b
Step 9/22 : RUN apt install -y git wget unzip build-essential libelf-dev bc libssl-dev bison flex software-properties-common
 ---> Using cache
 ---> 6fd098b57193
Step 10/22 : RUN mkdir -p /usr/src/kernel_source
 ---> Using cache
 ---> e78af78d2155
Step 11/22 : WORKDIR /usr/src/kernel_source
 ---> Using cache
 ---> 92736ef43a17
Step 12/22 : SHELL ["/bin/bash", "-o", "pipefail", "-c"]
 ---> Using cache
 ---> 5a2bb2b594f1
Step 13/22 : RUN curl -fsSL "https://files.balena-cloud.com/images/${BALENA_MACHINE_NAME}/${VERSION}/kernel_source.tar.gz"     | tar xz --strip-components=2
 ---> Using cache
 ---> aa9144ca09d0
Step 14/22 : RUN yes "" | make -C build modules_prepare
 ---> Running in 8bc96b153e68
make: Entering directory '/usr/src/kernel_source/build'
  SYNC    include/config/auto.conf.cmd
  HOSTCC  scripts/basic/fixdep
  HOSTCC  scripts/kconfig/conf.o
  HOSTCC  scripts/kconfig/confdata.o
  HOSTCC  scripts/kconfig/expr.o
  LEX     scripts/kconfig/lexer.lex.c
  YACC    scripts/kconfig/parser.tab.[ch]
  HOSTCC  scripts/kconfig/lexer.lex.o
  HOSTCC  scripts/kconfig/parser.tab.o
  HOSTCC  scripts/kconfig/preprocess.o
  HOSTCC  scripts/kconfig/symbol.o
  HOSTCC  scripts/kconfig/util.o
  HOSTLD  scripts/kconfig/conf
*
* Restart config...
*
*
* BPF based packet filtering framework (BPFILTER)
*
BPF based packet filtering framework (BPFILTER) (BPFILTER) [Y/n/?] y
  bpfilter kernel module with user mode helper (BPFILTER_UMH) [M/n/y/?] (NEW) 
*
* Sample kernel code
*
Sample kernel code (SAMPLES) [Y/n/?] y
  auxdisplay sample (SAMPLE_AUXDISPLAY) [N/y/?] (NEW) 
  Build trace_events examples -- loadable modules only (SAMPLE_TRACE_EVENTS) [N/m/?] n
  Build trace_printk module - tests various trace_printk formats (SAMPLE_TRACE_PRINTK) [M/n/?] m
  Build register_ftrace_direct() example (SAMPLE_FTRACE_DIRECT) [N/m/?] n
  Build sample module for kernel access to Ftrace instancess (SAMPLE_TRACE_ARRAY) [N/m/?] n
  Build kobject examples (SAMPLE_KOBJECT) [N/m/y/?] n
  Build kprobes examples -- loadable modules only (SAMPLE_KPROBES) [N/m/?] n
  Build kernel hardware breakpoint examples -- loadable module only (SAMPLE_HW_BREAKPOINT) [N/m/?] n
  Build kfifo examples -- loadable modules only (SAMPLE_KFIFO) [N/m/?] n
  Build kdb command example -- loadable modules only (SAMPLE_KDB) [N/m/?] n
  Build rpmsg client sample -- loadable modules only (SAMPLE_RPMSG_CLIENT) [N/m/?] n
  Build configfs patching sample -- loadable modules only (SAMPLE_CONFIGFS) [N/m/?] n
  Build VFIO mtty example mediated device sample code -- loadable modules only (SAMPLE_VFIO_MDEV_MTTY) [N/m/?] n
  Build VFIO mdpy example mediated device sample code -- loadable modules only (SAMPLE_VFIO_MDEV_MDPY) [N/m/?] n
  Build VFIO mdpy example guest fbdev driver -- loadable module only (SAMPLE_VFIO_MDEV_MDPY_FB) [N/m/?] n
  Build VFIO mdpy example mediated device sample code -- loadable modules only (SAMPLE_VFIO_MDEV_MBOCHS) [N/m/?] n
  watchdog sample (SAMPLE_WATCHDOG) [N/y/?] (NEW) 
  SYSTBL  arch/x86/include/generated/asm/syscalls_32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_32_ia32.h
  SYSHDR  arch/x86/include/generated/asm/unistd_64_x32.h
  SYSTBL  arch/x86/include/generated/asm/syscalls_64.h
  HYPERCALLS arch/x86/include/generated/asm/xen-hypercalls.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_32.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_64.h
  SYSHDR  arch/x86/include/generated/uapi/asm/unistd_x32.h
  HOSTCC  arch/x86/tools/relocs_32.o
  HOSTCC  arch/x86/tools/relocs_64.o
  HOSTCC  arch/x86/tools/relocs_common.o
  HOSTLD  arch/x86/tools/relocs
  HOSTCC  scripts/selinux/genheaders/genheaders
  HOSTCC  scripts/selinux/mdp/mdp
  HOSTCC  scripts/bin2c
  HOSTCC  scripts/kallsyms
  HOSTCC  scripts/recordmcount
  HOSTCC  scripts/sorttable
  HOSTCC  scripts/asn1_compiler
  HOSTCC  scripts/sign-file
  HOSTCC  scripts/extract-cert
  HOSTCC  scripts/insert-sys-cert
  WRAP    arch/x86/include/generated/uapi/asm/bpf_perf_event.h
  WRAP    arch/x86/include/generated/uapi/asm/errno.h
  WRAP    arch/x86/include/generated/uapi/asm/fcntl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctl.h
  WRAP    arch/x86/include/generated/uapi/asm/ioctls.h
  WRAP    arch/x86/include/generated/uapi/asm/ipcbuf.h
  WRAP    arch/x86/include/generated/uapi/asm/param.h
  WRAP    arch/x86/include/generated/uapi/asm/poll.h
  WRAP    arch/x86/include/generated/uapi/asm/resource.h
  WRAP    arch/x86/include/generated/uapi/asm/socket.h
  WRAP    arch/x86/include/generated/uapi/asm/sockios.h
  WRAP    arch/x86/include/generated/uapi/asm/termbits.h
  WRAP    arch/x86/include/generated/uapi/asm/termios.h
  WRAP    arch/x86/include/generated/uapi/asm/types.h
  WRAP    arch/x86/include/generated/asm/early_ioremap.h
  WRAP    arch/x86/include/generated/asm/export.h
  WRAP    arch/x86/include/generated/asm/mcs_spinlock.h
  WRAP    arch/x86/include/generated/asm/irq_regs.h
  WRAP    arch/x86/include/generated/asm/local64.h
  WRAP    arch/x86/include/generated/asm/mm-arch-hooks.h
  WRAP    arch/x86/include/generated/asm/mmiowb.h
  WRAP    arch/x86/include/generated/asm/module.lds.h
  WRAP    arch/x86/include/generated/asm/rwonce.h
  CC      scripts/mod/empty.o
  HOSTCC  scripts/mod/mk_elfconfig
  MKELF   scripts/mod/elfconfig.h
  HOSTCC  scripts/mod/modpost.o
  CC      scripts/mod/devicetable-offsets.s
  UPD     scripts/mod/devicetable-offsets.h
  HOSTCC  scripts/mod/file2alias.o
  HOSTCC  scripts/mod/sumversion.o
  HOSTLD  scripts/mod/modpost
scripts/Makefile.build:414: warning: overriding recipe for target 'modules.order'
Makefile:1421: warning: ignoring old recipe for target 'modules.order'
  DESCEND  objtool
  HOSTCC   /usr/src/kernel_source/build/tools/objtool/fixdep.o
  HOSTLD   /usr/src/kernel_source/build/tools/objtool/fixdep-in.o
  LINK     /usr/src/kernel_source/build/tools/objtool/fixdep
  CC       /usr/src/kernel_source/build/tools/objtool/exec-cmd.o
  CC       /usr/src/kernel_source/build/tools/objtool/help.o
  CC       /usr/src/kernel_source/build/tools/objtool/pager.o
  CC       /usr/src/kernel_source/build/tools/objtool/parse-options.o
  CC       /usr/src/kernel_source/build/tools/objtool/run-command.o
  CC       /usr/src/kernel_source/build/tools/objtool/sigchain.o
  CC       /usr/src/kernel_source/build/tools/objtool/subcmd-config.o
  LD       /usr/src/kernel_source/build/tools/objtool/libsubcmd-in.o
  AR       /usr/src/kernel_source/build/tools/objtool/libsubcmd.a
  CC       /usr/src/kernel_source/build/tools/objtool/arch/x86/special.o
  MKDIR    /usr/src/kernel_source/build/tools/objtool/arch/x86/lib/
  GEN      /usr/src/kernel_source/build/tools/objtool/arch/x86/lib/inat-tables.c
  CC       /usr/src/kernel_source/build/tools/objtool/arch/x86/decode.o
  LD       /usr/src/kernel_source/build/tools/objtool/arch/x86/objtool-in.o
  CC       /usr/src/kernel_source/build/tools/objtool/weak.o
  CC       /usr/src/kernel_source/build/tools/objtool/check.o
  CC       /usr/src/kernel_source/build/tools/objtool/special.o
  CC       /usr/src/kernel_source/build/tools/objtool/orc_gen.o
  CC       /usr/src/kernel_source/build/tools/objtool/orc_dump.o
  CC       /usr/src/kernel_source/build/tools/objtool/builtin-check.o
  CC       /usr/src/kernel_source/build/tools/objtool/builtin-orc.o
  CC       /usr/src/kernel_source/build/tools/objtool/elf.o
  CC       /usr/src/kernel_source/build/tools/objtool/objtool.o
  CC       /usr/src/kernel_source/build/tools/objtool/libstring.o
  CC       /usr/src/kernel_source/build/tools/objtool/libctype.o
  CC       /usr/src/kernel_source/build/tools/objtool/str_error_r.o
  CC       /usr/src/kernel_source/build/tools/objtool/librbtree.o
  LD       /usr/src/kernel_source/build/tools/objtool/objtool-in.o
  LINK     /usr/src/kernel_source/build/tools/objtool/objtool
  LDS     scripts/module.lds
make: Leaving directory '/usr/src/kernel_source/build'
The command '/bin/bash -o pipefail -c yes "" | make -C build modules_prepare' returned a non-zero code: 141

How to reproduce the issue:

FROM nvcr.io/nvidia/deepstream:6.0-triton

ENV DEBIAN_FRONTEND noninteractive

# Set some variables to download the proper header modules
ENV VERSION="2.83.18%2Brev1.dev"
ENV BALENA_MACHINE_NAME="genericx86-64-ext"

# Set variables for the Yocto version of the OS
ENV YOCTO_VERSION=5.10.43
ENV YOCTO_KERNEL=${YOCTO_VERSION}-yocto-standard

# Set variables to download proper NVIDIA driver
ENV NVIDIA_DRIVER_VERSION=470.86
ENV NVIDIA_DRIVER=NVIDIA-Linux-x86_64-${NVIDIA_DRIVER_VERSION}

# Install some prerequisites
RUN apt install -y git wget unzip build-essential libelf-dev bc libssl-dev bison flex software-properties-common

# Workdir
RUN mkdir -p /usr/src/kernel_source
WORKDIR /usr/src/kernel_source

# Causes a pipeline to produce a failure return code if any command errors.
# Normally, pipelines only return a failure if the last command errors.
SHELL ["/bin/bash", "-o", "pipefail", "-c"]

# Download the kernel source then prepare kernel source to build a module.
RUN curl -fsSL "https://files.balena-cloud.com/images/${BALENA_MACHINE_NAME}/${VERSION}/kernel_source.tar.gz" \
    | tar xz --strip-components=2
RUN yes "" | make -C build modules_prepare

How can I fix this?



Solution 1:[1]

You cannot use yes with -o pipefail. The yes program writes to its stdout forever, until someone closes the pipe, and the act of closing the pipe is a failure:

$ bash -c -o pipefail -c 'yes "" | head -n1'

yes: standard output: Broken pipe

Exit code 141 is signal 13 (141 - 128 = 13) and signal 13 is SIGPIPE, which is the error you get for a broken pipe.

Since you don't provide any details about why you are doing this, we can't help, but it's very odd/unusual to be sending text through standard input to programs invoked by make.

Another option that might work is to hide the failure from the calling shell; something like:

(yes "" 2>/dev/null || true) | make -C build modules_prepare

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1