[Vm-dev] Re: Strange InvalidDirectoryErrors on Unix

Andreas Raab andreas.raab at gmx.de
Tue Apr 10 23:17:38 UTC 2007

Hi -

Turns out my analysis was a red herring - the InvalidDirectoryError I 
received was actually a genuine problem which caused the whole 
computation to abort before it even reached the updating part. I got 
confused because I didn't realize that the problem might be caused 
before it ever gets to the updating part and invoking the updater 
manually would of course work.

Apologies for making a fuzz over nothing.

   - Andreas

Andreas Raab wrote:
> J J wrote:
>> What kind of filesystem is this on?  Are you accessing the directory 
>> via NFS or any other indirect means?  What kind of modifications are 
>> happening to the directory?
> It's an ext3 file system locally mounted. The modifications consist of 
> adding and removing both files and directories.
>> I have not seen this in Squeak, but it reminds me of what happens when 
>> something causes an inode change underneath a running process.
> Right, I've seen that too. But if you look at the FileDirectory code 
> you'll notice that the only thing it uses is a fully qualified path; it 
> does not have any internal state other than that. Because of this, the 
> VM ought to check every time you are querying, or if it caches it ought 
> to know when to recheck (most definitely upon failure).
> Cheers,
>   - Andreas
>> Example:
>> On a unix/linux box you cd to /some/place/nice.  Then on another shell 
>> you cd to /some/place and rm -rf nice.  Then copy a new "nice" 
>> directory from somewhere else, so that the directory structure is as 
>> it was before.  Now you go back to the original shell and ls, but you 
>> get the error ". no such file or directory" or something similar.  
>> Clearly the directory does exist, but the problem is your shell is 
>> still referencing the previous inodes that are no longer valid.  And I 
>> have even seen certain backup systems cause this.
>> So in your case, maybe the VM or your code is holding a reference to 
>> the directory some how and another process is causing an inode change 
>> in some way, which causes the error.  When you run it in the debugger, 
>> it bypasses the cache somehow causing it to work again.
>> Just a wild guess, but that's all I can think of.
>> Hope it helps,
>> Jason
>>> From: Andreas Raab <andreas.raab at gmx.de>
>>> Reply-To: The general-purpose Squeak developers 
>>> list<squeak-dev at lists.squeakfoundation.org>
>>> To: The general-purpose Squeak developers 
>>> list<squeak-dev at lists.squeakfoundation.org>, Squeak Virtual Machine 
>>> Development Discussion<vm-dev at lists.squeakfoundation.org>
>>> Subject: Strange InvalidDirectoryErrors on Unix
>>> Date: Mon, 09 Apr 2007 22:30:32 -0700
>>> Hi Folks -
>>> I had an odd effect today and I'm wondering if other people might 
>>> have seen something similar in the past. One of our Linux servers 
>>> (which has been running happily for a week) has an update process 
>>> running which every five minutes checks to see if there is new data 
>>> on the disk and if so, updates itself from it.
>>> Today, I noticed that it stopped updating itself and investigating 
>>> showed that it hit repeatedly an "InvalidDirectoryError" when trying 
>>> to update itself. Trying to understand what was going on I went into 
>>> the system life via VNC and stepped through the update method and 
>>> suddenly it started working again! No more InvalidDirectoryErrors, 
>>> updating went fine.
>>> I'm at a complete loss as what might have caused this error. 
>>> Unfortunately (since I was doing it on the life system) I couldn't 
>>> investigate the error condition closer but there is a possibility 
>>> that directory service had been used from different threads. Anyone 
>>> having any ideas? (the only thing I am certain is that attaching VNC 
>>> was *not* what it made it working again - I saw the error while I was 
>>> in there with VNC and it became working again after I stepped through 
>>> the method).
>>> Any help is greatly appreciated. So are similar experiences and 
>>> workarounds for the issue. The server itself is running Fedora Core 4.
>>> Cheers,
>>>   - Andreas
>> _________________________________________________________________
>> Get a FREE Web site, company branded e-mail and more from Microsoft 
>> Office Live! http://clk.atdmt.com/MRT/go/mcrssaub0050001411mrt/direct/01/

More information about the Vm-dev mailing list