[Bug 1850184] Re: losetup -f broken in 2.0.6-1ubuntu2
Dimitri John Ledkov
launchpad at surgut.co.uk
Thu Oct 31 18:57:23 UTC 2019
This is my replacement "minimized" losetup.c that exhibits the problem.
Simply, drop this into klibc sources
and run:
./debian/rules build; sudo ./usr/utils/static/losetup
1 Argc before find_unused_loop_devices()
0 Argc after find_unused_loop_devices()
Argc values before and after did not match.
Note that same source works fine as glibc binary:
gcc ./usr/utils/losetup.c; sudo ./a.out
1 Argc before find_unused_loop_devices()
1 Argc after find_unused_loop_devices()
** Attachment added: "losetup.c"
https://bugs.launchpad.net/ubuntu/+source/klibc/+bug/1850184/+attachment/5301878/+files/losetup.c
--
You received this bug notification because you are a member of Ubuntu
Foundations Bugs, which is subscribed to klibc in Ubuntu.
https://bugs.launchpad.net/bugs/1850184
Title:
losetup -f broken in 2.0.6-1ubuntu2
Status in gcc-9 package in Ubuntu:
New
Status in klibc package in Ubuntu:
Fix Released
Status in linux package in Ubuntu:
Incomplete
Status in gcc-9 source package in Eoan:
New
Status in klibc source package in Eoan:
New
Status in linux source package in Eoan:
Incomplete
Status in gcc-9 source package in Focal:
New
Status in klibc source package in Focal:
Fix Released
Status in linux source package in Focal:
Incomplete
Bug description:
[Impact]
* sudo /usr/lib/klibc/bin/losetup -vf, which appears to be missbuilt,
as main(argc) is reset to zero, after ioctl() operations in a function
call, quite unexpectadly.
[Test Case]
* $ sudo /usr/lib/klibc/bin/losetup -vf
Loop device is /dev/loop20
loop: can't get info on device /dev/loop20: No such device or address
is bad.
Note that ioctl() must succeed, thus loop0 device must be configured
to trigger the bug.
[Regression Potential]
* klibc is quite special, as it uses linux kernel headers/assembly.
It seems like there is incompatibility between klibc sources, and
gcc-9 with linux-5.3 when used to build userspace programmes.
* disabling cf-protection and stack-clash-protection did not help.
* building with gcc-8 does not exhibit the problem.
* the workaround is quite simple in the code, keep a copy of argc to
compare to it later in the code.
[Other Info]
* Original bug report
http://autopkgtest.ubuntu.com/packages/c/casper/focal/amd64
https://objectstorage.prodstack4-5.canonical.com/v1/AUTH_77e2ada1e7a84929a74ba3b87153c0ac
/autopkgtest-focal/focal/amd64/c/casper/20191025_214555_df8b8@/log.gz
...
[ 11.751912] EXT4-fs (sda1): mounting ext2 file system using the ext4 subsystem
[ 11.761441] EXT4-fs (sda1): mounted filesystem without journal. Opts: (null)
loop: can't get info on device /dev/loop1: No such device or address
BusyBox v1.30.1 (Ubuntu 1:1.30.1-4ubuntu4) built-in shell (ash)
Enter 'help' for a list of built-in commands.
(initramfs) [6n+ mkdir result
+ set -x
+ read LINE
+ grep -e '^--OUT .* BEGIN-- .* --END--$' qemu-output.txt
++ grep -q /rofs result/lsblk.txt
grep: result/lsblk.txt: No such file or directory
autopkgtest [21:45:45]: test boot: -----------------------]
autopkgtest [21:45:45]: test boot: - - - - - - - - - - results - - - - - - - - - -
boot FAIL non-zero exit status 2
autopkgtest [21:45:45]: @@@@@@@@@@@@@@@@@@@@ summary
boot FAIL non-zero exit status 2
...
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/gcc-9/+bug/1850184/+subscriptions
More information about the foundations-bugs
mailing list