[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[dennou-ruby:003959] Re: [dennou-ruby:003957] Re: [dennou-ruby:003956] Re: [dennou-ruby:003955] Re: [dennou-ruby:003954] rb-grib での Segmentation fault



西澤さま: 松葉です.

最新版をソースからインストールしてみたのですが,状況が改善しません.
それどころかエラーが出る場所が変わって,initialize の時点でエラーが出ます.

$ ruby test_varnames.rb 
GRIB_API ERROR   :  grib_parser: syntax error at line 14 of /usr/local/share/grib_api/definitions/boot.def
GRIB_API ERROR   :  grib_handle_new_from_message: cannot create handle, no definitions found
/var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:20: [BUG] Segmentation fault at 0x00000000000000
ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]

-- Control frame information -----------------------------------------------
c:0007 p:---- s:0033 e:000032 CFUNC  :initialize
c:0006 p:---- s:0031 e:000030 CFUNC  :new
c:0005 p:0066 s:0026 e:000025 METHOD /var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:20
c:0004 p:0072 s:0018 e:000017 METHOD /usr/lib/ruby/vendor_ruby/numru/gphys/gphys_grib_io.rb:160
c:0003 p:0013 s:0012 e:000011 METHOD /usr/lib/ruby/vendor_ruby/numru/gphys/gphys_io.rb:372
c:0002 p:0065 s:0008 E:001e30 EVAL   test_varnames.rb:9 [FINISH]
c:0001 p:0000 s:0002 E:000378 TOP    [FINISH]

-- Ruby level backtrace information ----------------------------------------
test_varnames.rb:9:in `<main>'
/usr/lib/ruby/vendor_ruby/numru/gphys/gphys_io.rb:372:in `var_names'
/usr/lib/ruby/vendor_ruby/numru/gphys/gphys_grib_io.rb:160:in `var_names'
/var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:20:in `new'
/var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:20:in `new'
/var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:20:in `initialize'

-- C level backtrace information -------------------------------------------
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x18a837) [0x7fc57af6b837]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x18a903) [0x7fc57af6b903]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x6d563) [0x7fc57ae4e563]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(rb_bug+0xb3) [0x7fc57ae4ebd3]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x12144f) [0x7fc57af0244f]
/lib/x86_64-linux-gnu/libpthread.so.0(+0xf8d0) [0x7fc57abd38d0]
/usr/lib/libgrib_api-1.10.4.so(+0xf27bc) [0x7fc574a057bc]
/usr/lib/libgrib_api-1.10.4.so(grib_handle_new_from_file+0xbb) [0x7fc574a04a7c]
/var/lib/gems/2.1.0/extensions/x86_64-linux/2.1.0/rb-grib-0.3.0/numru/grib.so(+0x29d9) [0x7fc574cb19d9] grib.c:407
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x1770c6) [0x7fc57af580c6]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(rb_funcallv+0x159) [0x7fc57af5c239]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(rb_class_new_instance+0x21) [0x7fc57aea02b1]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x174ee6) [0x7fc57af55ee6]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x1856ad) [0x7fc57af666ad]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x17dd23) [0x7fc57af5ed23]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x1835ed) [0x7fc57af645ed]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(rb_iseq_eval_main+0x7f) [0x7fc57af663cf]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x70c3f) [0x7fc57ae51c3f]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(ruby_exec_node+0x1d) [0x7fc57ae5360d]
/usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(ruby_run_node+0x1e) [0x7fc57ae5532e]
ruby() [0x4008ab]
/lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7fc579e7bb45]
ruby() [0x4008d9]

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

何か手順を間違えているのでしょうか.
# C level backtrace のなかで /usr/lib/libgrib_api-1.10.4.so が参照されているのがちょっと気になっています.

一応,どういうコマンドを打ったのかメモしておきます.
GRIB API 最新版をインストールする手順:
$ tar zxvf grib_api-1.15.0-Source.tar.gz
$ cd grib_api-1.15.0-Source
$ ./configure -prefix=/usr/local
$ make
$ make check # ここですべてのチェックをクリア
$ sudo make install

