A geração de core dump é uma operação atômica?

3

Quero dizer, se vejo core.<pid> no sistema de arquivos, isso significa que a geração do arquivo principal foi concluída e eu posso usá-lo sozinho?

Minha pergunta foi respondida. Mas eu decidi explicar um pouco.
Eu suponho que core.<pid> é gerado em algum arquivo oculto f.e. .code.<pid>~ primeiro e somente após a geração ter acabado de ser movido (renomeado) para o caminho de destino. Nesse caso, a operação pode ser rápida e atômica.

    
por denys 11.01.2016 / 17:02

2 respostas

6

Eu não apostaria nisso, especialmente em um sistema multiencadeado ocupado ou se o local de despejo estiver em um compartilhamento de rede (memoravelmente, um professor geraria 8 GB de arquivos principais que precisavam ser armazenados em spool através de 10Mbit ethernet via NFS) . A atomicidade do sistema de arquivos geralmente requer o bloqueio ou o truque de gravação para um arquivo temporário e, em seguida, rename(1) . Algumas investigações em fs/coredump.c para o kernel do linux 4.3.3 indicam que não tais truques de bloqueio ou renomeação, como o kernel descobre o nome do arquivo a ser usado (com uma condição de corrida de desligamento!) e, em seguida, decodifica o arquivo:

        file_start_write(cprm.file);
        core_dumped = binfmt->core_dump(&cprm);
        file_end_write(cprm.file);

Já que provavelmente não há bloqueio de kernel gigante para impedir que outras coisas de usuários rodem enquanto o acima está fazendo o seu negócio (isso pode ser testado abrandando a geração de um grande arquivo central e vendo como o sistema se comporta) Eu não vejo nada atômico sobre esse processo.

    
por 11.01.2016 / 18:10
1

Não, como qualquer outro arquivo que aparece no sistema de arquivos no ponto em que as gravações começam, não quando ele é concluído e fechado.

    
por 11.01.2016 / 18:02