fsatrace icon indicating copy to clipboard operation
fsatrace copied to clipboard

Make sure every process tree is using unique shared memory.

Open ndmitchell opened this issue 5 years ago • 2 comments

At the moment if you run fsatrace rwm - -- some command twice in parallel then they end up sharing a buffer and results from both get shared. I have solved this in the patch below by making a unique shared memory buffer for each by adding GetTickCount into the name. I have marked this PR draft because it only works on Windows, so you will want to do something slightly different.

I couldn't find a good source of unique data in a portable way. The high resolution C time functions are not available on MingW, and the 1 second time() is insufficient (both in theory and testing). One option is to make it an #ifdef, or maybe you know of a suitable random source.

ndmitchell avatar May 25 '19 20:05 ndmitchell

I have always considered the "-" output to be a debug-only flag. The caller should provide unique output filenames. Is this for the test suite?

jacereda avatar May 26 '19 22:05 jacereda

It's not required by the test suite, but would be if we ever ran it in parallel. I have no strong practical need for this to be fixed. However the spooky action at a distance aspect of the bug was deeply confusing when I encountered it by accident, and it could recur if two people used log.txt in different directories with a relative path (I think) so tempted to say if the fix is easy enough it might be worth it.

ndmitchell avatar May 26 '19 22:05 ndmitchell