Capturar a mensagem "Falha na segmentação" para um subprocesso com falha: não sai e erra após uma chamada para se comunicar ()

Tenho problemas ao usar o módulo subprocesso para obter a saída de programas com falha. Estou usando python2.7 e subprocesso para chamar um programa com argumentos estranhos para obter alguns segfaults. Para chamar o programa, eu uso o seguinte código:

proc = (subprocess.Popen(called,
                         stdout=subprocess.PIPE,
                         stderr=subprocess.PIPE))
out,err=proc.communicate()
print out,err

chamado é uma lista que contém o nome do programa e o argumento (uma sequência que contém bytes aleatórios, exceto o byte NULL do qual o subprocesso não gosta)

O código se comporta e mostra o stdout e o stderr quando o programa não falha, mas quando falha, o out e o error estão vazios, em vez de mostrar a famosa "falha de segmentação".

Desejo encontrar uma maneira de obter e errar, mesmo quando o programa falhar.

Espero que alguém aqui tenha uma ideia :)

PS: Eu também tentei os métodos check_output / call / check_call

EDITAR:

Estou executando este script em um Archlinux 64 bits em um ambiente virtual python (não deve ser algo importante aqui, mas você nunca sabe: p)

O segfault acontece no programa C que estou tentando executar e é uma conseqüência de um estouro de buffer

O problema é que, quando o segfault ocorre, não consigo obter a saída do que aconteceu com o subprocesso

Eu recebo o código de retorno corretamente: -11 (SIGSEGV)

Usando python eu recebo:

 ./dumb2 AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA 
 ('Exit code was:', -11) 
 ('Output was:', '') 
 ('Errors were:', '')

Enquanto estiver fora do python, recebo:

./dumb2 $(perl -e "print 'A'x50")  
BEGINNING OF PROGRAM 
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
END OF THE PROGRAM
Segmentation fault (core dumped)

O valor de retorno do shell é o mesmo: echo $? retorna 139 so -11 ($? & 128)

questionAnswers(3)

yourAnswerToTheQuestion