in reply to Re: Spurious "Invalid Argument" on file open
in thread Spurious "Invalid Argument" on file open

What do you get from $^E
I don't know (yet). I already thought to output this value too, but I can't do any changes to the application during the next couple of weeks, so this has to wait.

I thought maybe the effect I'm experiencing might be well known already, so someone could already have a good guess what's going wrong. I now understand that this error code is far too general, to reasonably diagnose the problem....

-- 
Ronald Fischer <ynnor@mm.st>

Replies are listed 'Best First'.
Re^3: Spurious "Invalid Argument" on file open
by BrowserUk (Patriarch) on Oct 23, 2012 at 20:40 UTC

    The most likely reason -- especially given the network involvement -- is TOCTTOU.


    With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
    Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
    "Science is about questioning the status quo. Questioning authority".
    In the absence of evidence, opinion is indistinguishable from prejudice.

    RIP Neil Armstrong

      I don't see the possibility for a race condition here. A race condition could happen, if something changes to the file between the time I check the existence, and the time I read the file. However, the file is pretty static: It is kind of a configuration file, and after it is created, it doesn't change for weeks, maybe months.

      -- 
      Ronald Fischer <ynnor@mm.st>
        A race condition could happen, if something changes to the file between the time I check the existence, and the time I read the file. However, the file is pretty static:

        With the network involved, it doesn't have to be the file that changed. Any temporary resource state in the fabric between you and the actual file could -- breifly -- manifest itself as in an inability to open the file.

        I'd suggest cutting out the possibility of a race by just opening the file. And if the open fails, retry some number of times before logging an error:

        for my $try ( 1 .. RETRIES ) { if(open(my $rule_fh,'<',$rule_file)) { last; } if( $try == RETRIES ) { die "Can not read file $rule_file : $! / $^E"; } }

        With the rise and rise of 'Social' network sites: 'Computers are making people easier to use everyday'
        Examine what is said, not who speaks -- Silence betokens consent -- Love the truth but pardon error.
        "Science is about questioning the status quo. Questioning authority".
        In the absence of evidence, opinion is indistinguishable from prejudice.

        RIP Neil Armstrong