Public bug reported:

bubblewrap 0.11.2-2 fails to build from source in Ubuntu stonking on
ppc64el.

Regressing architectures (built before with 0.11.1-1, fail now with 0.11.2-2):
  - ppc64el

Build log:
  - 
https://launchpad.net/ubuntu/+source/bubblewrap/0.11.2-2/+build/32845084/+files/buildlog_ubuntu-stonking-ppc64el.bubblewrap_0.11.2-2_BUILDING.txt.gz

Diagnosis (deterministic matcher): compiler-error — GCC 15 on ppc64el rejects
`%s` format arguments in `privileged_op()` (bubblewrap.c lines 1117, 1129,
1178, 1181) that GCC's constant-propagation can prove may be NULL, under
-Werror=format-overflow=. The same code compiles clean on amd64/arm64 because
GCC's null-reachability analysis differs by architecture.

Key errors:
  ../bubblewrap.c:1117:58: error: '%s' directive argument is null 
[-Werror=format-overflow=]
  ../bubblewrap.c:1129:55: error: '%s' directive argument is null 
[-Werror=format-overflow=]
  ../bubblewrap.c:1178:47: error: '%s' directive argument is null 
[-Werror=format-overflow=]
  ../bubblewrap.c:1181:62: error: '%s' directive argument is null 
[-Werror=format-overflow=]

Upstream context: commit ea185f6f in post-0.11.2 HEAD removes the entire
privileged_op() dispatch (large refactor, not cherry-pick safe). Debian
unstable carries the same 0.11.2-2; no sync/merge opportunity exists.

Proposed fix: replace bare arg1/arg2 with `arg1 ? arg1 : "(null)"` /
`arg2 ? arg2 : "(null)"` at the four affected call sites. This tells GCC the
expression is non-NULL at the format call, silencing the diagnostic. No runtime
effect (the assert(failing_path == NULL) that follows already guarantees
non-NULL in success paths).

Proposed patch (untested — requires ppc64el test build before upload):

  --- a/bubblewrap.c
  +++ b/bubblewrap.c
  @@ -1114,7 +1114,7 @@
        if (bind_result != BIND_MOUNT_SUCCESS)
          die_with_bind_result (bind_result, errno, failing_path,
  -                             "Can't remount readonly on %s", arg2);
  +                             "Can't remount readonly on %s", arg2 ? arg2 : 
"(null)");

  @@ -1126,7 +1126,9 @@
        if (bind_result != BIND_MOUNT_SUCCESS)
          die_with_bind_result (bind_result, errno, failing_path,
  -                             "Can't bind mount %s on %s", arg1, arg2);
  +                             "Can't bind mount %s on %s",
  +                             arg1 ? arg1 : "(null)",
  +                             arg2 ? arg2 : "(null)");

  @@ -1177,9 +1179,11 @@
            if (errno == ELOOP)
              die ("Can't make overlay mount on %s with options %s: "
                  "Overlay directories may not overlap",
  -               arg2, arg1);
  +               arg2 ? arg2 : "(null)",
  +               arg1 ? arg1 : "(null)");
            die_with_mount_error ("Can't make overlay mount on %s with options 
%s",
  -                               arg2, arg1);
  +                               arg2 ? arg2 : "(null)",
  +                               arg1 ? arg1 : "(null)");

Suggested version: 0.11.2-2ubuntu1 (Ubuntu-specific delta; Debian carries the
same -2 so a Debian upload is the cleaner long-term fix).

Patch to be added as debian/patches/fix-format-overflow-gcc15.patch, listed in
debian/patches/series. Patch is untested — human review and a ppc64el test
build are required before upload.

** Affects: bubblewrap (Ubuntu)
     Importance: Undecided
         Status: New


** Tags: ftbfs stonking update-excuses

** Tags added: ftbfs stonking update-excuses

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/2157951

Title:
  bubblewrap 0.11.2-2 fails to build from source on ppc64el (FTBFS)

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/bubblewrap/+bug/2157951/+subscriptions


-- 
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to