.bashrc に以下を追加:
$ emacs -nw ~/.bashrc
  export LD_LIBRARY_PATH=/usr/local/lib:${LD_LIBRARY_PATH}
$ source ~/.bashrc

rb-grib を再度インストール
$ sudo gem uninstall rb-grib
$ sudo gem install rb-grib

スクリプトを実行してみた結果
$ ruby test_varnames.rb  #=> Segmentation fault


rb-grib のバージョンを下げることで回避しようと考えたのですが,こちらも嵌ってます.
バージョン 0.2.2 を gem install しようとすると以下のエラーが出ます.
$ sudo gem install rb-grib -v 0.2.2
Building native extensions.  This could take a while...
ERROR:  Error installing rb-grib:
ERROR: Failed to build gem native extension.

    /usr/bin/ruby2.1 extconf.rb
checking for narray.h in /usr/lib/x86_64-linux-gnu/ruby/vendor_ruby/2.1.0,$(rubyarchdir),./.gem.20160624-23606-1oi0wb,$(rubysitearchprefix)/vendor_ruby/$(ruby_version)... yes
checking for grib_api.h... yes
checking for main() in -lgrib_api... yes
creating Makefile

make "DESTDIR=" clean

make "DESTDIR="
compiling grib.c
grib.c: In function ‘check_error’:
grib.c:14:3: error: format not a string literal and no format arguments [-Werror=format-security]
   if (code) rb_raise(rb_eRuntimeError, grib_get_error_message(code));
   ^
cc1: some warnings being treated as errors
Makefile:224: recipe for target 'grib.o' failed
make: *** [grib.o] Error 1

make failed, exit code 2

Gem files will remain installed in /var/lib/gems/2.1.0/gems/rb-grib-0.2.2 for inspection.
Results logged to /var/lib/gems/2.1.0/extensions/x86_64-linux/2.1.0/rb-grib-0.2.2/gem_make.out

念のためですが,こちらの ruby のバージョンは 2.1.5  となってます.
$ ruby -v
ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]


2016年6月24日 9:27 Fumitaka MATSUBA <matsuba@xxxxxxxxxxxxxxxxxx>:
西澤さま: 松葉です.

>> grib_api のバージョンはいくつでしょうか?

$ grib_get_data -V
grib_api Version 1.10.4

と返ってきます.dpkg でも確認してみました.やはり 1.10.4 でした.

$ dpkg -s libgrib-api-1.10.4
Package: libgrib-api-1.10.4
Status: install ok installed
Priority: optional
Section: libs
Installed-Size: 10447
Maintainer: Enrico Zini <enrico@xxxxxxxxxx>
Architecture: amd64
Source: grib-api
Version: 1.10.4-3.2
Replaces: libgrib-api-data (<< 1.9.0~)
Depends: libc6 (>= 2.14), libgcc1 (>= 1:4.1.1), libgfortran3 (>= 4.3), libjasper1, libpng12-0 (>= 1.2.13-4), libquadmath0 (>= 4.6)
Breaks: libgrib-api-data (<< 1.9.0~)
Conflicts: libgrib-api-0d-0, libgrib-api-0d-1, libgrib-api-1.9.16, libgrib-api-1.9.9
Description: GRIB decoding/encoding software library
 The ECMWF GRIB API is an application program interface accessible from C and
 FORTRAN programs developed for encoding and decoding WMO FM-92 GRIB edition 1
 and edition 2 messages.
 .
 ECMWF is the European Centre for Medium-Range Weather Forecasts.

最新版をもってきてインストールを試してみようと思います.

2016年6月23日 16:29 Seiya Nishizawa <seiya@xxxxxxxxxxxxxx>:

松葉さま

データありがとうございます。
手元では問題無く正常動作します。

grib_api のバージョンはいくつでしょうか?
こちらは 1.14.2 です。

西澤誠也

