jacereda / fsatrace

Filesystem access tracer
ISC License
81 stars 12 forks source link

Make sure every process tree is using unique shared memory. #30

Open ndmitchell opened 5 years ago

ndmitchell commented 5 years ago

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.

jacereda commented 5 years ago

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?

ndmitchell commented 5 years ago

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.