[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: armhf version of bzip2 is broken



	Hi.

On Mon, Nov 11, 2019 at 01:24:50PM -0500, Gene Heskett wrote:
> On Monday 11 November 2019 12:34:08 Greg Wooledge wrote:
> 
> > On Mon, Nov 11, 2019 at 12:08:15PM -0500, Gene Heskett wrote:
> > > And its man page says its a 2010 version. And it won't touch a just
> > > over 4G built kernel tarball.
> > >
> > > Suggestions?
> >
> > 0) Give all the background details of your setup, like what version of
> >    Debian you're running, what hardware, what version of bzip2 is
> >    installed, where you got this input file....
> Not debian since your arm is now arm64 from buster on.

Your inability to locate armhf in Debian's main archive is well-known to
debian-arm denizens, but please refrain from spreading your hopefully
honest errors here.


> The problem is that a built kernel is 4038000640 byte when converted to a 
> tarball, but the best compressor is a 2010 version of bzip2 and it has 
> an instant tummy ache with that big a file:
> 
> pi@rpi4:/media/pi/slash $ bzip2 -z 4.19.71-rt24-v7l+.tar
> bzip2: Can't open input file 4.19.71-rt24-v7l+.tar: Value too large for 
> defined data type.

Confirming, real debian armhf is affected. The problematic place is:

$ strace -eopenat bzip2 -z 4038000640
...
openat(AT_FDCWD, "4038000640", O_RDONLY) = -1 EOVERFLOW (Value too large for defined data type)


And EOVERFLOW in openat(2) is:

pathname refers to a regular file that is too large to be opened.  The
usual scenario here is that an application compiled on a 32-bit platform
without -D_FILE_OFFSET_BITS=64 tried to open  a  file  whose  size
exceeds (1<<31)-1 bytes; see also O_LARGEFILE above.  This is the
error specified by POSIX.1; in kernels before 2.6.24, Linux gave the
error EFBIG for this case.


So, yep, you've found a bug in Debian packaging, consider filling it via
proper channels.


EOVERFLOW is a known beast, working workarounds are:

1) "busybox bzip2" instead of "bzip2 -z" (-z is kind of redundant anyway).

2) cat foo | bzip2 -c > foo.bz2


> The realtime is totally moot IMO,

True, one has to build a binary a certain way.

> the size of slightly over 4Gigs is the real problem

First, it's *under* 4Gb (assuming right and proper 1024=1Kb):

$ echo 4038000640/1024/1024/1024 | bc -l
3.76068115234375

Second, it's actually 2Gb-1 that's problematic.

Reco


Reply to: