2011-08-21 31 views
3

我有一个运行64位Debian Lenny的VPS,而且我正在部署几个Rails 3应用程序。即使在成功时Rake也总是出现segfaults和核心转储

我在本地没有问题,但是每当Rake从命令行(或capistrano)运行rake段错误和核心转储...即使Rake似乎在大多数情况下成功完成

我花了好几个星期试图解决这个问题,尝试安装REE,1.8.7,1.9.2-p180 & 1.9.2-p290 ......所有这些都失败了。

我不确定如何从核心转储中获得任何有意义的信息......并且我在Google上的所有搜索都没有结果。

有什么选择可以阻止这种情况发生? 有没有办法阻止核心转储消耗我所有的磁盘空间?

[BUG] Segmentation fault 
ruby 1.9.2p290 (2011-07-09 revision 32553) [x86_64-linux] 

-- control frame ---------- 
--------------------------- 

-- C level backtrace information ------------------------------------------- 
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9(rb_vm_bugreport+0x5f)[0x2afdf1ff2b7f] 
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9 [0x2afdf1ecf81c] 
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9(rb_bug+0xb3) [0x2afdf1ecf993] 
/usr/local/rvm/rubies/ruby-1.9.2-p290/lib/libruby.so.1.9 [0x2afdf1f81b8c] 
/lib/libpthread.so.0 [0x2afdf22aba80] 
/lib/libselinux.so.1 [0x2aaab7d3531d] 
/lib/libselinux.so.1 [0x2aaab7d2857f] 

[NOTE] 
You may have encountered a bug in the Ruby interpreter or extension libraries. 
Bug reports are welcome. 
For details: http://www.ruby-lang.org/bugreport.html 

Aborted (core dumped) 

Exiting via interrupt: 2 

编辑:核心转储分析得出:

sudo gdb /usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby core.5654 
#0 rb_vm_get_sourceline (cfp=<value optimized out>) at vm.c:696 
#1 0x00002ba7e901697c in rb_bug (fmt=0x1e4d0540 "�\026�\036") at error.c:246 
#2 0x00002ba7e90c8b8c in sigsegv (sig=<value optimized out>, info=<value optimized out>, ctx=<value optimized out>) at signal.c:613 
#3 <signal handler called> #4 0x00002aaab7d3531d in ??() from /lib/libselinux.so.1 
#5 0x00002aaab7d2857f in ??() from /lib/libselinux.so.1 
#6 0x0000000000000000 in ??() 

回答

1

我不确定如何获得任何有意义的信息从核心转储...

您是否尝试过标准从核心转储获取信息的方式?

gdb /path/to/executable /path/to/core 
(gdb) where 
+0

像这样的命令来运行gdb的权利? 'sudo gdb /usr/local/rvm/rubies/ruby-1.9.2-p290/bin/ruby core.5654' '#0 rb_vm_get_sourceline(cfp = )vm.c:696 ' '#1 0x00002ba7e901697c在rb_bug(FMT = 0x1e4d0540 “\ 026 \ 036”)在error.c:246' '#2 0x00002ba7e90c8b8c在SIGSEGV(SIG = <值优化了>,信息= <值优化了>,CTX =)在signal.c <值优化了>:613' '#3 <信号称为处理器>' '#4 0x00002aaab7d3531d在?? ()from/lib/libselinux.so.1' '#5 0x00002aaab7d2857f in ?? ()from/lib/libselinux.so.1' '#6 0x0000000000000000 in ?? ()' –

+0

(对不起,不知道如何获得评论中的代码块) 虽然你可以用这些信息做什么?它似乎没有说任何有意义的东西,除了指出错误发生在libselinux.so.1的某处? –

+0

我编辑了问题并添加了堆栈跟踪。是的,这似乎是SELinux中的一个错误,并且与ruby没有多大关系。安装包含libselinux.so.1的调试符号的libselinux-dbg(或某些此类)软件包可能会提供更多线索。 –