Transferência INCR (X11)
O jeito do ICCCM de entregar uma seleção grande demais para uma única propriedade: em pedaços, com um aperto de mão por pedaço e o mesmo número de oportunidades para algo dar errado.
Quando um programa pede uma seleção do X, o dono coloca a resposta em uma propriedade na janela do solicitante. As propriedades viajam como requisições do X, e no protocolo clássico uma requisição era limitada a 256 KB; um documento inteiro na área de transferência não cabia. O ICCCM resolve isso com o tipo INCR: em vez dos dados, o dono escreve um número, um limite inferior de quantos bytes estão a caminho, e o solicitante entende que vem mais coisa por aí.
Aí começa a dança. O solicitante apaga a propriedade, o dono escreve o primeiro pedaço, o solicitante o lê e o apaga, o dono espera o PropertyNotify sobre a remoção antes de escrever o próximo, e um pedaço vazio marca o fim. Os dois lados precisam escutar eventos de propriedade no meio da transferência, e ambos precisam de um timeout caso o outro morra no meio do caminho. É um trecho de protocolo que muitos clientes implementam mal ou simplesmente não implementam, o que explica o bug clássico em que um colar grande sai vazio enquanto um pequeno funciona. O BIG-REQUESTS elevou o teto, mas o INCR continua por aí porque o limite nunca desapareceu por completo.