2010-04-20 23 views
3

J'ai une application que j'essaie de remettre en marche après avoir essuyé mon système et installé Snow Leopard. J'ai installé Ruby 1.9 de Macports (maintenant une version plus récente) et le serveur de dev démarre très bien, mais meurt alors sur la première demande, me disant seulement "instruction illégale". Je n'ai aucune idée de ce qui cause cela ou même comment faire pour le déboguer. Quelqu'un a-t-il une idée?Ruby 1.9 App Ramaze À défaut d'une «instruction illégale»

+0

Pourriez-vous poster le code? Avez-vous essayé d'autres rubis (en utilisant RVM)? – Pistos

+0

J'ai essayé d'installer le niveau de correctif exact qui est sur mon serveur en ce moment (et qui fonctionne beaucoup), mais qui s'est même écrasé. J'ai même essayé d'exécuter la même version de Ramaze; pas de dé. Ca doit être quelque chose avec la façon dont ça se compile, mais je ne peux pas le comprendre. –

Répondre

1

Vous l'avez! Assez convenablement, l'erreur a été provoquée par un débordement de pile.

3

"Instruction illégale" est généralement un message d'erreur de la part de la CPU, ce qui signifie qu'une partie du code binaire que vous avez essayé d'exécuter contient une instruction qui n'est pas implémentée sur cette CPU particulière.

Cela peut avoir de multiples raisons:

  • Le binaire a été compilé avec les paramètres d'optimisation de la CPU mal. Les fournisseurs de CPU ajoutent de nouvelles instructions tout le temps, si le compilateur optimise pour un CPU plus récent que celui que vous avez, il peut avoir émis une instruction que votre CPU ne comprend pas.
  • Le compilateur est cassé.
  • Le binaire est corrompu.
  • Le code que vous compilez contient du code d'assembly ou des instructions intrinsèques contenant des instructions que votre CPU n'a pas.