"Pgrp" - це процесна група . ps jперелічує ідентифікатор групи процесів (стовпець називається PGID). PGID процесу, як правило, сам або його батьківська група процесів, але їх можна довільно задати setpgid(). Групи процесів контролюють, які процеси отримують сигнали управління роботою. Я думаю, що gdb переміщує процес у свою власну групу, щоб уникнути того, щоб процес отримував сигнали управління роботою, які б зіпсували контроль gdb над процесом.
Звіт про помилку стосується використання gdb з програмою, яка використовує sigwait. sigwaitдозволяє процесу отримувати сигнал непомітно: замість того, щоб його доставляти до процесу звичайним чином, сигнал видаляється з чергової черги і sigwaitповертається. Це в основному корисно, щоб домогтися того, щоб сигнал завжди надходив до певної нитки: блокуйте сигнал, але потік споживає його запускаючи sigwait.
Оскільки сигнал фактично не доставляється в процес, ptraceнічого не бачить, і тому gdb не повідомляється про те, що процес недостатньо споживає сигнал.
Дискусія у звіті про помилки полягає у тому, чи слід ядро модифікувати так, щоб ptraceбачити щось, коли сигнал поступає через нього sigwait, чи чи gdb має вирішувати цю ситуацію по-іншому. Я недостатньо знаю про це, щоб стати стороною.