On 2014-03-02 11:40, Stefan wrote:
> Hi,
> 
> I came up with an even easier repro case. It seems to suffice to trigger the 
> problem by simply committing the problematic file to an empty local 
> repository and having avast installed.
> To whom should I send the repro-case (it requires the zipped-exe-file).
> 


Hi Stefan,

if it works without installed avast or with a different virus scanner 
installed, then I suggest to open a ticket by avast.




>>
>> sry for the belated answer. It took me a while before I had some time to 
>> investigate that issue deeper.
>>
>> Following investigations were done with TSVN 1.8.5 (Subversion 1.8.8) and 
>> Server is now running Visual SVN 2.7.3 (based on SVN 1.8.5).
>>
>>>> I traced the issue down to obvious problems with a certain directory in the
>>>> repository. Ignoring/Skipping that directory and the check-out as well as 
>>>> the
>>>> update operation work fine.
>>>>
>>>> Looking into the .svn/tmp-directory I do see a single existing file:
>>>> trz2A87.tmp but obviously there's no trace of the mentioned svn-E78ED003 
>>>> file.
>>> Can you possibly come up with a reproduction recipe that doesn't require 
>>> access
>>> to your repo (unless of course your repo is publicly accessible)?
>> I hope to be able to try that out later today. But no promises.
>>
>>> The errors you're getting are coming from the run_file_install() step of the
>>> workqueue processor.  It's rather hard to understand what's going just from 
>>> the
>>> error messages.  Based on what you're saying it seems like the temp file 
>>> we're
>>> trying to move into place doesn't exist.  Since looking at the code we try 
>>> to
>>> install the file, and then trap a ENOENT error from the rename call.  When 
>>> the
>>> rename call fails with ENOENT we try to create the destination directory.
>>> Which fails and thus you see the errors.
>>>
>>> Right above the code generating the error it creates and writes the temp 
>>> file.
>>>   So I would expect to be seeing an error message from that if the file 
>>> isn't
>>> being created.
>> I debugged the code directly and didn't run into the breakpoint I set in 
>> run_file_install().
>> The code-path which returns the error seems to be somewhere else in my case 
>> (or did I get u wrong here).
>> From what I can tell, it goes like this:
>> [...]
>> - svn_wc__db_pristine_install()
>>     - calls: svn_io_file_rename()
>>         - calls: svn_io_file_rename()
>>             - calls: apr_file_rename(from_path_apr, to_path_apr, pool);
>>                 - calls: if (MoveFileExW(wfrompath, wtopath, 
>> MOVEFILE_REPLACE_EXISTING || MOVEFILE_COPY_ALLOWED))
>>  That one returns a status code of 720,002. If I'm reading the APR-macros 
>> correctly, that corresponds to a window system error of 2 - which according 
>> to MSDN means: ERROR_FILE_NOT_FOUND.
>>
>> Setting a breakpoint right before that Move-call in apr_file_rename suggests 
>> it's trying to move the following file:
>> G:\Egosoft\X4\Source\.svn\tmp\svn-C5D6631B
>> to
>> G:\Egosoft\X4\Source\.svn\pristine\00\0077903324a83da0419971daeb632ff51529d320.svn-base
>>
>> Looking at the .svn/tmp-directory I do see that a file with the expected 
>> file contents was created, but is named differently:
>> trz5B5.tmp
>>
>> From that point, it's obvious that the move-call would fail, since the given 
>> filename seems to differ from that on the disk.
>>
>> Taking ur statement into account I assume that SVN tries to actually put a 
>> differently named file into that folder and somehow that one seems to get 
>> mangled on my system to a different filename.
>> If so, I could try to debug the code a bit further. Would u have the 
>> function for me I'd investigate to trace down where the temp-file would be 
>> created?
>>
>>> One question I do have is have you done anything unusual with how your file
>>> system is setup?  The .svn/tmp directory needs to be on the same file 
>>> system as
>>> the rest of the working copy since we're doing atomic renames to put files 
>>> into
>>> place.
>> There's nothing special from the file system set-up point of view. The drive 
>> is a simple local partition on an IDE drive. There are no symlinks or 
>> somesuch in place. File system is NTFS. The issue is reproducible on two 
>> different machines, both running Avast Antivirus. I don't know much about 
>> the set-up on the other machine, but I would expect it's somehow the same.
>>
>>>>> we recently started getting this error when trying to update or check-out 
>>>>> a
>>>>> repository.
>>>>> Weird thing is that the issue only occurs when we try to check-out/update 
>>>>> the
>>>>> thing externally (meaning via VPN).
>>> So same machine, same working copy doesn't work over the VPN but does 
>>> without a
>>> VPN?  Is the working copy perhaps on a network filesystem?
>> No, sry, wasn't clear enough. We didn't test whether it's at all related to 
>> a VPN-connection. We can't atm test it without a VPN connection to test 
>> whether it's at all related to that. I'll try to do a local set-up of a 
>> working copy to see whether it's reproducible in that environment too. Can't 
>> tell atm when I got the time to get it done, but might have a few minutes 
>> left today. Let's see.
>>
>> Regards,
>> Stefan
>>
> 
> 

Reply via email to