Popen.communicate () lanza OSError: "[Errno 10] No hay procesos secundarios"

Estoy intentando iniciar un proceso secundario y obtener su salida en Linux desde Python usando el módulo de subproceso:

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

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

Sin embargo, experimento algo de descamación: a veces, p.communicate () lanzaría

OSError: [Errno 10] No child processes

¿Qué puede causar esta excepción? ¿Existe aquí alguna condición no determinista o racial que pueda causar descamación?