[groonga-dev,03061] Re: MariaDBバンドル版Mroonga 4.09でMroongaがインストール出来ない問題について

Back to archive index

hiroshi hatake cosmo****@gmail*****
2015年 1月 9日 (金) 23:41:35 JST


畑ケです。

> ...
>> Visual Studio のデバッガで追って確認してみました。
>>
>> 手順)
>> 1. Visual Studioのデバッガでmysqldをアタッチ
>> 2. mysqlクライアントにshare\mroonga\install.sqlを食べさせる。
>>
>> すると、
>>
>>>   3964            ((o->flags & (PLUGIN_VAR_STR | PLUGIN_VAR_NOCMDOPT |
>>>   3965 PLUGIN_VAR_MEMALLOC)) == PLUGIN_VAR_STR))
>> の箇所ではなく、
>> その前の箇所の、
>>
>>>   3963        if (mysqld_server_started &&
>>>   3964            ((o->flags & (PLUGIN_VAR_STR | PLUGIN_VAR_NOCMDOPT |
>>>   3965 PLUGIN_VAR_MEMALLOC)) == PLUGIN_VAR_STR))
>>>   3966        {
>>>   3967          sysvar_str_t* str= (sysvar_str_t *)o;
>>>   3968          if (*str->value)
>>>   3969            *str->value= strdup_root(mem_root, *str->value);
>>>   3970        }
>> str->valueのチェックの、
>>
>>>   3968          if (*str->value)
>> のstrがNULLで落ちていました。必ずこのifに到達すると異常終了します。
> あ、そうなんですか。
>
> だったら、そのときのtmp->name.strの値はどうなっていますか?
> たぶん、Mroongaかしら。

---
tmp->name.strの値は
-        tmp    0x01a59870 {name={str=0x74937990 "Mroonga" length=7 } 
plugin=0x74943488 {ha_mroonga.dll!st_maria_plugin 
_maria_plugin_declarations_[3]} {...} ...}    st_plugin_int *
         -        name    {str=0x74937990 "Mroonga" length=7 } 
st_mysql_lex_string
              -        str    0x74937990 "Mroonga"    char *
---

"Mroonga" です!

>
> でも、おかしいですねぇ。そのfor文で
>
>      for (opt= tmp->plugin->system_vars; *opt; opt++)
>        st_mysql_sys_var *o= *opt;
>
> としているので、oがNULLになることはない気がするんですよねぇ。
> *optもNULLになっていますか?

Visual StdioのC++コンパイラの最適化で消えていました…。
見られませんでした。。。

>
> あと、tmp->plugin->system_varsの中身ってみれます?

↓のようになりました!
---
-        system_vars    0x749430a8 {ha_mroonga.dll!st_mysql_sys_var 
*mrn_system_variables[17]} {0x74943354 
{ha_mroonga.dll!<unnamed-type-mysql_sysvar_log_level> 
mysql_sysvar_log_level} {...}}    st_mysql_sys_var * *
          -            0x74943354 
{ha_mroonga.dll!<unnamed-type-mysql_sysvar_log_level> 
mysql_sysvar_log_level} {flags=6 name=...}    st_mysql_sys_var *
                         flags    6    int
                +        name    0x1dc9bff8 "mroonga_log_level" const char *
                +        comment    0x74937b28 "logging level" const char *
                         check    0x002b8d60 
{mysqld.exe!check_func_enum(THD *, st_mysql_sys_var *, void *, 
st_mysql_value *)}    int (THD *, st_mysql_sys_var *, void *, 
st_mysql_value *) *
                         update    0x74901500 
{ha_mroonga.dll!mrn_log_level_update(THD *, st_mysql_sys_var *, void *, 
const void *)}    void (THD *, st_mysql_sys_var *, void *, const void *) *

---

>> ほか、tmp_root, tmp, argc, argvの異常終了した時点での値のダンプを添付
>> し ます。
> ありがとうございます。が、ここでは添付ファイルを使えないっぽ
> いのでどこかに貼ってもらえますか?

