Popen.communicate () lança OSError: “[Errno 10] Nenhum processo filho”

Eu estou tentando iniciar um processo filho e obter sua saída no Linux do Python usando o módulo de subprocesso:

#!/usr/bin/python2.4
import subprocess

p = subprocess.Popen(['ls', '-l', '/etc'],
                   stdout=subprocess.PIPE,
                   stderr=subprocess.PIPE)
out, err = p.communicate()

No entanto, sinto alguma descamação: às vezes, p.communicate () lançaria

OSError: [Errno 10] No child processes

O que pode causar essa exceção? Existe algum determinismo ou condição de raça aqui que pode causar flakiness?