rros de @Valgrind causados por pclose () no Mac OS X

Estou recebendo erros do valgrind ao tentarpclose() um tubo aberto anteriormente compopen(). Os erros ocorrem no Mac OS X, mas não no Linux. Considere o seguinte exemplo:

#include <stdlib.h>
#include <stdio.h>

int main() {
  FILE *fp;
  char buf[4096];

  if (!(fp = popen("ls", "r")))
    exit(-1);

  while (fscanf(fp, "%s", buf) == 1)
    printf("%s\n", buf);

  pclose(fp);

  return 0;
}

Eu recebo os seguintes erros do valgrind em um Mac (OS X 10.6.7, valgrind versão 3.6.0), exceto se eu remover opclose() ligar

==21455== Conditional jump or move depends on uninitialised value(s)
==21455==    at 0xB1992: pclose (in /usr/lib/libSystem.B.dylib)
==21455==    by 0x1F16: main (in ./a.out)
==21455== 
==21455== Syscall param wait4(pid) contains uninitialised byte(s)
==21455==    at 0x504FA: wait4 (in /usr/lib/libSystem.B.dylib)
==21455==    by 0x1F16: main (in ./a.out)

o entanto, não recebo nenhum erro em um sistema Linux com o valgrind versão 3.5.

Alguma idéia sobre o que pode estar causando os erros no Ma

Atualiza

Ligando--track-origins in valgrind mostra que a origem do problema pode estar nopopen() ligar. A mesma coisa aconteceu com o gcc 4.2.1 e 4.5.

==4425== Conditional jump or move depends on uninitialised value(s)
==4425==    at 0xB1992: pclose (in /usr/lib/libSystem.B.dylib)
==4425==    by 0x1F18: main (in ./a.out)
==4425==  Uninitialised value was created by a stack allocation
==4425==    at 0xB14C5: popen$UNIX2003 (in /usr/lib/libSystem.B.dylib)
==4425== 
==4425== Syscall param wait4(pid) contains uninitialised byte(s)
==4425==    at 0x504FA: wait4 (in /usr/lib/libSystem.B.dylib)
==4425==    by 0x1F18: main (in ./a.out)
==4425==  Uninitialised value was created by a stack allocation
==4425==    at 0xB14C5: popen$UNIX2003 (in /usr/lib/libSystem.B.dylib)

questionAnswers(3)

yourAnswerToTheQuestion