Um "pgrp" é um grupo de processos . ps j
lista o ID do grupo de processos (a coluna é chamada PGID
). O PGID de um processo geralmente é em si ou o grupo de processos de seus pais, mas pode ser arbitrariamente definido com setpgid()
. Grupos de processos controlam quais processos recebem sinais de controle de trabalho. Eu acho que o gdb move o processo para o seu próprio grupo, de modo a evitar que o processo receba sinais de controle de trabalho que poderiam atrapalhar o controle do gdb sobre o processo.
O relatório de erros é sobre o uso do gdb com um programa que usa sigwait
. sigwait
permite que um processo receba um sinal de maneira incorreta: em vez de ser entregue ao processo da maneira usual, o sinal é removido da fila pendente e sigwait
retorna. Isso é útil principalmente para que um sinal seja sempre entregue a um segmento específico: bloqueie o sinal, mas faça com que um segmento o consuma executando sigwait
.
Como o sinal não é realmente entregue ao processo, ptrace
não vê nada e, portanto, o gdb não é notificado de que o processo consumiu o sinal por engano.
O debate no relatório de erros é sobre se o kernel deve ser modificado para que ptrace
veja algo quando o sinal é consumido através de sigwait
, ou se o gdb deve lidar com essa situação de forma diferente. Eu não sei o suficiente sobre isso para tomar partido.