Open dorooleg opened 6 years ago
Hi @dorooleg,
Do you actually have something so expensive that justifies fork + several socket calls + several context switches? This should be something notoriously expensive. However, snapshoting with fork can also be useful to:
However, unfortunately I don't have lots of spare cycles for large relacy changes today. I would rather invest more in ThreadSanitizer: https://clang.llvm.org/docs/ThreadSanitizer.html https://github.com/google/sanitizers/wiki/ThreadSanitizerCppManual
ThreadSanitizer has lots of advantages over Relacy:
But it does not have a number of important features that Relacy has, in particular:
Taking into account that ThreadSanitizer's main goal is to handle any real programs with zero user effort, using fork-based scheduler looks like a good fit for ThreadSanitizer because of the ability to handle global state, non-determinism and larger programs.
@kcc FYI
@dvyukov What do you think the scheduler based on memory snapshots can be useful? https://github.com/dorooleg/relacy/tree/scheduler-based-on-memory-snapshots
I see several uses of this approach:
Currently, only the first item is made. Does the rest make sense?