On 11/30/18 9:03 PM, Jan Kiszka wrote:
> These patches are sticking in my queue for more than 3 years now which
> is bad. The good thing is that they were able to mature, at least on
> x86, over that time because we are actually using them.
> 
> Two issues are addressed with these changes:
> 
> 1. Ensure that threads that were stopped for debugging in primary mode
>    will also be resumed in that mode. This prevents deviating behavior
>    compared to non-debugged execution.
> 
> 2. If one thread in a process hits a debugging condition and is about to
>    bring the whole process into stopped state, ensure that all other RT
>    threads are stopped immediately. This prevents that, because the
>    interrupted thread first needs to go to Linux in order to start the
>    process stop, other threads can continue running too far, changing
>    the process state so that debugging becomes harder if not impossible.
> 
> To provide these properties, the core needs two small new hooks from
> I-pipe. Separate patches will be sent against 4.14 that provide these,
> so far for x86 and ARM only.
> 
> Furthermore, this series likely depends on the mayday cleanup I sent
> earlier, at least it was never used without that (you don't want to
> debug without it). That also raises the question how to manage the
> I-pipe feature dependencies best in order work around or simply exclude
> old I-pipe releases.
> 
> Please review carefully if the design and implementation make sense. As
> I said, we are using it, so it is not completely broken. But I may have
> overseen some ugly corner cases nevertheless.
> 
> Unless too many issues surface, I would like to get this feature into
> master before 3.1, along with the needed hooks in I-pipe (including
> active stable trees).
> 
> Jan
> 
> Jan Kiszka (7):
>   cobalt/kernel: Rework register/unregister_debugged_thread
>   cobalt/kernel: Switch back ptraced primary mode threads on resume
>   cobalt/kernel: Reintroduce process-local thread list
>   cobalt/kernel: Introduce XNDBGSTOP
>   cobalt/kernel: Implement synchronous stop and resume for process
>     debugging
>   cobalt/kernel: Clear mayday request of relaxed task
>   testsuite/smokey: gdb-based debugging test
> 
>  configure.ac                        |   1 +
>  include/cobalt/kernel/thread.h      |   2 +-
>  include/cobalt/uapi/kernel/thread.h |   5 +-
>  kernel/cobalt/posix/process.c       | 218 ++++++++++++++++++++++++-
>  kernel/cobalt/posix/process.h       |   4 +-
>  kernel/cobalt/posix/thread.c        |   4 +-
>  kernel/cobalt/posix/thread.h        |   2 +-
>  kernel/cobalt/thread.c              |  18 ++-
>  testsuite/smokey/Makefile.am        |   1 +
>  testsuite/smokey/gdb/Makefile.am    |  13 ++
>  testsuite/smokey/gdb/gdb.c          | 310 
> ++++++++++++++++++++++++++++++++++++
>  11 files changed, 564 insertions(+), 14 deletions(-)
>  create mode 100644 testsuite/smokey/gdb/Makefile.am
>  create mode 100644 testsuite/smokey/gdb/gdb.c
> 

Ack. The pipeline related bits are in -noarch already.

-- 
Philippe.

Reply via email to