Ошибка сегментации ruby ​​1.9 на выходе - PullRequest
3 голосов
/ 01 ноября 2011

Я схожу с ума здесь, просто пытаюсь развернуть небольшое тестовое приложение на моем сервере и продолжаю получать ошибку сегмента при выходе из ruby ​​(то есть после запуска ресурсов rake: прекомпиляции, выхода из консоли и т. Д.). просто работает

script/rails r -e production "puts 1"

приведет к

1
[BUG] Segmentation fault
ruby 1.9.3p0 (2011-10-30 revision 33570) [x86_64-linux]

-- C level backtrace information -------------------------------------------
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/libruby.so.1.9 [0x7f92fd681f25]
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/libruby.so.1.9 [0x7f92fd55608c]
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/libruby.so.1.9(rb_bug+0xb8) [0x7f92fd556208] error.c:277
/usr/local/rvm/rubies/ruby-1.9.3-p0/lib/libruby.so.1.9 [0x7f92fd60db77]
/lib/libpthread.so.0 [0x7f92fd2e5a80]
/lib/libselinux.so.1 [0x7f92f0db831d]
/lib/libselinux.so.1 [0x7f92f0dab57f]

-- Other runtime information -----------------------------------------------

Segmentation fault

обратите внимание, что скрипты / грабли выполняются независимо от того, что выполняется, но при выходе -> ошибка сегмента

странно то, что это 1. происходит только на моем сервере (debian lenny, rvm, ruby ​​1.9.2 или 1.9.3) и только в производственном режиме. Естественно, я подумал, что это вызвано каким-то драгоценным камнем производственной группы, и я попытался отключить производственную группу в моем Gemfile, а также переключение производства <-> драгоценных камней разработки, без изменений, каждый раз, когда выходит ruby ​​-> ошибка сегмента

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

(я попытался удалить ruby ​​и перекомпилировать, и я попытался 1.9.2-p290 И 1.9.3, тот же результат)

хорошо, время возврата:

#0  rb_string_value (ptr=0x5a8) at string.c:1406
1406        VALUE s = *ptr;
(gdb) where
#0  rb_string_value (ptr=0x5a8) at string.c:1406
#1  0x00007f3c5b619428 in rb_string_value_cstr (ptr=0x5a8) at string.c:1424
#2  0x00007f3c5b6708cc in rb_vm_bugreport () at vm_dump.c:826
#3  0x00007f3c5b549f1c in report_bug (file=<value optimized out>, line=<value optimized out>, fmt=0x7f3c5b69e88b "Segmentation fault", args=0x66cd40) at error.c:258
#4  0x00007f3c5b54a098 in rb_bug (fmt=0x7f3c5b69e88b "Segmentation fault") at error.c:277
#5  0x00007f3c5b5fe037 in sigsegv (sig=<value optimized out>, info=<value optimized out>, ctx=<value optimized out>) at signal.c:609
#6  <signal handler called>
#7  0x00007f3c4e6fa18d in fini_context_translations () at setrans_client.c:211
#8  0x00007f3c4e6ed5df in __do_global_dtors_aux () from /lib/libselinux.so.1
#9  0x0000000000400850 in setlocale@plt ()
#10 0x00007fffffffdec0 in ?? ()
#11 0x00007f3c4e6fb991 in _fini () from /lib/libselinux.so.1
#12 0x000000000000005f in ?? ()
#13 0x00007f3c5b933d94 in ?? () from /lib64/ld-linux-x86-64.so.2
Backtrace stopped: previous frame inner to this frame (corrupt stack?)

1 Ответ

2 голосов
/ 05 ноября 2011

хорошо, я понял! на самом деле это ошибка http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=505920 в libselinux, которая была исправлена ​​некоторое время назад, но обновления не превратили ее в lenny? Я взял на себя смелость и установил deb libselinux1 из squeeze, я не уверен, что это действительно хорошая идея, но, по крайней мере, проблема исчезла.

...