Você se certificou de que o último comando no seu .xinitrc não seja enviado para o segundo plano.
Por exemplo, para iniciar o relógio e uma janela de terminal, você colocaria
xlock &
xterm
Nota: xclock tem o "e" comercial para permitir que o script xinit passe para o próximo comando. xterm é o último da cadeia e não obtém o ampersand. Assim que este xterm específico é fechado, o X-Server irá terminar.
Portanto, se todos os seus programas x em xinitrc tiverem o "e" comercial, o X-Server desligará imediatamente após o último comando em xinitrc.
Isso se pareceria com o comportamento que você está vendo.