Gentoo Archives: gentoo-dev

From: Mike Frysinger <vapier@g.o>
To: gentoo-dev@l.g.o
Subject: Re: [gentoo-dev] LFS QA warnings coming soon to a build near you
Date: Wed, 03 Jun 2015 11:41:44
Message-Id: 20150603114130.GH23039@vapier
In Reply to: Re: [gentoo-dev] LFS QA warnings coming soon to a build near you by Alexis Ballier
1 On 03 Jun 2015 10:26, Alexis Ballier wrote:
2 > On Tue, 2 Jun 2015 10:13:54 -0400 Mike Frysinger wrote:
3 > > On 01 Jun 2015 10:15, Alexis Ballier wrote:
4 > > > On Sun, 31 May 2015 11:17:50 -0400 Mike Frysinger wrote:
5 > > > > (3) considering the glibc effort has been stalled for over a year,
6 > > > > (1) is something we can help accomplish and make reasonable
7 > > > > progress on (4) glibc isn't the only one that implements LFS in a
8 > > > > transparent backwards compatible manner
9 > > >
10 > > > maybe the fact that some file operations are broken with glibc's
11 > > > default settings on a somewhat popular fs would be a good argument
12 > > > to un-stall it ?
13 > >
14 > > it isn't that black & white. while for many packages the change
15 > > would be harmless, glibc is more conservative than that. it can be
16 > > shown that a not uncommon coding style is to use long's everywhere
17 > > when dealing with the fs. when sizeof(off_t)==sizeof(long), this
18 > > works out. when off_t is suddenly twice as large, then you can get
19 > > truncation at best (which is kind of the status quo) and random
20 > > corruption at worse (like an API that takes pointers to off_t's but
21 > > the caller passed in a long). if you want to join the list upstream
22 > > and contribute to the discussion, you're more than welcome to. the
23 > > maintainers aren't clueless -- they fully understand the trade-offs
24 > > we're discussing here and know that 32bit fs accesses lead to
25 > > failures (including stat).
26 > >
27 > > since sitting on our hands and hoping for the best continues to
28 > > accomplish nothing, getting the various upstream packages to opt-in
29 > > to LFS themselves can make real progress now.
30 >
31 > agreed, thanks for the explanation
32 >
33 > i take it as the main goal of these qa warnings is to fix the above
34 > mentioned half broken packages and that pushing lfs flags everywhere is
35 > a slow but safe way to achieve it :)
36 >
37 > it'd be interesting to have data about how many packages can break;
38 > my belief is that more than half the c/c++ programs use one way or
39 > another fs ops but maybe less than one in a thousand will break; i can
40 > understand this is still too much for a libc (even though other
41 > 'breaking fixes' weren't so controversial in the past), and we'll see
42 > after gathering the data your qa warnings will provide
43
44 let's ignore the open/read/write issue for now on the assumption it's more
45 uncommon to incidentally have that break. instead, let's look at things that
46 can hit inodes -- stat & dir listing. a file simply being allocated a 64bit
47 inode will break an app -- both directly stating and even trying to list the
48 dir. oops! :)
49
50 here's the command i'm using for just inode funcs:
51 scanelf / -mqRygs \
52 '^((__)?[fl]?x?stat(v?fs)?(at)?|alphasort|getdirentries|readdir(_r)?|scandir(at)?|versionsort)$'
53 you'd have to ignore glibc and sandbox as they provide both 32bit & 64bit.
54
55 i have an x86 chroot for random testing, but it's not as "full" as my desktop.
56 it has a measily 245 packages installed. of those:
57 - 25 are using 32bit inode functions
58 - 34 are using some 32bit fs interface (this is a superset of the above)
59
60 if someone had a fuller install of like >1000 pkgs, that'd be interesting.
61
62 > > as i already said, changing the default in *glibc* doesn't help
63 > > non-glibc systems.
64 >
65 > even with ten different libc's, the order of magnitude is still smaller
66 > for changing the default :)
67
68 true. each fight though will be significantly higher i think, assuming you can
69 even find someone to talk to (as not all are open source projects). and it will
70 take longer for the fix to trickle out to deployments.
71 -mike

Attachments

File name MIME type
signature.asc application/pgp-signature