[Flac-dev] amd64 issue with flac-1.1.3 beta2

David Collett daveco at users.sourceforge.net
Sat Nov 4 16:17:03 PST 2006

Hi Josh,

I got a new computer yesterday, a 64bit intel core 2 duo. I am running
the amd64 port of Ubuntu 6.10 (edgy). I compiled flac-1.1.3 beta and had
trouble encoding:

dave at jimmy:/tmp$ ./bin/flac -o /tmp/foo.flac foo.wav 

flac 1.1.3-beta2, Copyright (C) 2000,2001,2002,2003,2004,2005,2006  Josh Coalson
flac comes with ABSOLUTELY NO WARRANTY.  This is free software, and you are
welcome to redistribute it under certain conditions.  Type `flac' for details.

options: -P 8192 -b 4608 -m -l 8 -q 0 -r 3,3
foo.wav: 99% complete, ratio=0.722
foo.wav: ERROR during encoding

An error occurred while writing; the most common cause is that the disk is full.

Strace reveals this:

write(4, "\377\370Y\210\340\266\253\223\22\0\2\f?\377\375\235\235"..., 1652) = 1652
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
read(3, "\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0"..., 4096) = 4096
write(4, "\377\370Y\30\340\266\254\320\22\0\1\f\31\323\356R\315/"..., 1276) = 1276
write(4, "", 47747151429632)            = 199596
write(4, "", 47747151230036)            = -1 EFAULT (Bad address)
write(2, "\nfoo.wav: ERROR during encoding\n", 32
foo.wav: ERROR during encoding

The final write is getting a bogus size.

I think I have tracked it down to "FLAC__bitbuffer_get_buffer" in
bitbuffer.c taking an unsigned * for bytes, but "write_bitbuffer_" in
stream_encoder.c is passing a size_t *. On my system it looks like unsigned
is 4 bytes, where size_t is 8 bytes.

Changing FLAC__bitbuffer_get_buffer to take a size_t * seems to fix it.
But as I said, I only have 1 days amd64 experience, so I don't really
know what I am doing! I also havent checked if anyone else is calling
get_buffer with an unsigned * so maby this will break elseware now.

Has anyone else tested on amd64?
Let me know if you want me to do any more tests.


More information about the Flac-dev mailing list