Ubuntu 24.04 for Azure unable to run 32bit binaries
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
linux-azure (Ubuntu) |
Triaged
|
Undecided
|
Unassigned | ||
Noble |
Fix Released
|
Undecided
|
Vinicius Peixoto | ||
linux-signed-azure (Ubuntu) |
Invalid
|
Undecided
|
Unassigned | ||
linux-signed-azure-6.8 (Ubuntu) |
Invalid
|
Undecided
|
Unassigned |
Bug Description
[Impact]
## Issue details
The configuration of the kernel in linux-image-
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_
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:/
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_
__libc_fatal (libc_fatal.c:141)
futex_fatal_error (futex-
__futex_
```
after printing "The futex facility returned an unexpected error code.\n":
https:/
## Expected behavior:
* No crashes for 32bit applications with this kernel
* This kernel image built with CONFIG_
## 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_
CONFIG_
```
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_
```
Related github issue (the issue was found in github ubuntu 24.04 runners)
https:/
[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).
CVE References
information type: | Public → Public Security |
information type: | Public Security → Public |
Changed in linux-azure (Ubuntu): | |
status: | New → Confirmed |
Changed in linux-signed-azure (Ubuntu): | |
status: | Confirmed → Invalid |
Changed in linux-signed-azure-6.8 (Ubuntu): | |
status: | New → Invalid |
Changed in linux-raspi (Ubuntu): | |
status: | New → Confirmed |
description: | updated |
description: | updated |
Changed in linux-azure (Ubuntu): | |
status: | Confirmed → Triaged |
Changed in linux-azure (Ubuntu Noble): | |
status: | New → Confirmed |
Changed in linux-raspi (Ubuntu Noble): | |
status: | New → Fix Released |
Changed in linux-signed-azure (Ubuntu Noble): | |
status: | New → Invalid |
Changed in linux-signed-azure-6.8 (Ubuntu Noble): | |
status: | New → Invalid |
no longer affects: | linux-raspi (Ubuntu) |
no longer affects: | linux-raspi (Ubuntu Noble) |
no longer affects: | linux-signed-azure (Ubuntu Noble) |
no longer affects: | linux-signed-azure-6.8 (Ubuntu Noble) |
Changed in linux-azure (Ubuntu Noble): | |
assignee: | nobody → Vinicius Peixoto (vpeixoto) |
Changed in linux-azure (Ubuntu Noble): | |
status: | Confirmed → Fix Committed |
lsb_release -a:
Distributor ID: Ubuntu
Description: Ubuntu 24.04 LTS
Release: 24.04
Codename: noble
apt-cache policy linux-image-azure:
linux-image-azure: azure.archive. ubuntu. com/ubuntu noble-updates/main amd64 Packages azure.archive. ubuntu. com/ubuntu noble-security/main amd64 Packages dpkg/status azure.archive. ubuntu. com/ubuntu noble/main amd64 Packages
Installed: 6.8.0-1008.8
Candidate: 6.8.0-1009.9
Version table:
6.8.0-1009.9 500
500 http://
500 http://
*** 6.8.0-1008.8 100
100 /var/lib/
6.8.0-1007.7 500
500 http://