2011-04-03 3 views
6

J'ai un dépôt git sur un serveur OS X qui fonctionnait correctement. J'ai été en mesure d'ajouter des fichiers, de les valider et de transférer le contenu sur mon ordinateur portable.Comment réparer une 'erreur de bus' en essayant de faire git-commit ou git-status

Maintenant, quand je ssh dans le serveur et git commit ou git status dans le référentiel, tout ce que je vois dans la ligne de commande est bus error. Ne fonctionne toujours pas correctement et me donne la sortie habituelle.

Je suppose que quelque chose ne va pas dans le référentiel, car dans les autres repos sur le même serveur, les git commit et git status fonctionnent toujours.

Comment procéder pour déboguer/réparer ceci?

Mise à jour: J'ai recréé le répertoire que j'avais créé avant la survenue du problème. Cela m'a permis de refaire git status!

Courir git commit -a directement après, cependant, a donné l'erreur suivante:

fatal: Unable to create '/path/to/repo/.git/index.lock': File exists. 

If no other git process is currently running, this probably means a 
git process crashed in this repository earlier. Make sure no other git 
process is running and remove the file manually to continue. 

je puis supprimé manuellement le fichier index.lock, et maintenant le problème est résolu ..

Je n'ai pas la moindre idée qu'est-ce qui a mal tourné? Des idées..?

Répondre

5

Bus error indique un problème de mémoire; cela peut être aussi simple qu'un fichier corrompu sur le disque, un bogue dans le programme git, ou une mémoire défaillante, un contrôleur de mémoire, etc.

Si vous pouvez exécuter un outil de test de mémoire sur votre ordinateur pendant la nuit, cela pourrait aider à éliminer mémoire défaillante et contrôleur. (Vous pouvez également les repérer avec impair SIGBUS ou SIGSEGV lors de grands compiles ou des plantages aléatoires d'autres programmes ...)

Pouvez-vous recréer le référentiel sur le serveur à partir du clone de votre ordinateur portable, et voir si elle fonctionne correctement ? Je suppose que le dépôt est corrompu, et doit être remplacé par un bon clone.

+0

Merci sarnold, avez-vous vu la mise à jour de mon problème? Pensez-vous que le fait que cela semble encore fonctionner au hasard, indique que le serveur a effectivement des problèmes de mémoire? –

+0

@ Will0, sans plus d'informations, je suppose que le fichier de verrouillage périmé est une conséquence de tout le reste ici et rien à craindre. (Je sais que _sounds_ stupide, mais je ne peux pas comprendre comment le dire intelligent.) Si ça revient, inquiétude :) mais il semble probable que vous aviez juste un fichier corrompu sur le disque. (Cela pourrait aussi être quelque chose qui vaut la peine d'être inquiétant, mais à moins que vous ne remarquiez plus de corruption, je ne m'inquiéterais pas trop non plus.) – sarnold

+0

Dommage, je viens de rencontrer exactement le même problème: S. La suppression du répertoire m'a permis de rétablir le statut git, mais la validation n'a pas été autorisée à cause du fichier index.lock. Supprimé l'index.verrouiller et re-créé le même répertoire, tout fonctionne à nouveau sur le serveur .. pour l'instant j'ai peur? –

0

J'ai rencontré ce problème en raison d'un problème avec le système de fichiers sous-jacent sur macOS Sierra (10.12.3). Essentiellement, pour une raison quelconque, mon .dmg crypté a été corrompu - je pense en raison de l'extension avec hdutils. DiskUtility a diagnostiqué le problème avec le système de fichiers, mais n'a pas pu le réparer.

La seule solution que j'ai trouvée était de recréer l'image et de recloner le repo.

Questions connexes