Eu confirmei o problema aqui. Eu não sei porque o Linux se recusa a despejar o conteúdo do núcleo para um compartilhamento HGFS (Arch Linux kernel 2.6.32 com open-vm-tools 2010.01.19 aqui), mas eu tenho uma solução.
O Linux 2.6.19 e superior permitirá que você canalize os core dumps por meio de um programa arbitrário, portanto, crie um script de shell que copie seu stdin para um arquivo no seu compartilhamento HGFS, por exemplo:
#!/bin/sh
# Where do you want the core to go?
COREFILE=/mnt/hgfs/vmshare/core
tee $COREFILE >/dev/null
É claro que você pode querer implementar alguma lógica para $COREFILE
, de modo que cada core dump subseqüente não apenas sobrescreva o último.
Salve seu script como /usr/local/bin/core.sh
, defina o bit executável do arquivo e configure o core_pattern da seguinte forma:
# chmod +x /usr/local/bin/core.sh
# sysctl -w kernel.core_pattern='|/usr/local/bin/core.sh'
O Linux enviará todos os core dumps através do seu shell script, que não terá problemas para gravar no próprio compartilhamento HGFS.
Se você está se perguntando, você não pode simplesmente colocar o comando tee
diretamente em kernel.core_pattern, porque em kernels anteriores a 2.6.24 você não pode especificar argumentos para um comando pipe com este sysctl. Pelo mesmo motivo, infelizmente não consigo pensar em uma boa maneira de incorporar os especificadores de modelo core_pattern nos nomes dos arquivos de despejo principal usando este método, se você estiver ligado ao kernel 2.6.21.