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

Back to archive index

中野 宏朗 nakan****@nttco*****
2013年 6月 7日 (金) 14:35:41 JST


中野@幕張です。

この変更をv3.1.0に入れたいとのことですが、
修正方針にコメントとかないですかね?

とくに、過去このコードを書いた人。

単に消していいのかどうか、コードからだけじゃ意図が
良くわかんないコードが多いんですよね・・・

# linux kernelのコードみたいに、各ファイルの冒頭copyrightに
# 会社名じゃなくて個人名書けよ、って思ってたり;P

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

-- 
中野 宏朗 (NAKANO Hiroaki)
NTTコムウェア 品質生産性技術本部 技術SE部
基盤ソフトSE・OSS部門 OSS・DB技術担当
Tel: 043-211-2452 (Ext: 特番+26-8341), Fax: 043-211-5086
Zip/Address: 261-0023 千葉県千葉市美浜区中瀬1-6 NTT幕張ビル21F-En




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