Hide Forgot
Description of problem: running 32 bit apps on amd64 arch which use freetype so, not using stat64 Version-Release number of selected component (if applicable): freetype-2.4.11-11.el7 i686 How reproducible: using wine's tool sfnt2fon within win1.9.2 , when the ttf file 's stat info struct has some field exceed the old stat struct's member, the error overflow returned. sfnt2fon -o coue1255.fon courier.ttf -d 128 13,1255,8 (gdb) shell stat courier.ttf File: ‘courier.ttf’ Size: 17884 Blocks: 40 IO Block: 4096 regular file Device: fd00h/64768d Inode: 7079994055 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ zoge) Gid: ( 1000/ zoge) Access: 2016-01-29 11:10:33.653143506 +0800 Modify: 2016-01-22 22:28:32.000000000 +0800 Change: 2016-01-28 19:45:15.078754468 +0800 Birth: - on my machine and my fs, the inode field exceed u32. I define a macro before the stat.h, every thing is ok. --- a/builds/unix/ftsystem.c 2009-03-14 21:45:26.000000000 +0800 +++ b/builds/unix/ftsystem.c 2016-01-30 10:28:10.199751965 +0800 @@ -58,6 +58,7 @@ #include <sys/types.h> +#define __USE_FILE_OFFSET64 1 #include <sys/stat.h> #ifdef HAVE_FCNTL_H Steps to Reproduce: 1. 2. 3. Actual results: Expected results: Additional info:
Hi zougang, is the specific version of wine you use available via a repository? Which version of freetype are you compiling? How do you run the gdb? Also, you report that this happened in Red Hat Enterprise Linux 7.4 which does not exist. Which version of Red Hat Enterprise Linux do you use? I would like to try to reproduce the problem. Regards
(In reply to Marek Kašík from comment #2) > Hi zougang, > > is the specific version of wine you use available via a repository? Which yes, wine 1.9.2 upstream version > version of freetype are you compiling? How do you run the gdb? freetype-2.4.11-11.el7 i686 run the gdb : gdb sfnt2fon set args -o coue1255.fon courier.ttf -d 128 13,1255,8 b XXX run > Also, you report that this happened in Red Hat Enterprise Linux 7.4 which > does not exist. Which version of Red Hat Enterprise Linux do you use? > I would like to try to reproduce the problem. how to check the el's version? I upgraded from the very beginning verison, I think 7.4 is the newest version, so .... freetype-2.4.11-11.el7 i686----from the pkg's version can you get the os verison? last, I think this question is because my disk and fs layout(maybe none business of the os?), the courier.ttf file's stat info has some field very big, so the old stat syscall failed with overflow. (the field inode below : Inode: 7079994055 ) (gdb) shell stat courier.ttf File: ‘courier.ttf’ Size: 17884 Blocks: 40 IO Block: 4096 regular file Device: fd00h/64768d Inode: 7079994055 Links: 1 Access: (0664/-rw-rw-r--) Uid: ( 1000/ zoge) Gid: ( 1000/ zoge) Access: 2016-01-29 11:10:33.653143506 +0800 Modify: 2016-01-22 22:28:32.000000000 +0800 Change: 2016-01-28 19:45:15.078754468 +0800 Birth: - > > Regards
Created attachment 1120652 [details] source of sfnt2fon
Thank you for the info. I was able to reproduce the problem. Setting _FILE_OFFSET_BITS to 64 at configure time solves the problem for me. I'm proposing the fix for 7.3.
Since the problem described in this bug report should be resolved in a recent advisory, it has been closed with a resolution of ERRATA. For information on the advisory, and where to find the updated files, follow the link below. If the solution does not work for you, open a new bug report. https://rhn.redhat.com/errata/RHBA-2016-2234.html