comportamento estranho do Compress-Zlib do perl? [fechadas]

1

Estou enlouquecendo com isso ...

Eu venho usando a função gzflush () há anos na minha ferramenta collectl e recentemente notei algo muito incomum nela no debian. Eu estou realmente pensando que é mais o fato de que é uma versão mais recente do Zlib.

O problema parece ser a funcionalidade mudada em algum lugar ao longo do caminho e enquanto eu posso codificar em torno das múltiplas versões que eu gostaria de perguntar aos outros se eles já viram isso ou sabem exatamente o que está acontecendo. / p>

Especificamente, se eu criar 2 arquivos compactados e imediatamente gzflush-los com um valor de 2, o que equivale a Z_SYNC_FLUSH, ele funciona bem. Mas se eu tentar liberá-los uma segunda vez, pelo menos no debian executando o zlib V2.02, ele falhará. O código idêntico funciona bem em rhel5.2 e zlib V1.42.

Contanto que eu não tente liberar um arquivo que já tenha sido liberado, a versão debian parece estar ok, mas estou achando isso muito chato e imaginando se é algo que estou fazendo errado?

aqui está meu reprodutor:

#!/usr/bin/perl -w

use Compress::Zlib;

printf "%d %d %d %d %d\n", Z_FINISH, Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FULL_FLUSH, Z_BLOCK;

#require "Compress/Zlib.pm";

$aaa=Compress::Zlib::gzopen("/tmp/foo.gz", 'ab') or die "flush error";
$bbb=Compress::Zlib::gzopen("/tmp/foo.gz", 'ab') or die "flush error";

$m=2;
print "Flush AAA\n";
$aaa-> gzflush($m)<0 and error($aaa);
print "Flush BBB\n";
$bbb->gzflush($m)<0 and error($bbb);

print "Flush AAA\n";
$aaa-> gzflush($m)<0 and error($bbb);
print "Flush BBB\n";
$bbb->gzflush($m)<0 and error($bbb);

sub error
{ printf "Flush error reason: %s\n", $_[0]->gzerror(); $_[0]->gzclose(); exit; }

rodando isso no debian eu vejo isso:

./test.pl
4 0 2 3 5
Flush AAA
Flush BBB
Flush AAA
Flush error reason: buffer error

enquanto o mesmo script no meu sistema rhel anterior faz isso. Eu notei que o símbolo Z_BLOCK não está definido na versão anterior, então o removi da declaração print no começo:

./test.pl
4 0 2 3
Flush AAA
Flush BBB
Flush AAA
Flush BBB
    
por Mark J Seger 26.01.2012 / 00:34

1 resposta

1

Para deixar as pessoas saberem, troquei e-mails com o autor do Compress :: Zlib e ele confirmou que esse é um bug que ele abordará em uma versão futura. -mark

    
por 27.01.2012 / 16:20

Tags