On Mon, Apr 16, 2018 at 11:35 AM, Mathieu Desnoyers <mathieu.desnoy...@efficios.com> wrote: > Specifically for single-stepping, the __rseq_table section introduced > at user-level will allow newer debuggers and tools which do line and > instruction-level single-stepping to skip over rseq critical sections. > However, this breaks existing debuggers and tools.
I really don't think single-stepping is a valid argument. Even if the cpu_opv() allows you to "single step", you're not actually single stepping the same thing that you're using. So you are literally debugging something else than the real code. At that point, you don't need "cpu_opv()", you need to just load /dev/urandom in a buffer, and single-step that. Ta-daa! No new kernel functionality needed. So if the main argument for cpu_opv is single-stepping, then just rip it out. It's not useful. Anybody who cares deeply about single-stepping shouldn't be using optimistic algorithms, and they shouldn't be doing multi-threaded stuff either. They won't be able to use things like transactional memory either. You can't single-step into the kernel to see what the kernel does either when you're debugging something. News at 11: "single stepping isn't always viable". Linus