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

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



西澤さま: 松葉です.

>> gem install rb-grib -- --with-grib_api-dir=/usr/local
>> とすればたぶん新しい方をリンクするようになるはずです。

新しい方をリンクするようにできました.
これで var_names でエラーは出なくなりましたが,依然として get_data のところで
Segmentation fault となってしまいます・・・.

2016年6月24日 18:35 Seiya Nishizawa <seiya@xxxxxxxxxxxxxx>:
松葉さま

gem で rb-grib をインストールするときのコンパイルで、
古い grib_api がリンクされてしまってると思われます。

debianパッケージの grib_api をアンインストールして試すことは可能でしょうか?

それが出来なければ、
gem install rb-grib -- --with-grib_api-dir=/usr/local
とすればたぶん新しい方をリンクするようになるはずです。


西澤誠也



2016年6月24日 18:11 Fumitaka MATSUBA <matsuba@xxxxxxxxxxxxxxxxxx>:
> 西澤さま: 松葉です.
>
> 最新版をソースからインストールしてみたのですが,状況が改善しません.
> それどころかエラーが出る場所が変わって,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.
>> Homepage: http://www.ecmwf.int/products/data/software/grib_api.html
>>
>> 最新版をもってきてインストールを試してみようと思います.
>>
>> 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
>> E-mail: matsuba@xxxxxxxxxxxxxxxxxx
>>
>>
>
>
>
> --
> 松葉 史剛 (Fumitaka MATSUBA)
> 京都大学大学院 理学研究科 地球惑星科学専攻
> 地球物理学教室 気象学研究室 M2
> E-mail: matsuba@xxxxxxxxxxxxxxxxxx



--
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