Public bug reported: qjoypad 4.3.1-3.1 has been stuck in stonking-proposed for ~346 days. update_excuses reports:
missing build on ppc64el: qjoypad (from 4.3.1-3build2) All other architectures built fine. Build log (ppc64el): https://launchpad.net/ubuntu/+source/qjoypad/4.3.1-3.1/+build/32794460 Failure (at LTO link time): In function 'sendevent', inlined from 'move' at /usr/src/qjoypad-4.3.1-3.1/src/axis.cpp:436:11: /usr/src/qjoypad-4.3.1-3.1/src/event.cpp:8:5: error: 'MEM <unsigned int> [(struct FakeEvent *)&e]' may be used uninitialized [-Werror=maybe-uninitialized] src/axis.cpp:355:15: note: 'MEM <unsigned int> [(struct FakeEvent *)&e]' was declared here lto1: all warnings being treated as errors lto-wrapper: fatal error: make returned 2 exit status Cause: - Upstream's CMakeLists.txt builds with -Wall -Wextra -Werror (line 43). - On ppc64el Ubuntu builds with -O3 and LTO (-flto=auto -ffat-lto-objects) by default. With LTO, sendevent() (event.cpp) gets inlined into Axis::move() (axis.cpp), and gcc-15 can now see that e.type may be read uninitialized, which -Werror makes fatal. Debian has neither -O3 on ppc64el nor LTO by default, so it builds there (Debian has ppc64el binaries of 4.3.1-3.1). The ppc64el build of 4.3.1-3build2 in stonking predates gcc-15. This looks like a real (minor) bug rather than a pure false positive. In Axis::move() (src/axis.cpp ~354-437): void Axis::move( bool press ) { FakeEvent e; if (mode == Keyboard) { ... // sets e.type and e.keycode } else if (press) { ... // sets e.type = MouseMove and e.move.{x,y} } //actually create the event sendevent(e); } When the axis is in a mouse mode and press == false, e is never initialised, and sendevent() reads e.type (switch (e.type) in event.cpp:8). Debian / upstream status: - No open Debian bug for this (it doesn't reproduce in Debian's default flags). - Upstream (https://github.com/panzi/qjoypad) is largely inactive; 4.3.1 is the latest release. Suggested direction (to be done by whoever picks this up): - Fix the code rather than silencing the warning: e.g. return early from Axis::move() in the mouse-mode/release case (there is nothing to send), or at least value-initialise the event (FakeEvent e{}; or memset) so that sendevent() takes no action on an all-zero event. Check what the right behaviour is: with e zeroed, type would be KeyUp with keycode 0, which sendevent() already ignores ("if (e.keycode == 0) return;"), so FakeEvent e{} is a safe minimal fix; an early return is cleaner. - Alternatives (less preferred): add -Wno-error=maybe-uninitialized, or DEB_BUILD_MAINT_OPTIONS += optimize=-lto. - Test-build on ppc64el (PPA, or a ppc64el chroot), upload as an Ubuntu delta, and forward the patch to Debian (and upstream) since the uninitialised read is real on all architectures. ** Affects: qjoypad (Ubuntu) Importance: Undecided Status: New ** Tags: ftbfs ppc64el update-excuse ** Tags added: update-excuse ** Tags added: ftbfs ** Tags added: ppc64el -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2170324 Title: qjoypad FTBFS on ppc64el in stonking: -Werror=maybe-uninitialized in Axis::move() with -O3 + LTO To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/qjoypad/+bug/2170324/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
