Skip to content

gvimdiff on Windows generates the same v:fname_out from multiple processes #353

@GoogleCodeExporter

Description

@GoogleCodeExporter
What steps will reproduce the problem?
1. Use gvimdiff -R as the diff tool for Perforce
2. Attempt to diff 8 files at once

What is the expected output? What do you see instead?
I expect to see 8 copies of gvimdiff open showing the diffs of those files

Instead, I get 8 copies of gvimdiff open, usually with one or two complaining:
E810: Cannot read or twite temp files
E97: Cannot create diffs.

What version of the product are you using? On what operating system?
This is VIM 7.4.552 MS-Windows 64-bit GUI version with OLE support compiled by 
veegee@veegee-win8, running on Windows 7 Professional x64

Please provide any additional information below.

I've used echom in my diffexpr, and the issue appears to be that two different 
vim processes have picked the same value for v:fname_out.

For example, a successful process shows:
!C:\\program~1\\GnuWin32\\bin\\diff.exe -a 
C:\Users\paulh\AppData\Local\Temp\VIoD3A5.tmp 
C:\Users\paulh\AppData\Local\Temp\VInD3A6.tmp 
C:\Users\paulh\AppData\Local\Temp\VIdD3B5.tmp

and the failed attempt from the same batch shows
!C:\\program~1\\GnuWin32\\bin\\diff.exe -a 
C:\Users\paulh\AppData\Local\Temp\VIoD3B3.tmp 
C:\Users\paulh\AppData\Local\Temp\VInD3B4.tmp 
C:\Users\paulh\AppData\Local\Temp\VIdD3B5.tmp

So it looks like the filename is merely VI[ond]time.tmp but due to minor 
startup time differences, the output file name for two processes was generated 
at the same time, leading to the same output file.

Using :diffupdate in the failed gvimdiff instance will successfully generate 
the diff

Original issue reported on code.google.com by p_hamp...@wargaming.net on 31 Mar 2015 at 5:04

Metadata

Metadata

Assignees

No one assigned

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions