ilya-biryukov added a comment. In D54995#1314912 <https://reviews.llvm.org/D54995#1314912>, @zturner wrote:
> Original patch description says this: > > > There are reported cases of non-system files being locked by libclang on > > Windows (and likely by other clients as well) > > What is the nature of the reports? What operation is attempted on the files > and fails due to locking? And which application is it that's failing and in > what way? https://bugreports.qt.io/browse/QTCREATORBUG-15449 was mentioned previously in the thread. I've tried reproducing with the provided example and succeeded: if I map a view of the file, none of the editors would be able to write into that file. I tried various combinations of flags, trying really hard to do readonly and copy-on-write mapping, but none would work, a file cannot be written into while there are active mapped views of the it. E.g. for VSCode process monitor reports it eventually tries to call SetEndOfFile <https://docs.microsoft.com/en-us/windows/desktop/api/fileapi/nf-fileapi-setendoffile> and fails with `ERROR_USER_MAPPED_FILE` error (it can be found in the list of errors <https://docs.microsoft.com/en-gb/windows/desktop/Debug/system-error-codes--1000-1299-> from Microsoft). There's this also Stackoverflow question <https://stackoverflow.com/questions/41844842/when-error-1224-error-user-mapped-file-occurs> mentioning some cases where this occurs. It looks like there's no workaround for this case in the Windows APIs, so I guess we'll have to trade-off memory in that case and read the whole file using the classical file APIs. @yvvan, I was proven wrong. Thanks for taking your time to go through the trouble of providing this example. I'm not sure why my previous experiments came up with a different result, I've probably made a mistake somewhere along the way. Nevertheless, could we avoid changing the defaults to `true`? We probably forgot to propagate the flag somewhere, those places should be easy to find by **temporarily** removing the default args, rerunning the build for libclang and then bringing the default args back. It's fine to enable this behavior for editors, but various command-line tools, including the compiler, are definitely better off using the memory-mapped files. CHANGES SINCE LAST ACTION https://reviews.llvm.org/D54995/new/ https://reviews.llvm.org/D54995 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org http://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits