Я недавно установил новый сервер приложений (Ruby 1.8.7 REE, Rails 2.3.8, Passenger 3.0.9, Nginx 1.0.6) за прокси-сервером и столкнулся с некоторым странным поведением. При публикации / входе только на этом сервере приложений я получаю ошибку 502 Bad Gateway. Это не происходит на другом сервере приложений, и оба настроены одинаково. Я сузил проблему до конкретной строки кода - сохранение сеанса Authlogic. Когда я закомментирую эти строки (в частности, вызов сохранения):
@user_session = UserSession.new(params[:user_session])
if @user_session.save
...
ошибка 502 больше не возникает. Аналогичным образом, когда я тестирую эти команды в консоли, я получаю ответ «Недопустимая инструкция», и консоль вылетает:
>> Authlogic::Session::Base.controller = Authlogic::ControllerAdapters::RailsAdapter.new(self)
>> @user_session = UserSession.new({"password"=>"password", "remember_me"=>"0", "login"=>"myuser"})
>> @user_session.save
Illegal instruction
Тестирование этого на другом сервере приложений работает просто отлично (консоль не вылетает с результатом Illegal Instruction).
Есть идеи, с чего начать устранение неполадок? Я не вижу ничего ценного ни в журналах Rails, ни в журналах Nginx.
Спасибо.
Редактировать
Недопустимая инструкция возникает во время системного вызова digest.rb. То же самое происходит независимо от того, использую ли я пакет Ubuntu Ruby Enterprise Edition или собираю его сам:
stat("/opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/1.8/digest.rb", {st_mode=S_IFREG|0644, st_size=1145, ...}) = 0
open("/opt/ruby-enterprise-1.8.7-2011.12/lib/ruby/1.8/digest.rb", O_RDONLY) = 15
fstat(15, {st_mode=S_IFREG|0644, st_size=1145, ...}) = 0
close(15) = 0
--- SIGILL (Illegal instruction) @ 0 (0) ---