[MASOCH-L] arquivo corrompendo mesmo com chattr
Rejaine Silveira Monteiro
rejaine at bhz.jamef.com.br
Wed Jan 27 14:39:02 -03 2021
Oi pessoal,
Estou com uma situação um tanto bizarra.. Rodo um app no Liniux SLES12
de terceiros (Totvs/Protheus)
Esse app lê um arquivo de configuração (um txt chamado appserver.ini ) e
volta e meia esse arquivo de configuração aparece corrompido.
O desenvolvedor já tentou colocar um debug na aplicação , mas ainda não
encontrou nada.. Disseram que o app não deveria escrever no arquivo
(exceto em situações muito pontuais e que , segundo ele, não parece ser o
caso) Logo sobrou a culpa para o SO, que supostamente (e por algum motivo
muito bizarro) estaria despejando algum lixo no arquivo... (o que acho
difícil, mas vamos lá)
De início já descartamos problema de hardware/memória e afins, pois ocorre
o problema em máquinas diferentes (sejam virtuais ou físicas)
Executo o comando file para detectar quando o arquivo está corrompido e ao
inves dele retornar, por exemplo, "ASCII text", ele retorna algo do tipo:
# file appserver.ini
appserver.ini: data
Quando edito o arquivo, há caracteres estranhos no início, meio ou final do
arquivo.
Já tentei rodar um strace no PID do processo, mas não me esclareceu muita
coisa:
unfinished ...>
4645 write(384,
"C\0\0\0(\0\0\0\v\0\0\0\0\0\0\0\0\0\0\0S\1\20\0\0\0\0\0\0\0\0\0"..., 71) =
71
8913 <... write resumed> ) = 80
<...etc>
9069 write(1, "/appserver.ini RESTORED IN MEMOR"..., 4096) = 4096
<etc...>
22886 write(242, "\25\3\3\0\32}u\f\274\210
\320X\334\227xnW\347\\cCH\227\354\365\20/\206g,", 31) = -1 EBADF (Bad file
descriptor)
22886 write(7, "\n2021-01-27T13:06:21.617032-03:0"..., 130) = 130
22886 write(7, "\n2021-01-27T13:06:21.620391-03:0"..., 154) = 154
22886 write(7, "\n2021-01-27T13:06:21.620615-03:0"..., 113) = 113
22886 write(1, "/jss/jobservice7/appserver.ini *"..., 4096) = 4096
22886 write(7, "\n2021-01-27T13:06:21.620902-03:0"..., 135) = 135
Me parece ser algo do tipo: algum child process/fork no processo PAI tenta
ler/escrever no arquivo enquanto algum outro child está com o mesmo aberto
ou algo do tipo..
Mas como posso descobrir isso (sem debugar por dentro da aplicação, pois
não temos acesso ao código?) Há alguma coisa que eu poderia fazer para
tentar mitigar o problema e descobrir exatamente o processo que está
escrevendo, de forma aleatoria, no arquivo?
--
*Esta mensagem pode conter informações confidenciais ou privilegiadas,
sendo seu sigilo protegido por lei. Se você não for o destinatário ou a
pessoa autorizada a receber esta mensagem, não pode usar, copiar ou
divulgar as informações nela contidas ou tomar qualquer ação baseada nessas
informações. Se você recebeu esta mensagem por engano, por favor avise
imediatamente ao remetente, respondendo o e-mail e em seguida apague-o.
Agradecemos sua cooperação.*
More information about the masoch-l
mailing list