id = 1557 title = "qemu-binfmt-conf.sh handles errors inconsistently" state = "opened" created_at = "2023-03-25T15:33:30.574Z" closed_at = "n/a" labels = ["linux-user"] url = "https://gitlab.com/qemu-project/qemu/-/issues/1557" host-os = "n/a" host-arch = "n/a" qemu-version = "n/a" guest-os = "n/a" guest-arch = "n/a" description = """We are installing qemu via multiarch/qemu-user-static docker image. https://github.com/multiarch/qemu-user-static What we have noticed is that because qemu-binfmt-conf.sh does not use `set -e`, its behavior with regards to failures is inconsistent. In short, registering the same thing into binfmt twice is an error (you get EEXIST). However, the exit code of qemu-binfmt-conf.sh itself seems to depend only on whether the last interpreter succeeded, leading to confusing and inconsistent results.""" reproduce = """1. Register only qemu-arm-static interpreter with binfmt. 2. Run qemu-binfmt-conf.sh. Observe that the exit code is zero, and logs show the duplicate interpreter was rejected. 3. Remove all qemu interpreters. 3. Register only qemu-loongarch64-static interpreter (currently last in qemu_target_list) with binfmt. 3. Run qemu-binfmt-conf.sh. Observe that the exit code is non-zero, and logs show the duplicate interpreter was rejected.""" additional = "n/a"