On 3/25/21 4:37 PM, Linus Torvalds wrote: > On Thu, Mar 25, 2021 at 2:44 PM Jens Axboe <axboe@xxxxxxxxx> wrote: >> >> In the spirit of "let's just try it", I ran with the below patch. With >> that, I can gdb attach just fine to a test case that creates an io_uring >> and a regular thread with pthread_create(). The regular thread uses >> the ring, so you end up with two iou-mgr threads. Attach: >> >> [root@archlinux ~]# gdb -p 360 >> [snip gdb noise] >> Attaching to process 360 >> [New LWP 361] >> [New LWP 362] >> [New LWP 363] > [..] > > Looks fairly sane to me. > > I think this ends up being the right approach - just the final part > (famous last words) of "io_uring threads act like normal threads". > > Doing it for VM and FS got rid of all the special cases there, and now > doing it for signal handling gets rid of all these ptrace etc issues. > > And the fact that a noticeable part of the patch was removing the > PF_IO_WORKER tests again looks like a very good sign to me. I agree, and in fact there are more PF_IO_WORKER checks that can go too. The patch is just the bare minimum. > In fact, I think you could now remove all the freezer hacks too - > because get_signal() will now do the proper try_to_freeze(), so all > those freezer things are stale as well. Yep > Yeah, it's still going to be different in that there's no real user > space return, and so it will never look _entirely_ like a normal > thread, but on the whole I really like how this does seem to get rid > of another batch of special cases. That's what makes me feel better too. I think was so hung up on the "never take signals" that it just didn't occur to me to go this route instead. I'll send out a clean series. -- Jens Axboe