[groonga-dev,01425] Re: mariadbでmroongaがクラッシュしてしまう現象について

Back to archive index

Kouhei Sutou kou****@clear*****
2013年 5月 22日 (水) 16:56:41 JST


須藤です。

追加情報ありがとうございます!

ちょっと調査に時間がかかりそうなんですが、遅くても来月リリー
ス分では対応できるといいなぁと思っています。(MariaDBが入る
Fedora 19がリリースされそうなので。)

In <519AF****@wing-*****>
  "[groonga-dev,01414] Re: mariadbでmroongaがクラッシュしてしまう現象について" on Tue, 21 May 2013 13:20:55 +0900,
  WING☆ <wings****@wing-*****> wrote:

> WING☆です。
> お世話になっております。
> 
> 結論から申し上げますと、元々のcmakeのオプションから、
> -DBUILD_CONFIG=mysql_release
> を削除するだけでうまく行きました。
> 
> 違いを見てみましたところ、show engines;で違いが見られました。
> 
> ★ BUILD_CONFIGあり
> +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
> | Engine             | Support | Comment
>                                     | Transactions | XA   | Savepoints |
> +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
> | MEMORY             | YES     | Hash based, stored in memory, useful
> for temporary tables                  | NO           | NO   | NO         |
> | MRG_MYISAM         | YES     | Collection of identical MyISAM tables
>                                     | NO           | NO   | NO         |
> | CSV                | YES     | CSV storage engine
>                                     | NO           | NO   | NO         |
> | BLACKHOLE          | YES     | /dev/null storage engine (anything you
> write to it disappears)             | NO           | NO   | NO         |
> | MyISAM             | YES     | MyISAM storage engine
>                                     | NO           | NO   | NO         |
> | InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions,
> row-level locking, and foreign keys | YES          | YES  | YES        |
> | mroonga            | YES     | CJK-ready fulltext search, column store
>                                    | NO           | NO   | NO         |
> | PERFORMANCE_SCHEMA | YES     | Performance Schema
>                                     | NO           | NO   | NO         |
> | FEDERATED          | YES     | FederatedX pluggable storage engine
>                                     | YES          | NO   | YES        |
> | Aria               | YES     | Crash-safe tables with MyISAM heritage
>                                     | NO           | NO   | NO         |
> | ARCHIVE            | YES     | Archive storage engine
>                                     | NO           | NO   | NO         |
> +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
> 
> ★ BUILD_CONFIGなし
> +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
> | Engine             | Support | Comment
>                                     | Transactions | XA   | Savepoints |
> +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
> | MyISAM             | YES     | MyISAM storage engine
>                                     | NO           | NO   | NO         |
> | PERFORMANCE_SCHEMA | YES     | Performance Schema
>                                     | NO           | NO   | NO         |
> | CSV                | YES     | CSV storage engine
>                                     | NO           | NO   | NO         |
> | MRG_MYISAM         | YES     | Collection of identical MyISAM tables
>                                     | NO           | NO   | NO         |
> | InnoDB             | DEFAULT | Percona-XtraDB, Supports transactions,
> row-level locking, and foreign keys | YES          | YES  | YES        |
> | MEMORY             | YES     | Hash based, stored in memory, useful
> for temporary tables                  | NO           | NO   | NO         |
> | mroonga            | YES     | CJK-ready fulltext search, column store
>                                    | NO           | NO   | NO         |
> | Aria               | YES     | Crash-safe tables with MyISAM heritage
>                                     | NO           | NO   | NO         |
> +--------------------+---------+----------------------------------------------------------------------------+--------------+------+------------+
> 
> 比較してみますと、-DBUILD_CONFIG=mysql_releaseを削除することで、
> 以下のストレージエンジンが無くなります。
> 
> BLACKHOLE
> FEDERATED
> ARCHIVE
> 
> ひょっとして、これのうちのどれかが邪魔してるとか、コンフリクトしてるとか
> その他あるのかもしれません。
> 
> また、パラメータも比較してみました。
> ---
> # diff -up variables_ok.txt variables_ng.txt
> --- variables_ok.txt    2013-05-21 13:08:23.007000070 +0900
> +++ variables_ng.txt    2013-05-21 13:11:30.175000170 +0900
> @@ -321,7 +321,7 @@ progress_report_time        56
>  protocol_version       10
>  proxy_user
>  pseudo_slave_mode      OFF
> -pseudo_thread_id       5
> +pseudo_thread_id       3
>  query_alloc_block_size 8192
>  query_cache_limit      1048576
>  query_cache_min_res_unit       4096
> @@ -420,7 +420,7 @@ thread_stack        294912
>  time_format    %H:%i:%s
>  time_zone      SYSTEM
>  timed_mutexes  OFF
> -timestamp      1369109303.002687
> +timestamp      1369109490.147685
>  tmp_table_size 16777216
>  tmpdir /tmp
>  transaction_alloc_block_size   8192
> @@ -430,7 +430,7 @@ unique_checks       ON
>  updatable_views_with_limit     YES
>  userstat       OFF
>  version        5.5.30-MariaDB
> -version_comment        Source distribution
> +version_comment        MariaDB Server
>  version_compile_machine        i686
>  version_compile_os     Linux
>  wait_timeout   28800
> ---
> これは特に問題になるようなことは無さそうですが、一応参考までに。
> 
> いずれにしても、自分はMySQLのソースまで追いかけることができませんので、
> ここまでかなという気もしますが、とりあえずwingリポジトリでは、この
> オプションを抜いた形のrpmを今後公開して行こうかと思ってます。
> もしも、修正が可能でしたら元に戻そうかと思います。
> 
> 念のため、簡単ではありますが、以下のSQLを実行し正常に動作することを
> 確認しております。
> 
> CREATE DATABASE wingtest;
> USE wingtest;
> CREATE TABLE bbb (id INT) ENGINE=mroonga;
> INSERT INTO bbb(id) VALUES(1);
> SELECT * FROM bbb;
> UPDATE bbb SET id=2;
> SELECT * FROM bbb;
> DELETE FROM bbb;
> SELECT * FROM bbb;
> DROP TABLE bbb;
> DROP DATABASE wingtest;
> 
> たぶん、MariaDB 10.0も同じと思いますので、試してみたいと思います。
> 
> 以上、宜しくお願い致します。
> 
> 
> 
> 
> 
> (2013/05/21 0:07), WING☆ wrote:
>> WING☆です。
>> 
>> あれから、cmakeのオプションを絞ってビルドした結果、
>> うまくCREATE TABLEが実行することを確認できました。
>> 
>> 元々のcmakeは以下(NG)
>> ---
>> cmake . -DBUILD_CONFIG=mysql_release \
>>         -DFEATURE_SET="community" \
>>         -DINSTALL_LAYOUT=RPM \
>>         -DCMAKE_INSTALL_PREFIX="%{_prefix}" \
>>         -DINSTALL_INCLUDEDIR=include/mysql \
>>         -DINSTALL_INFODIR=share/info \
>>         -DINSTALL_LIBDIR="%{_lib}/mysql" \
>>         -DINSTALL_MANDIR=share/man \
>>         -DINSTALL_MYSQLSHAREDIR=share/mysql \
>>         -DINSTALL_MYSQLTESTDIR=share/mysql-test \
>>         -DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" \
>>         -DINSTALL_SBINDIR=libexec \
>>         -DINSTALL_SCRIPTDIR=bin \
>>         -DINSTALL_SQLBENCHDIR=share \
>>         -DINSTALL_SUPPORTFILESDIR=share/mysql \
>>         -DMYSQL_DATADIR="/var/lib/mysql" \
>>         -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock" \
>>         -DENABLED_LOCAL_INFILE=ON \
>>         -DENABLE_DTRACE=OFF \
>>         -DWITH_EMBEDDED_SERVER=ON \
>>         -DWITH_READLINE=ON \
>>         -DWITH_SSL=system \
>>         -DWITH_ZLIB=system \
>>         -DWITH_MYSQLD_LDFLAGS="-Wl,-z,relro,-z,now"
>> ---
>> 
>> うまく動いたcmakeは以下(OK)
>> ---
>> cmake . -DINSTALL_LAYOUT=RPM \
>>          -DCMAKE_INSTALL_PREFIX="%{_prefix}" \
>>          -DINSTALL_INCLUDEDIR=include/mysql \
>>          -DINSTALL_INFODIR=share/info \
>>          -DINSTALL_LIBDIR="%{_lib}/mysql" \
>>          -DINSTALL_MANDIR=share/man \
>>          -DINSTALL_MYSQLSHAREDIR=share/mysql \
>>          -DINSTALL_MYSQLTESTDIR=share/mysql-test \
>>          -DINSTALL_PLUGINDIR="%{_lib}/mysql/plugin" \
>>          -DINSTALL_SBINDIR=libexec \
>>          -DINSTALL_SCRIPTDIR=bin \
>>          -DINSTALL_SQLBENCHDIR=share \
>>          -DINSTALL_SUPPORTFILESDIR=share/mysql \
>>          -DMYSQL_DATADIR="/var/lib/mysql" \
>>          -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock"
>> ---
>> 
>> どうやら、
>> ---
>>         -DENABLED_LOCAL_INFILE=ON \
>>         -DENABLE_DTRACE=OFF \
>>         -DWITH_EMBEDDED_SERVER=ON \
>>         -DWITH_READLINE=ON \
>>         -DWITH_SSL=system \
>>         -DWITH_ZLIB=system \
>>         -DWITH_MYSQLD_LDFLAGS="-Wl,-z,relro,-z,now"
>> ---
>> のあたりが怪しいのですが、これは今後更に検証をして
>> みたいと思います。
>> (ひょっとしてお詳しい方なら、これで大凡の見当が付く?)
>> 
>> とりあえず取り急ぎ、ご報告まで。
>> また、いろいろご支援いただいた方々ありがとうございました。
>> 
>> 最終的にどのオプションがダメだったのかは、今後結論が
>> 出次第、報告したいと思います。
>> 
>> では、今後ともよろしくお願い致します。
>> 
>> 
>> 
>> (2013/05/20 18:12), WING☆ wrote:
>>> WING☆です。
>>>
>>> 須藤様、yoku様、いろいろありがとうございます。。。
>>>
>>>> MariaDBに渡しているCMakeのオプションをできるだけとってビルド
>>>> するとどうでしょうか?以下の4つくらいまで減らせないかなぁと
>>>> 思うのですが。。。
>>>>
>>>>      -DINSTALL_LAYOUT=RPM
>>>>      -DCMAKE_INSTALL_PREFIX="%{_prefix}"
>>>>      -DMYSQL_DATADIR="/var/lib/mysql"
>>>>      -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock"
>>>
>>> そうですね。
>>> 一度試してみます。
>>>
>>>> 投稿された最初のバックトレースを見る限り、mroongaは関係なく、
>>>> mroongaをINSTALL PLUGIN, CREATE FUNCTIONした時に変なことになって
>>>> mysql.pluginとmysql.funcが壊れたように見受けられますが。。
>>>
>>> むぅ…
>>> 一度、いろいろと検証必要ですね…
>>>
>>> また、試した結果等をお知らせしたいと思います。
>>>
>>> 宜しくお願い致します。
>>>
>>>
>>>
>>> (2013/05/20 17:34), yoku ts. wrote:
>>>> こんにちは、yokuといいます。
>>>>
>>>> 私が遭遇した状況と少し違うように見受けられます。
>>>>
>>>> 【package】
>>>> groonga-devel-3.0.3-1.el6_11.wing.i686
>>>> mariadb-libs-5.5.30-3.el6_2.wing.i686
>>>> groonga-plugin-suggest-3.0.3-1.el6_11.wing.i686
>>>> groonga-normalizer-mysql-1.0.3-1.el6_2.wing.i686
>>>> mariadb-devel-5.5.30-3.el6_2.wing.i686
>>>> groonga-libs-3.0.3-1.el6_11.wing.i686
>>>> mecab-0.996-1.el6_2.wing.i686
>>>> mysqlclient16-5.1.69-1.el6_3.wing.i686
>>>> mariadb-5.5.30-3.el6_2.wing.i686
>>>> mariadb-server-5.5.30-3.el6_2.wing.i686
>>>> groonga-3.0.3-1.el6_11.wing.i686
>>>> mariadb-mroonga-3.03-1.el6_13.wing.i686
>>>>
>>>>
>>>> 【ストレージモードでCREATE TABLE】
>>>> MariaDB [test]> create table t1 ( num int ) engine = mroonga;
>>>> ERROR 2013 (HY000): Lost connection to MySQL server during query
>>>>
>>>> 【バックトレース】
>>>> (gdb) bt
>>>> #0  0x00206416 in __kernel_vsyscall ()
>>>> #1  0x00212443 in pthread_kill () from /lib/libpthread.so.0
>>>> #2  0x00c5596b in my_write_core (sig=11) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/mysys/stacktrace.c:457
>>>> #3  0x0086d6fd in handle_fatal_signal (sig=11) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/sql/signal_handler.cc:262
>>>> #4  <signal handler called>
>>>> #5  0x05309703 in clear_error (this=0x929c98f8) at
>>>> /root/rpmbuild/BUILD/mroonga-3.03/../mariadb-5.5.30/sql/sql_class.h:2605
>>>> #6  ha_mroonga::create_share_for_create (this=0x929c98f8) at ha_mroonga.cpp:2728
>>>> #7  0x05309955 in ha_mroonga::table_flags (this=0x929c98f8) at
>>>> ha_mroonga.cpp:2571
>>>> #8  0x00871357 in init (share=0xb6cb2ec0, alloc=0xb6cb2ef8, db_type=0x93407c80)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/handler.h:1837
>>>> #9  get_new_handler (share=0xb6cb2ec0, alloc=0xb6cb2ef8, db_type=0x93407c80)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/handler.cc:256
>>>> #10 0x007c4d8e in open_binary_frm (thd=0x2ba5908, share=0xb6cb2ec0, db_flags=0)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/table.cc:1335
>>>> #11 open_table_def (thd=0x2ba5908, share=0xb6cb2ec0, db_flags=0) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/sql/table.cc:713
>>>> #12 0x008726c3 in ha_create_table (thd=0x2ba5908, path=0xb6cb3f3b
>>>> "./test/t1", db=0x9340e500 "test",
>>>>        table_name=0x9340e0c8 "t1", create_info=0xb6cb4668,
>>>> update_create_info=false)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/handler.cc:4041
>>>> #13 0x007cfbd4 in rea_create_table (thd=0x2ba5908, path=0xb6cb3f3b
>>>> "./test/t1", db=0x9340e500 "test",
>>>>        table_name=0x9340e0c8 "t1", create_info=0xb6cb4668,
>>>> create_fields=..., keys=0, key_info=0x9340f840, file=0x9340e7f0)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/unireg.cc:500
>>>> #14 0x0079d11b in mysql_create_table_no_lock (thd=0x2ba5908,
>>>> db=0x9340e500 "test", table_name=0x9340e0c8 "t1",
>>>>        create_info=0xb6cb4668, alter_info=0xb6cb4258,
>>>> internal_tmp_table=false, select_field_count=0, is_trans=0xb6cb419f)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_table.cc:4490
>>>> #15 0x0079def3 in mysql_create_table (thd=0x2ba5908,
>>>> create_table=0x9340e0f0, create_info=0xb6cb4668,
>>>> alter_info=0xb6cb4258)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_table.cc:4587
>>>> #16 0x0072d046 in mysql_execute_command (thd=0x2ba5908) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_parse.cc:2606
>>>> #17 0x0072d639 in mysql_parse (thd=0x2ba5908, rawbuf=0x9340e020
>>>> "create table t1 ( num int ) engine = mroonga", length=44,
>>>>        parser_state=0xb6cb4ffc) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_parse.cc:5756
>>>> #18 0x0072f058 in dispatch_command (command=COM_QUERY, thd=0x2ba5908,
>>>>        packet=0x2c19501 "create table t1 ( num int ) engine = mroonga",
>>>> packet_length=44)
>>>>        at /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_parse.cc:1068
>>>> #19 0x0072f826 in do_command (thd=0x2ba5908) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_parse.cc:794
>>>> #20 0x007e7605 in do_handle_one_connection (thd_arg=0x2ba5908) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_connect.cc:1266
>>>> #21 0x007e7760 in handle_one_connection (arg=0x2ba5908) at
>>>> /root/rpmbuild/BUILD/mariadb-5.5.30/sql/sql_connect.cc:1181
>>>> #22 0x0020da49 in start_thread () from /lib/libpthread.so.0
>>>> #23 0x05d77aee in clone () from /lib/libc.so.6
>>>>
>>>> ステップ実行で様子を見てみたところ、
>>>> ha_mroonga::create_share_for_createからmrn_parse_table_paramを呼んでいるところでエラーになり、
>>>>
>>>>     2705   if ((error = mrn_parse_table_param(&share_for_create,
>>>> &table_for_create)))
>>>>     2706     goto error;
>>>> ..
>>>>     2721 error:
>>>>     2722   if (share_for_create.wrapper_mode) {
>>>>     2723     plugin_unlock(NULL, share_for_create.plugin);
>>>>     2724   }
>>>>     2725   mrn_free_share_alloc(&share_for_create);
>>>>     2726   free_root(&mem_root_for_create, MYF(0));
>>>>     2727   analyzed_for_create = false;
>>>>     2728   thd->clear_error();
>>>>     2729   DBUG_RETURN(error);
>>>>     2730 }
>>>>
>>>> thd->clear_error()でsegfaultしました。
>>>> *.mrnファイルは作成されておらず、test/t1.frmだけが取り残されている感じです。
>>>>
>>>> # ll /var/lib/mysql/
>>>> total 89736
>>>> -rw-rw---- 1 mysql mysql     16384 May 20 17:02 aria_log.00000001
>>>> -rw-rw---- 1 mysql mysql        52 May 20 17:02 aria_log_control
>>>> -rw------- 1 mysql mysql 641757184 May 20 17:05 core.2042
>>>> -rw-rw---- 1 mysql mysql      6175 May 20 17:05 error.log
>>>> -rw-rw---- 1 mysql mysql       240 May 20 17:05 groonga.log
>>>> -rw-rw---- 1 mysql mysql  18874368 May 20 17:04 ibdata1
>>>> -rw-rw---- 1 mysql mysql   5242880 May 20 17:05 ib_logfile0
>>>> -rw-rw---- 1 mysql mysql   5242880 May 20 17:03 ib_logfile1
>>>> drwx------ 2 mysql root       4096 May 20 17:02 mysql
>>>> srwxrwxrwx 1 mysql mysql         0 May 20 17:05 mysql.sock
>>>> drwx------ 2 mysql mysql      4096 May 20 17:02 performance_schema
>>>> drwx------ 2 mysql root       4096 May 20 17:05 test
>>>>
>>>> # ll /var/lib/mysql/test
>>>> total 12
>>>> -rw-rw---- 1 mysql mysql 8558 May 20 17:05 t1.frm
>>>>
>>>>
>>>>> WING☆さん
>>>> 投稿された最初のバックトレースを見る限り、mroongaは関係なく、
>>>> mroongaをINSTALL PLUGIN, CREATE FUNCTIONした時に変なことになって
>>>> mysql.pluginとmysql.funcが壊れたように見受けられますが。。
>>>>
>>>>
>>>> yoku ts.
>>>>
>>>>
>>>> 2013年5月20日 16:33 Kouhei Sutou <kou****@clear*****>:
>>>>> 須藤です。
>>>>>
>>>>> In <5199A****@wing-*****>
>>>>>      "[groonga-dev,01407] Re: mariadbでmroongaがクラッシュしてしまう現象について" on Mon, 20 May 2013 14:05:16 +0900,
>>>>>      WING☆ <wings****@wing-*****> wrote:
>>>>>
>>>>>>> Fedora19のMariaDBでは問題は起きないんですよね?
>>>>>>> うーん、オプションが同じだとすると何が違うんでしょうねぇ。。。
>>>>>>
>>>>>> そうですねー、
>>>>>> Fedora19では試していませんが、少なくとも、磯部様の前のメールにも
>>>>>> あるとおり、テーブルは作れますし、私の自宅サーバではZabbix、
>>>>>> Postfixadmin、phpMyAdmin等各種MariaDBに
>>>>>> 関わるものに関しては、運用も問題無く動作しております。
>>>>>
>>>>> そうなんですか!
>>>>> とすると、mroongaが悪いのかもしれませんね。。。
>>>>>
>>>>> MariaDBに渡しているCMakeのオプションをできるだけとってビルド
>>>>> するとどうでしょうか?以下の4つくらいまで減らせないかなぁと
>>>>> 思うのですが。。。
>>>>>
>>>>>      -DINSTALL_LAYOUT=RPM
>>>>>      -DCMAKE_INSTALL_PREFIX="%{_prefix}"
>>>>>      -DMYSQL_DATADIR="/var/lib/mysql"
>>>>>      -DMYSQL_UNIX_ADDR="/var/lib/mysql/mysql.sock"
>>>>>
>>>>> --
>>>>> 須藤 功平 <kou****@clear*****>
>>>>> 株式会社クリアコード <http://www.clear-code.com/> (03-6231-7270)
>>>>>
>>>>> groongaサポート:
>>>>>      http://groonga.org/ja/support/
>>>>> パッチ採用はじめました:
>>>>>      http://www.clear-code.com/recruitment/
>>>>> コミットへのコメントサービスはじめました:
>>>>>      http://www.clear-code.com/services/commit-comment.html
>>>>>
>>>>> _______________________________________________
>>>>> groonga-dev mailing list
>>>>> groon****@lists*****
>>>>> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>>>>
>>>> _______________________________________________
>>>> groonga-dev mailing list
>>>> groon****@lists*****
>>>> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev
>>>>
>>>
>>>
>> 
>> 
> 
> 
> -- 
> ━━━━━━━━━━━━………‥‥‥・・・
> WING☆
> http://wingse.blog57.fc2.com/
> http://sourceforge.jp/projects/wing-repo/
> twitter:wingstars555
> Facebook:http://facebook.com/ason.fukui.5
> ━━━━━━━━━━━━……‥‥・・
> 
> _______________________________________________
> groonga-dev mailing list
> groon****@lists*****
> http://lists.sourceforge.jp/mailman/listinfo/groonga-dev




groonga-dev メーリングリストの案内
Back to archive index