[Ultramonkey-l7-develop 899] Re: debian testingでのコンパイルエラー

Back to archive index

Hibari Michiro hibar****@lab*****
2013年 3月 18日 (月) 18:05:34 JST


中野様

雲雀です。お世話になっております。

チケットの発行お願いします。

diff(patch)ですが、添付ファイルとしても乗っけて
頂けると、手元の環境に取り込んだりするのが楽なので、
助かります。
(メーラによってはスペースを勝手に省略してしまったりして、
コピペだけだとそのままpatchとして使えなかったりするので。)

Fedora18がRHEL7のベースになると言われているので、
ターゲットとしてはFedora18に同梱されているgcc4.7で
コンパイルが通ることがゴールにすると良いかと。


(2013/03/18 17:42), 中野 宏朗 wrote:
> 中野@幕張です。
>
> そういえばこれはまだチケット発行してなかったですね。
> v3.1.0には間に合わないかな?
>
> wheezyのgccは4.6になります。あ、でもバージョンアップ
> してるから4.7とかになってたりして。
>
> fedoraだとfedora 16が4.6、17だと4.7系ですね。
> v3.1.xの早いうちに対応したほうが良さそうです。
> チケット発行しておきます。
>
> 修正方針メモを投稿しておきます。
> こんな感じでOK?
>
> =====================
> diff --git a/l7vsd/module/protocol/protocol_module_ip.cpp b/l7vsd/module/protocol/protocol_module_ip.cpp
> index 2d3ec46..8c028d6 100644
> --- a/l7vsd/module/protocol/protocol_module_ip.cpp
> +++ b/l7vsd/module/protocol/protocol_module_ip.cpp
> @@ -324,7 +324,7 @@ protocol_module_base::check_message_result protocol_module_ip::check_parameter(c
>          bool timeout_flag = false;
>          bool reschedule_flag = false;
>          bool no_reschedule_flag = false;
> -        bool forward_checked = false;
> +        //bool forward_checked = false;
>          bool sorryuri_checked = false;
>          bool stats_checked = false;
>
> @@ -450,7 +450,7 @@ protocol_module_base::check_message_result protocol_module_ip::check_parameter(c
>                          //option string = "-F"
>                          else if (*it == "-F" || *it == "--forwarded-for") {
>                                  //set forward flag  ON
> -                                forward_checked = true;
> +                                //forward_checked = true;
>                          }
>                          //option string = "-S"
>                          else if (*it == "-S" || *it == "--sorry-uri") {
> check_parameterでのforwadedフラグチェックは意味無いからなくしていい。
>
> @@ -5657,11 +5657,6 @@ bool protocol_module_ip::put_data_into_sendbuffer(
>                          buffer_element.first += sendbuffer_rest_size;
>                          buffer_element.second -= sendbuffer_rest_size;
>                          sendbuffer_rest_size = 0;
> -
> -                        //add remain item
> -                        data_ptr->buffer_sequence.push_back(buffer_element);
> -                        //delete the item
> -                        data_ptr->buffer_sequence.pop_front();
>                          break;
>                  }
>          }
> これは不明
>
> diff --git a/l7vsd/module/protocol/protocol_module_ip.h b/l7vsd/module/protocol/protocol_module_ip.h
> index 50d064b..54af5f7 100644
> --- a/l7vsd/module/protocol/protocol_module_ip.h
> +++ b/l7vsd/module/protocol/protocol_module_ip.h
> @@ -93,8 +93,8 @@ protected:
>                          hash = cl_endpoint.address().to_v4().to_ulong() * GOLDEN_RATIO_PRIME;
>                  } else {
>                          boost::asio::ip::address_v6::bytes_type v6_bytes = cl_endpoint.address().to_v6().to_bytes();
> -                        boost::asio::ip::address_v4::bytes_type v4_bytes = {{v6_bytes[12], v6_bytes[13], v6_bytes[14],
> v6_bytes[15]}};
> -                        boost::asio::ip::address_v4::address_v4 v4_address =
> boost::asio::ip::address_v4::address_v4(v4_bytes);
> +                        const boost::asio::ip::address_v4::bytes_type v4_bytes = {{v6_bytes[12], v6_bytes[13],
> v6_bytes[14], v6_bytes[15]}};
> +                        boost::asio::ip::address_v4 v4_address(v4_bytes);
>                          hash = v4_address.to_ulong() * GOLDEN_RATIO_PRIME;
> 将来的には治したほうがいい。
>
>                  }
> diff --git a/l7vsd/module/protocol/protocol_module_sessionless.cpp b/l7vsd/module/protocol/protocol_module_sessionless.cpp
> index d042afb..f655cec 100644
> --- a/l7vsd/module/protocol/protocol_module_sessionless.cpp
> +++ b/l7vsd/module/protocol/protocol_module_sessionless.cpp
> @@ -356,7 +356,7 @@ protocol_module_base::check_message_result protocol_module_sessionless::check_pa
>          //set check result true
>          check_message_result check_result;
>          check_result.flag = true;
> -        bool forward_checked = false;
> +        //bool forward_checked = false;
>          bool sorryuri_checked = false;
>          bool stats_checked = false;
>
> @@ -408,7 +408,7 @@ protocol_module_base::check_message_result protocol_module_sessionless::check_pa
>                          //option string = "-F"
>                          if (*it == "-F" || *it == "--forwarded-for") {
>                                  //set forward flag  ON
> -                                forward_checked = true;
> +                                //forward_checked = true;
>                          }
>                          //option string = "-S"
>                          else if (*it == "-S" || *it == "--sorry-uri") {
> いらん。
>
> diff --git a/l7vsd/src/l7vsadm.cpp b/l7vsd/src/l7vsadm.cpp
> index b63d573..951db90 100644
> --- a/l7vsd/src/l7vsadm.cpp
> +++ b/l7vsd/src/l7vsadm.cpp
> @@ -2957,9 +2957,10 @@ bool l7vs::l7vsadm::execute(int argc, char *argv[])
>
>          // Get l7vsadm execute file path from /proc/(pid)/exe (symbolic link)
>          char l7vsadm_file_path[256];
> -        ssize_t retsize;
> +        //ssize_t retsize;
>          memset(l7vsadm_file_path, 0, sizeof(l7vsadm_file_path));
> -        retsize = readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path));
> +        //retsize = readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path));
> +        readlink("/proc/self/exe", l7vsadm_file_path, sizeof(l7vsadm_file_path));
>
>          // L7vsadm command conflict check. (Try l7vsadm execute file lock)
>          file_lock lock(l7vsadm_file_path, l7vsadm_err);
> この直後、ファイルパスでロックをかけようとして、ロックかけられなかったら
> エラー終了してるからここではエラーチェックしなくていいかも。
> してもいいけど。
>
> diff --git a/l7vsd/src/logger_impl.cpp b/l7vsd/src/logger_impl.cpp
> index 0ab72b1..9401d8f 100644
> --- a/l7vsd/src/logger_impl.cpp
> +++ b/l7vsd/src/logger_impl.cpp
> @@ -343,9 +343,9 @@ bool l7vs::LoggerImpl::init()
>          }
>
>          // get hostname
> -        int        ret = 0;
> +        //int        ret = 0;
>          char    buff[HOST_NAME_MAX];
> -        ret = gethostname(buff, HOST_NAME_MAX);
> +        gethostname(buff, HOST_NAME_MAX);
>          hostname = buff;
>
>          initialized = true;
> ここは一応hostnameが取れたかどうか判定してもいいんで無いか?
> 取れていなかった場合どうする?エラー終了?
> それともログ用ホスト名なし程度、無視する?
>
> diff --git a/l7vsd/src/session_thread_control.cpp b/l7vsd/src/session_thread_control.cpp
> index df0c938..2bd5e24 100644
> --- a/l7vsd/src/session_thread_control.cpp
> +++ b/l7vsd/src/session_thread_control.cpp
> @@ -36,15 +36,17 @@ namespace l7vs
>  void    session_thread_control::start_thread()
>  {
>
> -        int            int_val;
> +        //int            int_val;
>
>          upthread.reset(new boost::thread(&session_thread_control::upstream_run, this));        //! upstream thread create
>          downthread.reset(new boost::thread(&session_thread_control::downstream_run, this));    //! downstream thread create
>
>          //pthread_setschedparam
> -        int    retval, sched_policy;
> +        //int    retval, sched_policy;
> +        int    sched_policy;
>          sched_param    scheduler_param;
> -        int_val    = pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param);
> +        //int_val    = pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param);
> +        pthread_getschedparam(upthread->native_handle(), &sched_policy, &scheduler_param);
>          if (SCHED_FIFO == sched_algorithm) {
>                  scheduler_param.__sched_priority    = sched_priority;
>                  sched_policy    = SCHED_FIFO;
> @@ -55,8 +57,10 @@ void    session_thread_control::start_thread()
>                  sched_policy    = SCHED_BATCH;
>          }
>          if (0 <= sched_algorithm) {
> -                retval            = pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param);
> -                retval            = pthread_setschedparam(downthread->native_handle(), sched_algorithm, &scheduler_param);
> +	  //retval            = pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param);
> +	  //retval            = pthread_setschedparam(downthread->native_handle(), sched_algorithm, &scheduler_param);
> +                pthread_setschedparam(upthread->native_handle(), sched_algorithm, &scheduler_param);
> +                pthread_setschedparam(downthread->native_handle(), sched_algorithm, &scheduler_param);
>          }
>
>  }
> pthread_getschedparamで返されるエラーはESRCHとEFAULTの二つ。EFAULTはSEGV。ESRCHはスレッドが無効または終了している。
> これはエラー処理書いてもいいかもしれない。
> setはEINVAL, EPERM, ESRCH, EFAULT。EINVALはパラメータ指定違い。EPERMはスーパーユーザ権限チェック。
> これもESRCHはログだしてもいいかな。
>
> diff --git a/l7vsd/src/virtualservice_base.cpp b/l7vsd/src/virtualservice_base.cpp
> index 94ab8a2..994c634 100644
> --- a/l7vsd/src/virtualservice_base.cpp
> +++ b/l7vsd/src/virtualservice_base.cpp
> @@ -481,7 +481,7 @@ cpu_set_t    l7vs::virtualservice_base::get_cpu_mask(std::string    nic_name)
>          map< size_t, string >    cpu_nic_map;
>          string                    buff;
>          ifstream                ifs("/proc/interrupts");
> -        unsigned int            target_interrupt;
> +        //unsigned int            target_interrupt;
>          size_t                    target_cpuid = 0;
>          cpu_set_t                mask;
>          sched_getaffinity(0, sizeof(cpu_set_t), &mask);
> @@ -503,7 +503,8 @@ cpu_set_t    l7vs::virtualservice_base::get_cpu_mask(std::string    nic_name)
>                  algorithm::split(split_vec, buff, algorithm::is_any_of(":"));
>                  if (!split_vec.size()) return mask;     // cannot split interrupt
>                  algorithm::trim(split_vec[0]);
> -                target_interrupt = lexical_cast<unsigned int>(split_vec[0]);
> +                //target_interrupt = lexical_cast<unsigned int>(split_vec[0]);
> +                lexical_cast<unsigned int>(split_vec[0]);
>                  for (size_t i = 0; i < cpu_nic_map.size(); ++i) {
>                          size_t    start_position = 4 + (i * 11);
>                          size_t    end_position = 11;
> これはsched afinity用の使われていないメソッド。
> 呼び元のvirtualservice_tcpでifdefしてる。
> そもそも、このメソッド自体が未完成。いまは手動でネットワークのキューにピンさしたら
> スケジューラ任せでよしなにしてくれる。
>
> =====================
>
> (2013/02/06 0:35), Hiroaki Nakano wrote:
>> たるすぴ@幕張です。
>>
>> ultramonkey-l7-v3のmasterブランチをdebian testingで
>> コンパイルしてみたら、いくつかエラーが出ました。
>>
>> どうやら、新しいg++では値を代入しても参照されない
>> 変数はエラーになるようです。
>> あと、protocol_module_ip.hにへんなクラス宣言?がありました。
>>
>> -----------
>> protocol_module_ip.cpp: In member function 'virtual
>> l7vs::protocol_module_base::check_message_result
>> l7vs::protocol_module_ip::check_parameter(const
>> std::vector<std::basic_string<char> >&)':
>> protocol_module_ip.cpp:327:14: error: variable 'forward_checked' set but
>> not used [-Werror=unused-but-set-variable]
>> cc1plus: all warnings being treated as errors
>> make[4]: *** [protocol_module_ip.lo] エラー 1
>>
>> libtool: compile: g++ -DHAVE_CONFIG_H -I. -I../../.. -g -O2
>> -fno-strict-aliasing -Wall -Werror -fPIC -pthread -I../../include
>> -I../../logger -I../../parameter -DMAX_BUFFER_SIZE=4096 -g -O2 -MT
>> protocol_module_ip.lo -MD -MP -MF .deps/protocol_module_ip.Tpo -c
>> protocol_module_ip.cpp -fPIC -DPIC -o .libs/protocol_module_ip.o
>> protocol_module_sessionless.cpp: In member function 'virtual
>> l7vs::protocol_module_base::check_message_result
>> l7vs::protocol_module_sessionless::check_parameter(const
>> std::vector<std::basic_string<char> >&)':
>> protocol_module_sessionless.cpp:359:14: error: variable
>> 'forward_checked' set but not used [-Werror=unused-but-set-variable]
>> In file included from protocol_module_ip.cpp:33:0:
>> protocol_module_ip.h: In member function 'unsigned int
>> l7vs::protocol_module_ip::l7vs_ip_service_calc_hash(const endpoint&)':
>> protocol_module_ip.h:97:25: error:
>> 'boost::asio::ip::address_v4::address_v4' names the constructor, not the
>> type
>> protocol_module_ip.h:97:65: error: expected ';' before 'v4_address'
>> protocol_module_ip.h:97:127: error: statement cannot resolve address of
>> overloaded function
>> protocol_module_ip.h:98:32: error: 'v4_address' was not declared in this
>> scope
>> In file included from protocol_module_ip.cpp:33:0:
>> protocol_module_ip.h:96:65: error: unused variable 'v4_bytes'
>> [-Werror=unused-variable]
>> cc1plus: all warnings being treated as errors
>> make[4]: *** [protocol_module_sessionless.lo] エラー 1
>> make[4]: *** 未完了のジョブを待っています....
>> cc1plus: all warnings being treated as errors
>> make[4]: *** [protocol_module_ip.lo] エラー 1
>>
>>
>> l7vsadm.cpp: In member function ‘bool l7vs::l7vsadm::execute(int, char**)’:
>> l7vsadm.cpp:2960:17: error: variable ‘retsize’ set but not used
>> [-Werror=unused-but-set-variable]
>> cc1plus: all warnings being treated as errors
>> make[3]: *** [l7vsadm-l7vsadm.o] エラー 1
>>
>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall
>> -Werror -pthread -I../include -I../include
>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096
>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\""
>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD
>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT
>> l7vsd-protocol_module_control.o -MD -MP -MF
>> .deps/l7vsd-protocol_module_control.Tpo -c -o
>> l7vsd-protocol_module_control.o `test -f 'protocol_module_control.cpp'
>> || echo './'`protocol_module_control.cpp
>> session_thread_control.cpp: In member function ‘void
>> l7vs::session_thread_control::start_thread()’:
>> session_thread_control.cpp:39:24: error: variable ‘int_val’ set but not
>> used [-Werror=unused-but-set-variable]
>> session_thread_control.cpp:45:16: error: variable ‘retval’ set but not
>> used [-Werror=unused-but-set-variable]
>> cc1plus: all warnings being treated as errors
>> make[3]: *** [l7vsd-session_thread_control.o] エラー 1
>> make[3]: *** 未完了のジョブを待っています....
>>
>>
>> g++ -DHAVE_CONFIG_H -I. -I../.. -O2 -fno-strict-aliasing -g -Wall
>> -Werror -pthread -I../include -I../include
>> -DL7VS_MODULE_PATH="\"/usr/lib64/l7vs\"" -DMAX_BUFFER_SIZE=4096
>> -DPARAMETER_FILE="\"/etc/l7vs/l7vs.cf\""
>> -DL7VS_CONFIG_SOCK_PATH="\"/var/run/l7vs\"" -DLOGGER_PROCESS_VSD
>> -DNETSNMP_NO_INLINE -DVERSION=\"3.0.4\" -g -O2 -MT
>> l7vsd-virtualservice_udp.o -MD -MP -MF
>> .deps/l7vsd-virtualservice_udp.Tpo -c -o l7vsd-virtualservice_udp.o
>> `test -f 'virtualservice_udp.cpp' || echo './'`virtualservice_udp.cpp
>> virtualservice_base.cpp: In member function ‘cpu_set_t
>> l7vs::virtualservice_base::get_cpu_mask(std::string)’:
>> virtualservice_base.cpp:484:33: error: variable ‘target_interrupt’ set
>> but not used [-Werror=unused-but-set-variable]
>> cc1plus: all warnings being treated as errors
>> make[3]: *** [l7vsd-virtualservice_base.o] エラー 1
>> make[3]: *** 未完了のジョブを待っています....
>>
>>
>> logger_a-logger_impl.o -MD -MP -MF
>> .deps/libl7vsd_logger_a-logger_impl.Tpo -c -o
>> libl7vsd_logger_a-logger_impl.o `test -f 'logger_impl.cpp' || echo
>> './'`logger_impl.cpp
>> logger_impl.cpp: In member function ‘virtual bool l7vs::LoggerImpl::init()’:
>> logger_impl.cpp:346:20: error: variable ‘ret’ set but not used
>> [-Werror=unused-but-set-variable]
>> cc1plus: all warnings being treated as errors
>> make[3]: *** [libl7vsd_logger_a-logger_impl.o] エラー 1
>> make[3]: *** 未完了のジョブを待っています....
>> ----------------------------------------------------
>>
>> 使っていない変数はコメントにしたり消したりして、
>> 変な宣言のところを直したパッチを作ったので添付しておきます。
>> # 必要な変数だったのなら、処理が漏れていることになるね。
>>
>>
>>
>>
>> _______________________________________________
>> Ultramonkey-l7-develop mailing list
>> Ultra****@lists*****
>> http://lists.sourceforge.jp/mailman/listinfo/ultramonkey-l7-develop
>>


-- 
雲雀 路朗 (Michiro Hibari)
MAIL:  hibar****@lab*****
所属:  NTT OSSセンタ 基盤技術ユニット 高信頼担当
TEL : 03-5860-5135 / FAX: 03-5463-5490




Ultramonkey-l7-develop メーリングリストの案内
Back to archive index