[Lldb-commits] [PATCH] D56231: [lldb-server] Improve support on Windows

Zachary Turner via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Mon Jan 7 10:14:47 PST 2019

zturner added inline comments.

Comment at: source/Host/common/File.cpp:606-607
     long cur = ::lseek(m_descriptor, 0, SEEK_CUR);
+    SeekFromStart(offset);
     error = Write(buf, num_bytes);
Be careful here.  `pwrite` on posix is atomic, which means that if multiple threads both use `pwrite` at different offsets, there is no race condition.    The only way to do a similar atomic write-at-offset on Windows is with overlapped i/o., and it's a completely different API / interface.

I mention this because in a previous review Pavel suggested to change `lldb-server` to spawn 1 thread / connection instead of 1 process / connection, so this can be a real problem in such a scenario if they are racing for the same file.  Probably they won't be, since each connection will use different output files, but we should at least be aware of (and perhaps document) the different in atomicity semantics here.

Alternatively, we could just err on the side of safety and put this in a mutex.




More information about the lldb-commits mailing list