X-Recipient: archive-cygwin AT delorie DOT com DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org 0D3D0395307C DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=cygwin.com; s=default; t=1625141784; bh=jrfBdIF97TSCGA9dzT2XblEgop7PJPRlpkobeYKZCfQ=; h=To:Subject:Date:List-Id:List-Unsubscribe:List-Archive:List-Post: List-Help:List-Subscribe:From:Reply-To:From; b=xN/RbvepF5dN+1ro3ZW/bUXSWRzpxS8fMgZ02eW5GY6iSQwmcslPpeqSGK0XOawoY DUaCrB01hL1/6p1Ny+bohDXL4+WZZFUlyDEedD5iogjpZILDucr6HPf7Pjb5IpcxsE VensBiEfv1pdABc9psSeiy1puluuVi/Y1uZYL6qw= X-Original-To: cygwin AT cygwin DOT com Delivered-To: cygwin AT cygwin DOT com DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 3322A3865470 X-Brand: 7abm2Q== X-KPN-SpamVerdict: e1=0;e2=0;e3=0;e4=;e6=(e1=10;e3=10;e2=11;e4=10;e6=1 0);EVW:White;BM:NotScanned;FinalVerdict:Clean X-CMAE-Analysis: v=2.4 cv=PdOcOgtd c=1 sm=1 tr=0 ts=60ddb1c8 cx=a_idp_e a=4/rmT19p7yX2nqNQQg5uwQ==:117 a=TOtYYj/GSYWBgm6f19gFrg==:17 a=h8ePZlyUMksA:10 a=IkcTkHD0fZMA:10 a=e_q4qTt1xDgA:10 a=xcQg3-xCUMWoe_1AWFoA:9 a=QEXdDO2ut3YA:10 X-CM-AcctID: kpn AT feedback DOT cloudmark DOT com X-Originating-IP: 77.169.151.208 To: cygwin AT cygwin DOT com Subject: Inode number and file size problems in version 3.2.1 Message-ID: <0cbd1744-ada6-d7b8-dbf5-5617a41470fb@wxs.nl> Date: Thu, 1 Jul 2021 14:15:03 +0200 User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:78.0) Gecko/20100101 Thunderbird/78.11.0 MIME-Version: 1.0 Content-Language: en-GB X-OriginalArrivalTime: 01 Jul 2021 12:15:04.0524 (UTC) FILETIME=[B95288C0:01D76E72] X-RcptDomain: cygwin.com X-Spam-Status: No, score=0.4 required=5.0 tests=BAYES_00, BODY_8BITS, DKIM_SIGNED, DKIM_VALID, DKIM_VALID_AU, DKIM_VALID_EF, JMQ_SPF_NEUTRAL, KAM_NUMSUBJECT, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H3, RCVD_IN_MSPIKE_WL, SPF_HELO_NONE, SPF_PASS autolearn=no autolearn_force=no version=3.4.4 X-Spam-Checker-Version: SpamAssassin 3.4.4 (2020-01-24) on server2.sourceware.org X-BeenThere: cygwin AT cygwin DOT com X-Mailman-Version: 2.1.29 List-Id: General Cygwin discussions and problem reports List-Archive: List-Post: List-Help: List-Subscribe: , From: Ruurd Beerstra via Cygwin Reply-To: Ruurd Beerstra Content-Type: text/plain; charset="utf-8"; Format="flowed" Sender: "Cygwin" Content-Transfer-Encoding: 8bit X-MIME-Autoconverted: from base64 to 8bit by delorie.com id 161CGP9s001256 Hi, I am a long-time user and fan of Cygwin. I use it in a complex build environment of my IVT SSH terminal emulator, some 300.000 lines of C-code with lots of little shell-scripts to build and check. I use flex/bison, ctags, make, gawk, grep and a bunch of other Cygwin utilities. I bought a new PC and decided to to a clean-install of Cygwin to make sure I had the latest version of everything. I ran into various problems, which after checking I found to be bugs in Cygwin (a first for me). So I'm reporting them here. The first problem I ran into was that multiple-pipe commands would hang. A command like this in a CMD file: grep -E "^RUNCMD=|^MAKE=" makefile | sed -e "s/RUNCMD=//" -e "s/^MAKE=/set &/" > %TEMP%\extra.bat would hang. So would stuff like "cat ... | sort | uniq" style commands that I use a lot. I found a patch (cygwin1-20210426.dll) with an updated cygwin1.dll. That fixed the hangs. My 'uname -r' now reports 3.2.1s(0.340/5/3) But then one of my scripts ran into a weird problem: mv: 'allfcn.f.tmp' and 'allfcn.f' are the same file gmake: *** [../make.w32:438: allfcn.f] Error 1 This is produced by this bit of code: gawk -F~ -v outfile=$2 -f ../tools/format.awk tr -d '\r' < $2 > $2.tmp mv $2.tmp $2 Where $2 is "alfcn.f". The GAWK produces a nicely formatted file "allfcn.f", which contains unwanted \r characters which are removed by the 'tr' command. This has worked for 20+ years this way. The 'mv' complains that the source and target are the same. Using ls -i  I see this weirdness: i:\ivt\work>ls -li allfcn* 281474977027142 -rw-r--r--+ 1 ruurd ruurd 8192 Jul  1 12:30 allfcn.f 281474977027142 -rw-r--r--+ 1 ruurd ruurd 8192 Jul  1 12:30 allfcn.f.tmp The inode numbers are the same!  Which is why it thinks the files are the same. Using 'cmp' on them tells me they differ, though. So I insert an 'rm' command of the TMP file and that problem goes away (though it didn't sit well with me that the file size is exactly 8KB for both files, as reported by ls). But then the build complained again: The following keywords are NOT documented in doc/all*.e: See file undoc.keywords gmake: *** [../make.w32:272: ivt.exe] Error 1 That is produced by this bit of code which warns me if I introduce a new feature in IVT without documenting it: if [[ -s undoc.keywords ]] then    echo "The following keywords are NOT documented in doc/all*.e:"    cat undoc.keywords    echo "See file undoc.keywords"    Failure fi So I look at the file: i:\ivt>ls -l undoc.keywords -rw-r--r--+ 1 ruurd ruurd 8192 Jul  1 13:05 undoc.keywords Hmm: Same 8KB again? That file is supposed to be 0 bytes! Check with DIR: i:\ivt>dir undoc.keywords  Volume in drive I is Windows  Volume Serial Number is 2237-3266  Directory of i:\ivt 01/07/2021  13:11                 0 undoc.keywords                1 File(s)              0 bytes                0 Dir(s)  383.936.823.296 bytes free It IS zero bytes!  But Cygwin shows it as 8KB, which is why the "-s" operator says the file is not empty. i:\ivt>stat undoc.sh   File: undoc.sh   Size: 8192            Blocks: 8          IO Block: 65536 regular file Device: 22373266h/574042726d    Inode: 281474977027142  Links: 1 Access: (0700/-rwx------)  Uid: (197609/   ruurd)   Gid: (197609/   ruurd) Access: 2021-07-01 13:12:46.247988400 +0200 Modify: 2021-07-01 13:05:55.035592600 +0200 Change: 2021-07-01 13:05:55.035592600 +0200  Birth: 2021-06-30 13:59:31.554377500 +0200 Hmm. Again, the EXACT same inode number as with the earlier problem, the same 8KB size. I restored my original Cygwin setup from the old laptop (as c:\Cygwin64.old) and use the commands from there on the same file: i:\ivt>stat undoc.keywords   File: undoc.keywords   Size: 8192            Blocks: 8          IO Block: 65536 regular file Device: 22373266h/574042726d    Inode: 281474977027142  Links: 1 Access: (0644/-rw-r--r--)  Uid: (197609/   ruurd)   Gid: (197609/   ruurd) Access: 2021-07-01 13:58:23.261901700 +0200 Modify: 2021-07-01 13:43:34.833286000 +0200 Change: 2021-07-01 13:43:34.833286000 +0200  Birth: 2021-06-30 13:59:31.554377500 +0200 i:\ivt>c:\cygwin64.old\bin\stat undoc.keywords   File: undoc.keywords   Size: 0               Blocks: 0          IO Block: 65536 regular empty file Device: 22373266h/574042726d    Inode: 1970324837303561  Links: 1 Access: (0644/-rw-r--r--)  Uid: (197609/   ruurd)   Gid: (197609/   ruurd) Access: 2021-07-01 13:11:03.478267900 +0200 Modify: 2021-07-01 13:11:03.478267900 +0200 Change: 2021-07-01 13:11:03.478267900 +0200  Birth: 2021-07-01 13:06:51.255125100 +0200 Note the wrong (changing) times when I use the current 'stat' (the first output is not the same as the 2nd one), while the old version consistently reports correct times, size and inode number. A quick test shows that the 'ls' command (I assume caused by the underlying stat(2) call) reports the same inode number for ALL files. It also reports either a size of "0" or 8192 for ALL files. Am I missing some updated DLL? For now, I've gone back to the older version, which works fine.     Help/pointers appreciated,     Ruurd Beerstra -- Problem reports: https://cygwin.com/problems.html FAQ: https://cygwin.com/faq/ Documentation: https://cygwin.com/docs.html Unsubscribe info: https://cygwin.com/ml/#unsubscribe-simple