lkml.org 
[lkml]   [2018]   [Apr]   [16]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    From
    SubjectRe: [RFC PATCH for 4.18 12/23] cpu_opv: Provide cpu_opv system call (v7)
    ----- On Apr 16, 2018, at 2:39 PM, Linus Torvalds torvalds@linux-foundation.org wrote:

    > On Mon, Apr 16, 2018 at 11:35 AM, Mathieu Desnoyers
    > <mathieu.desnoyers@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.

    No, single-stepping is not the only use-case. Accessing remote cpu
    data is another use-case fulfilled by cpu_opv, which I think is more
    compelling.

    >
    > 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".

    I don't mind if people cannot stop the program with a debugger and
    observe the state of registers manually at each step though a rseq
    critical section.

    I do mind breaking existing tools that rely on single-stepping
    approaches to automatically analyze program behavior [1,2].
    Introducing a rseq critical section into a library (e.g. glibc
    memory allocator) would cause existing programs being analyzed
    with existing tools to hang.

    And I try very hard to avoid being told I'm the one breaking
    user-space. ;-)

    Thanks,

    Mathieu

    [1] http://rr-project.org/
    [2] https://www.gnu.org/software/gdb/news/reversible.html

    --
    Mathieu Desnoyers
    EfficiOS Inc.
    http://www.efficios.com

    \
     
     \ /
      Last update: 2018-04-16 21:22    [W:2.554 / U:0.048 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site