2016年6月23日 15:42 Fumitaka MATSUBA <matsuba@xxxxxxxxxxxxxxxxxx>:
> 西澤さま: 松葉です.
>
> 該当のデータは NCEP FNL データで,NCAR のサイトから取得したものです.
> http://rda.ucar.edu/datasets/ds083.2/
>
> 添付しておきます.よろしくお願いします.
>
> 2016年6月23日 15:18 Seiya Nishizawa <seiya@xxxxxxxxxxxxxx>:
>
>> 松葉さま
>>
>> 西澤です
>>
>> 手元のデータでは起こらないので、
>> 該当のデータをいただけますでしょうか。
>>
>> よろしくお願いします。
>>
>> 西澤誠也
>>
>> 2016-06-22 21:59 GMT+09:00 Fumitaka MATSUBA <matsuba@xxxxxxxxxxxxxxxxxx>:
>> > rb-grib 開発者さま: 京大気象学研究室 M2 の松葉です.
>> >
>> > パッケージでインストールしたのですが,不具合に遭遇しましたのでご報告いたします.
>> > rb-grib のバージョンは 0.3.0 で gem install rb-grib で取得したものです.
>> > 以下のようなスクリプトを実行すると,大量のエラーを吐かれてしまいます.
>> >
>> > ---------- ここからスクリプト ----------
>> > require "rubygems"
>> > require "numru/gphys"
>> > include NumRu
>> > GPhys::IO.use_rb_grib
>> >
>> > #file = "2002/fnl_20021201_00_00.grib1"
>> > #file = "2009/fnl_20091201_00_00.grib2"
>> > file = 'fnl_20001201_00_00.grib1'
>> > p varnames = GPhys::IO.var_names(file)
>> > tmp = GPhys::IO.open(file, 'gh')
>> > ---------- ここまでスクリプト ----------
>> >
>> > ---------- ここからログ ----------
>> > matsuba@studia05:~/error_script$ ruby test_varnames.rb
>> > ["gh", "t", "w", "r", "absv", "id154", "id222", "u", "v", "t_pfgl",
>> > "r_pfgl", "q_pfgl", "u_pfgl", "v_pfgl", "t_has", "u_has", "v_has", "sp",
>> > "pwat", "r_ea", "gh_tropopause", "t_tropopause", "pres_tropopause",
>> > "id136",
>> > "id131", "id157_surface", "id156_surface", "id132", "id157_pfgl",
>> > "id156_pfgl", "gh_mw", "t_mw", "pres_mw", "orog", "msl", "r_sl", "pt",
>> > "t_sigma", "w_sigma", "r_sigma", "tco3", "u_tropopause", "u_mw",
>> > "u_sigma",
>> > "v_tropopause", "v_mw", "v_sigma", "t_surface", "id144", "t_dbll", "sf",
>> > "lsm", "icec", "2t", "q_hag", "id221", "tcc", "pres_level243",
>> > "pres_level242", "r_hag", "10u", "10v", "gpa", "id230"]
>> > /var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:110: [BUG]
>> > Segmentation fault at 0x00000000000008
>> > ruby 2.1.5p273 (2014-11-13) [x86_64-linux-gnu]
>> >
>> > -- Control frame information
>> > -----------------------------------------------
>> > c:0008 p:---- s:0062 e:000061 CFUNC  :get_data
>> > c:0007 p:0007 s:0059 e:000058 METHOD
>> > /var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:110
>> > c:0006 p:0132 s:0050 e:000049 METHOD
>> > /var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:297
>> > [FINISH]
>> > c:0005 p:---- s:0035 e:000034 CFUNC  :var
>> > c:0004 p:0076 s:0031 e:000030 METHOD
>> > /usr/lib/ruby/vendor_ruby/numru/gphys/gphys_grib_io.rb:85
>> > c:0003 p:0056 s:0012 e:000011 METHOD
>> > /usr/lib/ruby/vendor_ruby/numru/gphys/gphys_io.rb:191
>> > c:0002 p:0088 s:0007 E:001fa0 EVAL   test_varnames.rb:10 [FINISH]
>> > c:0001 p:0000 s:0002 E:001de8 TOP    [FINISH]
>> >
>> > -- Ruby level backtrace information
>> > ----------------------------------------
>> > test_varnames.rb:10:in `<main>'
>> > /usr/lib/ruby/vendor_ruby/numru/gphys/gphys_io.rb:191:in `open'
>> > /usr/lib/ruby/vendor_ruby/numru/gphys/gphys_grib_io.rb:85:in `open'
>> > /usr/lib/ruby/vendor_ruby/numru/gphys/gphys_grib_io.rb:85:in `var'
>> > /var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:297:in
>> > `init'
>> > /var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:110:in
>> > `get_xy'
>> > /var/lib/gems/2.1.0/gems/rb-grib-0.3.0/lib/numru/grib/grib.rb:110:in
>> > `get_data'
>> >
>> > -- C level backtrace information
>> > -------------------------------------------
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x18a837) [0x7f15dd23e837]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x18a903) [0x7f15dd23e903]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x6d563) [0x7f15dd121563]
>> > libioP.h:889
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(rb_bug+0xb3)
>> > [0x7f15dd121bd3]
>> > swscanf.c:31
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x12144f) [0x7f15dd1d544f]
>> > ../sysdeps/x86_64/multiarch/strcmp-sse42.S:761
>> > /lib/x86_64-linux-gnu/libpthread.so.0(+0xf8d0) [0x7f15dcea68d0]
>> > ../nptl/sysdeps/pthread/funlockfile.c:29
>> >
>> > /var/lib/gems/2.1.0/extensions/x86_64-linux/2.1.0/rb-grib-0.3.0/numru/grib.so(+0x2356)
>> > [0x7f15d6e9a356] grib.c:750
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x174ee6) [0x7f15dd228ee6]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x1856ad) [0x7f15dd2396ad]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x17dd23) [0x7f15dd231d23]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x1835ed) [0x7f15dd2375ed]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x176fc3) [0x7f15dd22afc3]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(rb_funcall+0x22b)
>> > [0x7f15dd22c6ab]
>> >
>> > /var/lib/gems/2.1.0/extensions/x86_64-linux/2.1.0/rb-grib-0.3.0/numru/grib.so(+0x1f75)
>> > [0x7f15d6e99f75] grib.c:529
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x174ee6) [0x7f15dd228ee6]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x1856ad) [0x7f15dd2396ad]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x17dd23) [0x7f15dd231d23]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x1835ed) [0x7f15dd2375ed]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(rb_iseq_eval_main+0x7f)
>> > [0x7f15dd2393cf]
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(+0x70c3f) [0x7f15dd124c3f]
>> > iofwide.c:135
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(ruby_exec_node+0x1d)
>> > [0x7f15dd12660d] obprintf.c:151
>> > /usr/lib/x86_64-linux-gnu/libruby-2.1.so.2.1(ruby_run_node+0x1e)
>> > [0x7f15dd12832e] fileops.c:774
>> > ruby() [0x4008ab]
>> > /lib/x86_64-linux-gnu/libc.so.6(__libc_start_main+0xf5) [0x7f15dc14eb45]
>> > libc-start.c:287
>> > ruby() [0x4008d9]
>> >
>> > -- Other runtime information
>> > -----------------------------------------------
>> > ---------- ここまでログ (以下,省略) ------------
>> >
>> > get_data で SEGV になっているのは分かるのですが,そこから先はちょっと分からないので,
>> > お手数ですが,すこし調査してみていただけないでしょうか.
>> >




--
Seiya Nishizawa
RIKEN Advanced Institute for Computational Science
Tel: +81-78-940-5754, Fax: +81-78-304-4972
7-1-26, Minatojima-minami-machi, Chuo-ku, Kobe, Hyogo 650-0047, Japan





--
松葉 史剛 (Fumitaka MATSUBA)
京都大学大学院 理学研究科 地球惑星科学専攻
地球物理学教室 気象学研究室 M2





--
松葉 史剛 (Fumitaka MATSUBA)
京都大学大学院 理学研究科 地球惑星科学専攻
地球物理学教室 気象学研究室 M2