ruby: неверный код операции

Есть довольно сложное приложение, которое работает на двух виртуальных машинах (на Xen). Обе виртуальные машины работают с CentOS 6.2 с одинаковыми пакетами и конфигурацией для каждого работающего приложения (за исключением разных сетей). SELinux отключен на обоих.

На машине А приложение отлично строится. На машине B при выполнении некоторых тестов мы получаем:

ruby [2010] недействительный код операции ip:7ff9d2944c30 sp:7fff9797e0f8 ошибка:0 в ld-2.12.so[7ff9d2930000+20000]

Копая немного больше, чтобы узнать, где машины различаются, машина A имеет:

Название модели: Шестиядерный процессор AMD Opteron(tm) 2423 HE

и машина B:

Название модели: AMD Opteron(TM) Процессор 6272

Я попытался загрузить машину B с cpuid_mask_cpu=fam_10_rev_c в grub но это тоже не помогло.

Поэтому любые советы относительно того, как с этим справиться или как обратиться к хостинг-провайдеру, чтобы запустить эту виртуальную машину на другом физическом компьютере, будут с благодарностью.

1 ответ

Решение

Очевидно, существует проблема с libc на машинах Xen с поддержкой AVX, которая может вызвать эту ошибку. Пожалуйста, ознакомьтесь с этим уведомлением от Chef, другим приложением ruby ​​и связанной с ним проблемой для volk. Наконец, этот поток ArchLinux помог мне понять проблему дальше.

И вот, процессор AMD Opteron ™ 6272 поддерживает AVX, а 2423 HE - нет.

Итак... вас могут попросить перейти на другой процессор, или вы можете перекомпилировать libc с --disable-multi-arch, что заставит его игнорировать AVX. Я мог бы подумать, что вы могли бы также сказать Xen игнорировать поддержку AVX, но я не могу найти, как - может быть, кто-то умнее меня может сказать вам.

Другие вопросы по тегам