O sistema operacional que você está executando não é suficiente para identificar a causa raiz da diferença de comportamento. O que também importa é o sistema de arquivos usado para armazenar o tempo de acesso e modificação do arquivo.
Como você adivinhou, a data errada 2054-12-17 é devida à data de destino que está sendo escrita como um inteiro de 32 bits sem sinal, mas lida como um inteiro de 32 bits assinado.
-
1918-11-11 11:00:00
=1541934000
segundos após o tempo mínimo não assinado de 32 bits (1901-12-13 08:45:52
) -
2054-12-17 17:28:16
=1541934000
segundos após o tempo assinado máximo de 32 bits (2038-01-19 03:14:16
)
Seu diretório pessoal provavelmente é armazenado no NFSv3 ou em um sistema de arquivos local que armazena essas datas em 32 bits.
Por outro lado, /tmp
é suportado por tmpfs
, ext4
ou qualquer outro sistema de arquivos que armazene datas em 64 bits, portanto está imune ao problema.