Como de costume, horas de solução de problemas não significam nada, mas postar uma pergunta em um fórum público revela imediatamente o problema.
Há um bug no stenc 1.0.7 que causa uma falha se você usar --detail
em uma fita em branco. Eu tentei entrar em contato com o autor com uma correção, mas não consigo pegá-lo.
Parece que essa falha deixa a unidade em um estado inconsistente, onde ela se recusa a aceitar outras chaves. Corrigir o erro e, em seguida, executar stenc --detail
sem falha parece ter corrigido o problema. Agora posso definir qualquer tecla quantas vezes quiser e não houve mais problemas.
Se alguém mais estiver tendo o mesmo problema, em stenc-1.0.7/sec/scsiencrypt.cpp
na linha 176 ele diz delete status;
. Você precisa adicionar uma nova linha diretamente abaixo disso e ler status=NULL;
. Isso corrige um erro duplo-livre causando a falha.
--- a/src/scsiencrypt.cpp
+++ b/src/scsiencrypt.cpp
@@ -174,6 +174,7 @@ SSP_NBES* SSPGetNBES(string tapeDevice,bool retry){
if(status->nbes.encryptionStatus!=0x01)break;
if(moves>=MAX_TAPE_READ_BLOCKS)break;
delete status;
+ status=NULL; //double free bug fix
if(!moveTape(tapeDevice,1,true))break;
moves++;
status=SSPGetNBES(tapeDevice,false);