This bug is awaiting verification that the linux-azure/6.8.0-1012.14 kernel in -proposed solves the problem. Please test the kernel and update this bug with the results. If the problem is solved, change the tag 'verification-needed-noble-linux-azure' to 'verification-done-noble- linux-azure'. If the problem still exists, change the tag 'verification- needed-noble-linux-azure' to 'verification-failed-noble-linux-azure'.
If verification is not done by 5 working days from today, this fix will be dropped from the source code, and this bug will be closed. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation how to enable and use -proposed. Thank you! ** Tags added: kernel-spammed-noble-linux-azure-v2 verification-needed-noble-linux-azure -- You received this bug notification because you are a member of Kernel Packages, which is subscribed to linux-signed-azure in Ubuntu. https://bugs.launchpad.net/bugs/2071445 Title: Ubuntu 24.04 for Azure unable to run 32bit binaries Status in linux-azure package in Ubuntu: Triaged Status in linux-signed-azure package in Ubuntu: Invalid Status in linux-signed-azure-6.8 package in Ubuntu: Invalid Status in linux-azure source package in Noble: Fix Committed Bug description: [Impact] ## Issue details The configuration of the kernel in linux-image-6.8.0-1008-azure is incompatible with the way libc6:i386 is built. This leads to the error "The futex facility returned an unexpected error code." and application crash when trying to execute many 32bit applications in x86-64 machines. In very short the issue is the following: This kernel image is compiled with CONFIG_COMPAT_32BIT_TIME=n, unlike the vanilla Ubuntu 24.04 kernel images. But, the glibc / libc6:i386 distributed with Ubuntu24.04 is compiled needing the syscalls enabled with that option. i.e. **This kernel configuration is just incompatible with the provided glibc** In detail: glibc when built for 32bit, if not told which kernel is built for, will decide if the time_t value fits or not in a 32bit time_t, and do either the 32 or 64bit syscall: https://sourceware.org/git/?p=glibc.git;a=blob;f=nptl/futex-internal.c;h=0bb1dd51f66802521afd71b9246222ed0ea0d862;hb=refs/heads/release/2.39/master#l90 calls with no deadline fit in the 32bit version, but as the kernel does not provide this syscall, glibc will just get a ENOSYS, and glibc will error out aborting the program ``` abort (abort.c:79) __libc_message_impl.cold (libc_fatal.c:132) __libc_fatal (libc_fatal.c:141) futex_fatal_error (futex-internal.h:87) __futex_abstimed_wait_common (futex-internal.c:119) ``` after printing "The futex facility returned an unexpected error code.\n": https://sourceware.org/git/?p=glibc.git;a=blob;f=sysdeps/nptl/futex-internal.h;h=0e87e92d15ab92f5069463719a494e97d9800431;hb=refs/heads/release/2.39/master#l87 ## Expected behavior: * No crashes for 32bit applications with this kernel * This kernel image built with CONFIG_COMPAT_32BIT_TIME=y ## Aditional info: For reference, this is the current vanilla Ubuntu 24.04 kernel for x86_64 and this config: ``` $ uname -a Linux <redacted> 6.8.0-35-generic #35-Ubuntu SMP PREEMPT_DYNAMIC Mon May 20 15:51:52 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux $ grep CONFIG_COMPAT_32BIT_TIME /boot/config-$(uname -r) CONFIG_COMPAT_32BIT_TIME=y ``` On the other hand this is the kernel config for this kernel image: ``` Linux <> 6.8.0-1008-azure #8-Ubuntu SMP Fri May 17 10:44:55 UTC 2024 x86_64 x86_64 x86_64 GNU/Linux # CONFIG_COMPAT_32BIT_TIME is not set ``` Related github issue (the issue was found in github ubuntu 24.04 runners) https://github.com/actions/runner-images/issues/9977 [Fix] Reenable COMPAT_32BIT_TIME [Test Case] See above. [Where Problems Could Occur] Disabling COMPAT_32BIT_TIME in Noble azure introduced a regression when running x86 binaries, so the fix is not expected to break anything (new). To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu/+source/linux-azure/+bug/2071445/+subscriptions -- Mailing list: https://launchpad.net/~kernel-packages Post to : kernel-packages@lists.launchpad.net Unsubscribe : https://launchpad.net/~kernel-packages More help : https://help.launchpad.net/ListHelp