delorie.com/archives/browse.cgi   search  
Mail Archives: cygwin/2009/08/20/14:09:16

X-Recipient: archive-cygwin AT delorie DOT com
X-SWARE-Spam-Status: No, hits=-1.7 required=5.0 tests=AWL,BAYES_00,J_CHICKENPOX_54,SPF_PASS
X-Spam-Check-By: sourceware.org
Message-ID: <4A8D913B.7030801@tlinx.org>
Date: Thu, 20 Aug 2009 11:08:59 -0700
From: Linda Walsh <cygwin AT tlinx DOT org>
User-Agent: Thunderbird 2.0.0.22 (Windows/20090605)
MIME-Version: 1.0
To: cygwin AT cygwin DOT com
Subject: Re: findutils-4.5.4-1 problem (updatedb crashing)
References: <08B768A95A4E469CB9E03A528139AF31 AT marianPC>
In-Reply-To: <08B768A95A4E469CB9E03A528139AF31@marianPC>
X-Stationery: 0.4.10
X-IsSubscribed: yes
Mailing-List: contact cygwin-help AT cygwin DOT com; run by ezmlm
List-Id: <cygwin.cygwin.com>
List-Subscribe: <mailto:cygwin-subscribe AT cygwin DOT com>
List-Archive: <http://sourceware.org/ml/cygwin/>
List-Post: <mailto:cygwin AT cygwin DOT com>
List-Help: <mailto:cygwin-help AT cygwin DOT com>, <http://sourceware.org/ml/#faqs>
Sender: cygwin-owner AT cygwin DOT com
Mail-Followup-To: cygwin AT cygwin DOT com
Delivered-To: mailing list cygwin AT cygwin DOT com

marian wrote:
> This problem has already been reported  on 7/22/2009 9:37 PM, but I 
> think to have found the reason for it.
> assertion "ent->fts_info == FTS_NSOK || state.type != 0" failed: file 
> "/usr/src/findutils-4.5.4-1/src/findutils-4.5.4/find/ftsfind.c", line 
> 475, function: consider_visiting.
> I have downloaded the sources tarball for findutils-4.5.4-1 and checked 
> line 475 of ftsfind.c. The block of code line 475 is part of, follows:
> 
>  /* Cope with the usual cases. */
>  if (ent->fts_info == FTS_NSOK
>      || ent->fts_info == FTS_NS /* e.g. symlink loop */) (THIS IS LINE 475)

---
	The comment indicates a possible reason though.

	Maybe something in your file system is generating an infinite loop?
	Can you run 'find . ' on the filesystems you are indexing and 
does it 'finish'/run to completion?  Send the output to a file...maybe run it 
using 2 separate Bash windows, in 1 window.  Let's say you are only indexing
'/' in your updatedb script, so in the first bash window, run:
find / >/tmp/allfiles.txt 2>/tmp/allfiles_err.txt&
tail -f /tmp/allfiles_err.txt

In the 2nd window, then run:
tail -f /tmp/allfiles.txt

See if it really can find all the files on your disk and not get into
some sort of infinite loop -- you might be able to notice the loop in
window #2 as it 'speeds by' if you start seeing the pathname growing longer
and longer and it seems to have repeated elements in it.

An easy way to cause this is using 'linkd'.  


I know 'grep'(and fgrep/egrep) will detect infinte loops and die gracefully,
but pcregrep doesn't and will keep building out the pathname until the
pathname gets too long and it fails.  Maybe find doesn't handle something
gracefully?  Just a WAG (Wild-Ass-Guess)....based on the comment.  

Does your updatedb have the option to follow symlinks enabled?  
(find with "-L" would follow such links) -- that might generate the same
type of infinite loop.

Hope that's helpful...
linda

--
Problem reports:       http://cygwin.com/problems.html
FAQ:                   http://cygwin.com/faq/
Documentation:         http://cygwin.com/docs.html
Unsubscribe info:      http://cygwin.com/ml/#unsubscribe-simple

- Raw text -


  webmaster     delorie software   privacy  
  Copyright © 2019   by DJ Delorie     Updated Jul 2019