Назад | Перейти на главную страницу

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

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

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

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

Покопавшись еще немного, чтобы выяснить, чем машины различаются, машина A имеет:

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

и машина B:

название модели: AMD Opteron (TM) Processor 6272

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

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

По-видимому, существует проблема с libc на машинах Xen с поддержкой AVX, которая может вызвать эту ошибку. Посмотри пожалуйста этот билет от шеф-повара, другое приложение на Ruby и связанная проблема для Volk. В заключение, этот поток ArchLinux помог мне разобраться в проблеме дальше.

И вот, процессор AMD Opteron (TM) 6272 поддерживает AVX в то время 2423 НЕ не.

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