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 |