いつものようにDropboxに置きました。
https://dl.dropboxusercontent.com/u/36753409/Mroonga-4.09-crash-win/dump_variable.log

>> 他に役に立つかわからないですが、Ubuntuの場合も試してみたので報告します。
> ありがとうございます!
>
>> http://packages.groonga.org/nightly/mariadb-10.0.15-with-mroonga-4.09.2015.01.08.tar.gz
>> をUbuntu14.04.1 LTSでビルドし、share\mroonga\install.sqlを食べさせると、
>>
>> 今までwarningが出ていなかったと思いますが、
>> warningが出るようになってしまっています。
>>
>> ---
>> MariaDB [(none)]> source ../share/mroonga/install.sql
>> Query OK, 0 rows affected (0.00 sec)
>>
>> Query OK, 0 rows affected (0.01 sec)
>>
>> Query OK, 0 rows affected, 1 warning (0.00 sec)
>>
>> Query OK, 0 rows affected (0.00 sec)
>>
>> Query OK, 0 rows affected, 1 warning (0.00 sec)
>>
>> Query OK, 0 rows affected (0.00 sec)
>>
>> Query OK, 0 rows affected, 1 warning (0.00 sec)
>>
>> Query OK, 0 rows affected (0.00 sec)
>>
>> Query OK, 0 rows affected, 1 warning (0.00 sec)
>>
>> Query OK, 0 rows affected (0.00 sec)
>> ---
> warningの詳細も見せてもらえるとうれしいです。
> show warningsってやると見れるんだったかしら。
>
一つづつ試してみました。

試した結果です:

---
MariaDB [(none)]> DELETE IGNORE FROM mysql.plugin WHERE dl = 'ha_mroonga.so';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> INSTALL PLUGIN Mroonga SONAME 'ha_mroonga.so';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> DROP FUNCTION IF EXISTS last_insert_grn_id;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> CREATE FUNCTION last_insert_grn_id RETURNS INTEGER
     ->   SONAME 'ha_mroonga.so';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show warnings;
+-------+------+--------------------------------------------------+
| Level | Code | Message                                          |
+-------+------+--------------------------------------------------+
| Note  | 1305 | FUNCTION (UDF) last_insert_grn_id does not exist |
+-------+------+--------------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> DROP FUNCTION IF EXISTS mroonga_snippet;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> CREATE FUNCTION mroonga_snippet RETURNS STRING
     ->   SONAME 'ha_mroonga.so';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show warnings;                                                +-------+------+-----------------------------------------------+
| Level | Code | Message                                       |
+-------+------+-----------------------------------------------+
| Note  | 1305 | FUNCTION (UDF) mroonga_snippet does not exist |
+-------+------+-----------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> DROP FUNCTION IF EXISTS mroonga_command;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> CREATE FUNCTION mroonga_command RETURNS STRING
     ->   SONAME 'ha_mroonga.so';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show warnings;
+-------+------+-----------------------------------------------+
| Level | Code | Message                                       |
+-------+------+-----------------------------------------------+
| Note  | 1305 | FUNCTION (UDF) mroonga_command does not exist |
+-------+------+-----------------------------------------------+
1 row in set (0.00 sec)

MariaDB [(none)]> DROP FUNCTION IF EXISTS mroonga_escape;
Query OK, 0 rows affected, 1 warning (0.00 sec)

MariaDB [(none)]> CREATE FUNCTION mroonga_escape RETURNS STRING
     ->   SONAME 'ha_mroonga.so';
Query OK, 0 rows affected (0.00 sec)

MariaDB [(none)]> show warnings;
+-------+------+----------------------------------------------+
| Level | Code | Message                                      |
+-------+------+----------------------------------------------+
| Note  | 1305 | FUNCTION (UDF) mroonga_escape does not exist |
+-------+------+----------------------------------------------+
1 row in set (0.00 sec)

# 全然関係ないですが、MariaDB 10.0.15 with Mroonga 4.09に含まれているGroongaは4.0.9でしたっけ。。




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