Thread: [Cppcms-users] forms - select_base::msg patch
Brought to you by:
artyom-beilis
From: kpeo <sla...@ya...> - 2012-07-18 10:59:18
Attachments:
form.patch
|
Hello all! Sometimes we need to return a message, attached to selectable widget. For example, we have a content structure and form inside it with selectable widget, that has a displayed text (message) for every options. As i understand, original API can't return a message - just id (int or string). Shure, we can use id = message, but what if message is not unique or we need less alphabets for option's storing? We also may want to display this option as message in content structure and store this option as id. Well, we can use own component (map or kind of enum) to store id-to-text mapping, but we already have one in original library. So, i decide to write this little patch for src/form.cpp and cppcms/form.h. Shure, you can use it freely at your own risk, as me ;) And i'll be glad to see any criticism about it. Suggest, may be after reviewing by maintainers and if this patch looks useful - it will be included in new revisions of framework. Regards, kpeo |
From: Artyom B. <art...@ya...> - 2012-07-19 08:34:06
|
>________________________________ > From: kpeo <sla...@ya...> >To: "cpp...@li..." <cpp...@li...> >Sent: Wednesday, July 18, 2012 1:59 PM >Subject: [Cppcms-users] forms - select_base::msg patch > >Hello all! > >Sometimes we need to return a message, attached to selectable widget. >For example, we have a content structure and form inside it with selectable widget, that has a displayed text (message) for every options. >As i understand, original API can't return a message - just id (int or string). The problem with message that it is locale dependent. That is why you can specify some general id you know is constant and unique. So getting the message is problematic and in fact your implementation contains an error. As for example if you want to call return elements_[i].tr_option; you need to convert it according to locale (otherwise it by default is converted according to global locale) > Shure, we can use id = message, but what if message > is not unique or we need less alphabets for option's > storing? We also may want to display this option as > message in content structure and store this option as id. > Well, we can use own component (map or kind of enum) to > store id-to-text mapping, but we already have one in original library. > > So, i decide to write this little patch for src/form.cpp and cppcms/form.h. > Shure, you can use it freely at your own risk, as me ;) And i'll be glad to see any criticism about it. > > Suggest, may be after reviewing by maintainers and if this patch looks > useful - it will be included in new revisions o f framework. > If you want to get message according to id you need to pass a locale parameter and even localization domain to convert it. std::string msg(std::locale const &l) std::string msg(std::locale const &l,std::string const &domain) But I think it is bad idea in general... So it would probably be better to return the booster::locale::message or std::string like bool selected_message_is_localized(); booster::locale::message selected_localized_message(); std::string selected_message(); bool message_is_localized(int num); booster::locale::message localized_message(int num); std::string message(int num); bool message_is_localized(std::string const &id); booster::locale::message localized_message(std::string const &id); std::string message(std::string const &id); And each one of the (selected_)?(localized_)?_message() would throw an error if the type is not correct >Regards, >kpeo >------------------------------------------------------------------------------ >Live Security Virtual Conference >Exclusive live event will cover all the ways today's security and >threat landscape has changed and how IT managers can respond. Discussions >will include endpoint security, mobile security and the latest in malware >threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >_______________________________________________ >Cppcms-users mailing list >Cpp...@li... >https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > |
From: kpeo <sla...@ya...> - 2012-07-30 15:12:09
Attachments:
form.patch
|
Thank you for remarks! I correcting mistakes, so this is new patch with tests. >> ________________________________ >> From: kpeo<sla...@ya...> >> To: "cpp...@li..."<cpp...@li...> >> Sent: Wednesday, July 18, 2012 1:59 PM >> Subject: [Cppcms-users] forms - select_base::msg patch >> >> Hello all! >> >> Sometimes we need to return a message, attached to selectable widget. >> For example, we have a content structure and form inside it with selectable widget, that has a displayed text (message) for every options. >> As i understand, original API can't return a message - just id (int or string). > The problem with message that it is locale dependent. > That is why you can specify some general id you know is constant and unique. > > So getting the message is problematic and in fact your implementation contains an error. > > As for example if you want to call > > return elements_[i].tr_option; > > you need to convert it according to locale (otherwise it by default is converted according to global locale) > > >> Shure, we can use id = message, but what if message >> is not unique or we need less alphabets for option's >> storing? We also may want to display this option as >> message in content structure and store this option as id. >> Well, we can use own component (map or kind of enum) to >> store id-to-text mapping, but we already have one in original library. >> >> So, i decide to write this little patch for src/form.cpp and cppcms/form.h. >> Shure, you can use it freely at your own risk, as me ;) And i'll be glad to see any criticism about it. >> >> Suggest, may be after reviewing by maintainers and if this patch looks >> useful - it will be included in new revisions o f framework. >> > If you want to get message according to id you need to pass a locale parameter and even localization domain > to convert it. > > std::string msg(std::locale const&l) > std::string msg(std::locale const&l,std::string const&domain) > > But I think it is bad idea in general... > > > So it would probably be better to return the booster::locale::message or std::string like > > > bool selected_message_is_localized(); > booster::locale::message selected_localized_message(); > > std::string selected_message(); > > bool message_is_localized(int num); > booster::locale::message localized_message(int num); > > std::string message(int num); > > bool message_is_localized(std::string const&id); > > booster::locale::message localized_message(std::string const&id); > > std::string message(std::string const&id); > > > And each one of the (selected_)?(localized_)?_message() > would throw an error if the type is not correct > > > >> Regards, >> kpeo >> ------------------------------------------------------------------------------ >> Live Security Virtual Conference >> Exclusive live event will cover all the ways today's security and >> threat landscape has changed and how IT managers can respond. Discussions >> will include endpoint security, mobile security and the latest in malware >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >> _______________________________________________ >> Cppcms-users mailing list >> Cpp...@li... >> https://lists.sourceforge.net/lists/listinfo/cppcms-users >> >> >> > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users |
From: Artyom B. <art...@ya...> - 2012-07-31 06:21:40
|
Seems nice. I'll get to it this weekend :-) Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ ----- Original Message ----- > From: kpeo <sla...@ya...> > To: cpp...@li... > Cc: > Sent: Monday, July 30, 2012 6:11 PM > Subject: Re: [Cppcms-users] forms - select_base::msg patch > >T hank you for remarks! > I correcting mistakes, so this is new patch with tests. >>> ________________________________ >>> From: kpeo<sla...@ya...> >>> To: > "cpp...@li..."<cpp...@li...> >>> Sent: Wednesday, July 18, 2012 1:59 PM >>> Subject: [Cppcms-users] forms - select_base::msg patch >>> >>> Hello all! >>> >>> Sometimes we need to return a message, attached to selectable widget. >>> For example, we have a content structure and form inside it with > selectable widget, that has a displayed text (message) for every options. >>> As i understand, original API can't return a message - just id (int > or string). >> The problem with message that it is locale dependent. >> That is why you can specify some general id you know is constant and > unique. >> >> So getting the message is problematic and in fact your implementation > contains an error. >> >> As for example if you want to call >> >> return elements_[i].tr_option; >> >> you need to convert it according to locale (otherwise it by default is > converted according to global locale) >> >> >>> Shure, we can use id = message, but what if message >>> is not unique or we need less alphabets for option's >>> storing? We also may want to display this option as >>> message in content structure and store this option as id. >>> Well, we can use own component (map or kind of enum) to >>> store id-to-text mapping, but we already have one in original library. >>> >>> So, i decide to write this little patch for src/form.cpp and > cppcms/form.h. >>> Shure, you can use it freely at your own risk, as me ;) And i'll be > glad to see any criticism about it. >>> >>> Suggest, may be after reviewing by maintainers and if this patch looks >>> useful - it will be included in new revisions o f framework. >>> >> If you want to get message according to id you need to pass a locale > parameter and even localization domain >> to convert it. >> >> std::string msg(std::locale const&l) >> std::string msg(std::locale const&l,std::string const&domain) >> >> But I think it is bad idea in general... >> >> >> So it would probably be better to return the booster::locale::message or > std::string like >> >> >> bool selected_message_is_localized(); >> booster::locale::message selected_localized_message(); >> >> std::string selected_message(); >> >> bool message_is_localized(int num); >> booster::locale::message localized_message(int num); >> >> std::string message(int num); >> >> bool message_is_localized(std::string const&id); >> >> booster::locale::message localized_message(std::string const&id); >> >> std::string message(std::string const&id); >> >> >> And each one of the (selected_)?(localized_)?_message() >> would throw an error if the type is not correct >> >> >> >>> Regards, >>> kpeo >>> > ------------------------------------------------------------------------------ >>> Live Security Virtual Conference >>> Exclusive live event will cover all the ways today's security and >>> threat landscape has changed and how IT managers can respond. > Discussions >>> will include endpoint security, mobile security and the latest in > malware >>> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >>> _______________________________________________ >>> Cppcms-users mailing list >>> Cpp...@li... >>> https://lists.sourceforge.net/lists/listinfo/cppcms-users >>> >>> >>> >> > ------------------------------------------------------------------------------ >> Live Security Virtual Conference >> Exclusive live event will cover all the ways today's security and >> threat landscape has changed and how IT managers can respond. Discussions >> will include endpoint security, mobile security and the latest in malware >> threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ >> _______________________________________________ >> Cppcms-users mailing list >> Cpp...@li... >> https://lists.sourceforge.net/lists/listinfo/cppcms-users > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
From: <ele...@ex...> - 2012-08-01 07:01:38
|
Hi Artyom, We've been doing data entry into our software and we've found a strange bug. But im not really sure how to debug it. We have not changed any of our code in the last week or so. Basically what's happening is that we have a list of aircraft parts, and all of sudden, the whole page started repeating itself untill infinity (including the HTML DOCTYPE), and there's weird characters all over the page. The cppcms logfile is saying this: cppcms, warning: Failed to write response:system: Broken pipe (http_response.cpp:279) but I suppose thats because we have to click the browser stop button to stop it from infinitely repeating itself. Any clues? Petr |
From: Artyom B. <art...@ya...> - 2012-08-01 07:14:58
|
----- Original Message ----- > From: "ele...@ex..." <ele...@ex...> > To: Artyom Beilis <art...@ya...>; cpp...@li... > Cc: > Sent: Wednesday, August 1, 2012 10:01 AM > Subject: [Cppcms-users] URGENT: strange bug ocurring > > Hi Artyom, > > We've been doing data entry into our software and we've found a strange > bug. But im not really sure how to debug it. > > We have not changed any of our code in the last week or so. > > Basically what's happening is that we have a list of aircraft parts, and > all of sudden, the whole page started repeating itself untill infinity > (including the HTML DOCTYPE), and there's weird characters all over the > page. > > The cppcms logfile is saying this: > > cppcms, warning: Failed to write response:system: Broken pipe > (http_response.cpp:279) > > but I suppose thats because we have to click the browser stop button to > stop it from infinitely repeating itself. > > Any clues? > Petr > The broken pipe warning says that the peer (client - browser) reset the connection before receiving entire page - probably because it was too big. Now I don't know what is the bug but it seems that you have some loop here... or you may got some memory corruption. Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ |
From: <ele...@ex...> - 2012-08-01 07:37:04
|
It looks like memory. I removed some rows from the database and now it just hangs loading the page, instead of repeating itself. I did a tcpdump with packet analysis (-A) in ASCII and i get random garbage like this: oA.HL.....x....l.a..@ta......+` f.7...vPf.q`..\...:.....rg..........v...c..o.of..n_.~.........[3U.`.b...p..0\.....t..../b....J...u.....P.L..C..F..;._..n..v8[.. ...p.3....$..|....a_`7R....68G8.W.y...x.6R&........$h.7}.F.k...C...B.s<..._} It's really weird that it just started happening without any change in code. |
From: <ele...@ex...> - 2012-08-01 07:47:24
|
Also I did an strace on the program and it stops at epoll_wait(7 which looks normally, but the page keeps loading and loading. Petr |
From: <ele...@ex...> - 2012-08-01 08:21:06
|
I ran the program without nginx (just on the internal cppcms server) and this keeps repeating: epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 999) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 999) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 epoll_wait(6, {}, 128, 0) = 0 |
From: <ele...@ex...> - 2012-08-01 10:00:10
|
Ok now it's not even loading. The page just goes blank and the error is 2012-08-01 19:58:07; cppcms, warning: Failed to write response:system: Broken pipe (http_response.cpp:279) Could the RAM be stuffed? This is a virtual server. Petr |
From: Artyom B. <art...@ya...> - 2012-08-01 10:15:52
|
See, if this error is reproducible - that makes it much easier... Open debugger :-) Open valgrind and see if there any memory corruptions. You see epoll in strace because that is what main event-loop thread does, you should see what other threads do. I'm not sure I can help unless you show me some specific problem that can be reproduced. Enjoy debugging :-) Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ ----- Original Message ----- > From: "ele...@ex..." <ele...@ex...> > To: Artyom Beilis <art...@ya...>; cpp...@li... > Cc: > Sent: Wednesday, August 1, 2012 12:59 PM > Subject: Re: [Cppcms-users] URGENT: strange bug ocurring > > Ok now it's not even loading. The page just goes blank and the error is > > 2012-08-01 19:58:07; cppcms, warning: Failed to write response:system: > Broken pipe (http_response.cpp:279) > > Could the RAM be stuffed? This is a virtual server. > > Petr > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
From: <ele...@ex...> - 2012-08-01 10:45:39
|
Using helgrind I get this ==12488== Possible data race during write of size 8 at 0x69b0008 by thread #6 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x546F82F: booster::log::message::message(booster::log::level_type, char const*, char const*, int) (log.cpp:57) ==12488== by 0x4ED819D: cppcms::http::details::output_device::write(char const*, int) (http_response.cpp:279) ==12488== by 0x4ED83E6: cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow(int) (http_response.cpp:131) ==12488== by 0x6756214: std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED5589: cppcms::http::response::finalize() (streambuf:427) ==12488== by 0x4EDB40C: cppcms::http::context::complete_response() (http_context.cpp:117) ==12488== by 0x4EDB8F0: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:156) ==12488== by 0x4EDD172: booster::function<void ()()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() (bind.hpp:385) ==12488== by 0x4EDEDD4: cppcms::impl::thread_pool::worker() (function.h:168) ==12488== by 0x54E227C: booster_thread_func (function.h:168) ==12488== This conflicts with a previous write of size 8 by thread #9 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED8F05: std::string cppcms::http::details::itoa<int>(int) (http_response.cpp:51) ==12488== by 0x4ED63C4: cppcms::http::response::status(int, std::string const&) (http_response.cpp:632) ==12488== by 0x4ED65DB: cppcms::http::response::status(int) (http_response.cpp:628) ==12488== by 0x4EFF5D5: cppcms::impl::file_server::show404() (internal_file_server.cpp:453) ==12488== by 0x4F006F7: cppcms::impl::file_server::main(std::string) (internal_file_server.cpp:424) ==12488== by 0x4EDB840: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:131) ==12488== ==12488== Possible data race during write of size 8 at 0x69b0008 by thread #6 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x547127A: booster::log::sinks::format_plain_text_message(booster::log::message const&) (log.cpp:268) ==12488== by 0x547197A: booster::log::sinks::standard_error::log(booster::log::message const&) (log.cpp:314) ==12488== by 0x546E880: booster::log::logger::log(booster::log::message const&) (log.cpp:229) ==12488== by 0x546E920: booster::log::message::~message() (log.cpp:62) ==12488== by 0x4ED81CE: cppcms::http::details::output_device::write(char const*, int) (http_response.cpp:279) ==12488== by 0x4ED83E6: cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow(int) (http_response.cpp:131) ==12488== by 0x6756214: std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED5589: cppcms::http::response::finalize() (streambuf:427) ==12488== by 0x4EDB40C: cppcms::http::context::complete_response() (http_context.cpp:117) ==12488== by 0x4EDB8F0: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:156) ==12488== This conflicts with a previous write of size 8 by thread #9 ==12488== at 0x6717A90: std::locale::locale(std::locale::_Impl*) (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x671B1DE: std::locale::classic() (in /usr/lib/libstdc++.so.6.0.13) ==12488== by 0x4ED8F05: std::string cppcms::http::details::itoa<int>(int) (http_response.cpp:51) ==12488== by 0x4ED63C4: cppcms::http::response::status(int, std::string const&) (http_response.cpp:632) ==12488== by 0x4ED65DB: cppcms::http::response::status(int) (http_response.cpp:628) ==12488== by 0x4EFF5D5: cppcms::impl::file_server::show404() (internal_file_server.cpp:453) ==12488== by 0x4F006F7: cppcms::impl::file_server::main(std::string) (internal_file_server.cpp:424) ==12488== by 0x4EDB840: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:131) I also get a lot of these: ==12515== Use of uninitialised value of size 8 ==12515== at 0x545B29D: booster::aio::io_service::set_timer_event(booster::ptime const&, booster::callback<void ()(booster::system::error_code const&)> const&) (io_service.cpp:216) ==12515== by 0x5459E71: booster::aio::deadline_timer::async_wait(booster::callback<void ()(booster::system::error_code const&)> const&) (deadline_timer.cpp:95) ==12515== by 0x4F80394: cppcms::impl::cgi::http_watchdog::check(booster::system::error_code const&) (http_api.cpp:728) ==12515== by 0x545A261: booster::aio::deadline_timer::waiter::operator()(booster::system::error_code const&) (callback.h:211) ==12515== by 0x545E5DD: booster::aio::event_loop_impl::run_one(booster::aio::reactor::event*, unsigned long) (callback.h:201) ==12515== by 0x545BD0F: booster::aio::io_service::run() (io_service.cpp:144) ==12515== by 0x4EB6AA4: cppcms::service::run() (service.cpp:574) ==12515== by 0x476CE5: main (main.cpp:23) I keep looking for more |
From: <ele...@ex...> - 2012-08-01 10:52:11
|
More valgrind: ==12515== Conditional jump or move depends on uninitialised value(s) ==12515== at 0x5480881: char const* booster::locale::gnu_gettext::runtime_conversion<char>(char const*, std::basic_string<char, std::char_traits<char>, std::allocator<char> >&, bool, std::string const&, std::string const&) (message.cpp:474) ==12515== by 0x5073B6: booster::locale::basic_message<char>::write(std::locale const&, int, std::string&) const (message.h:470) ==12515== by 0x579A16: booster::locale::basic_message<char>::write(std::ostream&) const (message.h:415) ==12515== by 0x577E56: std::basic_ostream<char, std::char_traits<char> >& booster::locale::operator<< <char>(std::basic_ostream<char, std::char_traits<char> >&, booster::locale::basic_message<char> const&) (message.h:518) ==12515== by 0x55087E: default_skin::Master::title() (master.tmpl:8) ==12515== by 0x55093E: default_skin::Master::header() (master.tmpl:11) ==12515== by 0x551173: default_skin::Master::render() (master.tmpl:29) ==12515== by 0x4EF7452: cppcms::views::pool::render(std::string const&, std::string const&, std::ostream&, cppcms::base_content&) (views_pool.cpp:115) ==12515== by 0x4EF79A8: cppcms::views::manager::render(std::string const&, std::string const&, std::ostream&, cppcms::base_content&) (views_pool.cpp:352) ==12515== by 0x4EDFC51: cppcms::application::render(std::string, cppcms::base_content&) (application.cpp:227) ==12515== by 0x487C88: apps::Tracker::index() (tracker.cpp:31) ==12515== by 0x488BBB: cppcms::url_dispatcher::binder0<apps::Tracker>::operator()() const (url_dispatcher.h:215) ==12515== |
From: <ele...@ex...> - 2012-08-01 10:59:49
|
Would you like me to post the HEAP summary after running with leak-check=full? Petr |
From: <ele...@ex...> - 2012-08-01 11:27:00
|
Valgrind using the drd tool I get this stuff when loading the infinte page: ==12769== Conflicting store by thread 3 at 0x0b9732c8 size 8 ==12769== at 0x4ED178D: std::vector<booster::aio::buffer_impl<char const*>::entry, std::allocator<booster::aio::buffer_impl<char const*>::entry> >::_M_insert_aux(__gnu_cxx::__normal_iterator<booster::aio::buffer_impl<char const*>::entry*, std::vector<booster::aio::buffer_impl<char const*>::entry, std::allocator<booster::aio::buffer_impl<char const*>::entry> > >, booster::aio::buffer_impl<char const*>::entry const&) (new_allocator.h:105) ==12769== by 0x4F93748: cppcms::impl::cgi::http::write_response(booster::callback<void ()(booster::system::error_code const&, unsigned long)> const&, unsigned long) (stl_vector.h:741) ==12769== by 0x4F93E6E: cppcms::impl::cgi::http::process_output_headers(void const*, unsigned long, booster::callback<void ()(booster::system::error_code const&, unsigned long)> const&) (http_api.cpp:484) ==12769== by 0x4F9406D: cppcms::impl::cgi::http::write_some(void const*, unsigned long, booster::system::error_code&) (http_api.cpp:335) ==12769== by 0x4EC98CA: cppcms::impl::cgi::connection::write(void const*, unsigned long, booster::system::error_code&) (cgi_api.cpp:550) ==12769== by 0x4EE105D: cppcms::http::details::output_device::write(char const*, int) (http_response.cpp:277) ==12769== by 0x4EE13E6: cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow(int) (http_response.cpp:131) ==12769== by 0x6754871: std::ostream::flush() (in /usr/lib/libstdc++.so.6.0.13) ==12769== by 0x4EDD85B: cppcms::http::response::write_http_headers(std::ostream&) (ostream:560) ==12769== by 0x4EDE33A: cppcms::http::response::out() (http_response.cpp:505) ==12769== by 0x4F0980F: cppcms::impl::file_server::main(std::string) (internal_file_server.cpp:448) ==12769== by 0x4EE4840: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:131) ==12769== Address 0xb9732c8 is at offset 8 from 0xb9732c0. Allocation context: ==12769== at 0x4C270CA: operator new(unsigned long) (vg_replace_malloc.c:261) ==12769== by 0x4ED1770: std::vector<booster::aio::buffer_impl<char const*>::entry, std::allocator<booster::aio::buffer_impl<char const*>::entry> >::_M_insert_aux(__gnu_cxx::__normal_iterator<booster::aio::buffer_impl<char const*>::entry*, std::vector<booster::aio::buffer_impl<char const*>::entry, std::allocator<booster::aio::buffer_impl<char const*>::entry> > >, booster::aio::buffer_impl<char const*>::entry const&) (new_allocator.h:89) ==12769== by 0x4F93748: cppcms::impl::cgi::http::write_response(booster::callback<void ()(booster::system::error_code const&, unsigned long)> const&, unsigned long) (stl_vector.h:741) ==12769== by 0x4F93E6E: cppcms::impl::cgi::http::process_output_headers(void const*, unsigned long, booster::callback<void ()(booster::system::error_code const&, unsigned long)> const&) (http_api.cpp:484) ==12769== by 0x4F9406D: cppcms::impl::cgi::http::write_some(void const*, unsigned long, booster::system::error_code&) (http_api.cpp:335) ==12769== by 0x4EC98CA: cppcms::impl::cgi::connection::write(void const*, unsigned long, booster::system::error_code&) (cgi_api.cpp:550) ==12769== by 0x4EE105D: cppcms::http::details::output_device::write(char const*, int) (http_response.cpp:277) ==12769== by 0x4EE13E6: cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow(int) (http_response.cpp:131) ==12769== by 0x6754871: std::ostream::flush() (in /usr/lib/libstdc++.so.6.0.13) ==12769== by 0x4EDD85B: cppcms::http::response::write_http_headers(std::ostream&) (ostream:560) ==12769== by 0x4EDE33A: cppcms::http::response::out() (http_response.cpp:505) ==12769== by 0x4F0980F: cppcms::impl::file_server::main(std::string) (internal_file_server.cpp:448) ==12769== Other segment start (thread 4) ==12769== at 0x4C2FF7F: pthread_mutex_unlock (drd_pthread_intercepts.c:631) ==12769== by 0x8492869: icu_44::TimeZone::createDefault() (in /usr/lib/libicui18n.so.44.1) ==12769== by 0x54CBB09: booster::locale::impl_icu::get_time_zone(std::string const&) (time_zone.cpp:216) ==12769== by 0x54AB9CB: booster::locale::impl_icu::calendar_impl::set_timezone(std::string const&) (date_time.cpp:240) ==12769== by 0x5482440: booster::locale::date_time::date_time() (date_time.cpp:142) ==12769== by 0x47FA44: helpers::Aircraft::Counter::Counter() (aircraft.hpp:18) ==12769== by 0x47FD00: helpers::Aircraft::Aircraft() (aircraft.hpp:39) ==12769== by 0x505929: data::Master::aircraft_by_id(unsigned int) const (master.cpp:82) ==12769== by 0x49A2CF: data::Master::current_aircraft() const (master.hpp:32) ==12769== by 0x56CB9B: default_skin::TrackerAirframeList::body() (airframe.tmpl:67) ==12769== by 0x554245: default_skin::Master::render() (master.tmpl:195) ==12769== by 0x4F03452: cppcms::views::pool::render(std::string const&, std::string const&, std::ostream&, cppcms::base_content&) (views_pool.cpp:115) ==12769== Other segment end (thread 4) ==12769== at 0x4C2F383: pthread_mutex_lock (drd_pthread_intercepts.c:578) ==12769== by 0x80C5540: umtx_lock_44 (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x80C69DF: ??? (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x80C6BC0: ??? (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x80C7382: ??? (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x80F7201: ??? (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x80F133C: ??? (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x80F1ACE: ??? (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x80F1DD6: ures_openDirect_44 (in /usr/lib/libicuuc.so.44.1) ==12769== by 0x8492093: ??? (in /usr/lib/libicui18n.so.44.1) ==12769== by 0x84924DB: icu_44::TimeZone::createSystemTimeZone(icu_44::UnicodeString const&) (in /usr/lib/libicui18n.so.44.1) ==12769== by 0x84935B5: icu_44::TimeZone::createTimeZone(icu_44::UnicodeString const&) (in /usr/lib/libicui18n.so.44.1) and this ==12769== Thread 7: ==12769== Conflicting store by thread 7 at 0x0b9b49a4 size 1 ==12769== at 0x4F5DC8D: cppcms::crypto::hmac::init() (crypto.cpp:482) ==12769== by 0x4F5F7AD: cppcms::crypto::hmac::hmac(std::string const&, cppcms::crypto::key const&) (crypto.cpp:461) ==12769== by 0x4F4664F: cppcms::sessions::impl::hmac_cipher::decrypt(std::string const&, std::string&) (hmac_encryptor.cpp:61) ==12769== by 0x4F4C3E8: cppcms::sessions::session_cookies::load(cppcms::session_interface&, std::string&, long&) (session_cookies.cpp:61) ==12769== by 0x4F50431: cppcms::session_interface::load() (session_interface.cpp:142) ==12769== by 0x4EE4819: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:130) ==12769== by 0x4EE6172: booster::function<void ()()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() (bind.hpp:385) ==12769== by 0x4EE7DD4: cppcms::impl::thread_pool::worker() (function.h:168) ==12769== by 0x54EB27C: booster_thread_func (function.h:168) ==12769== by 0x4C2EB60: vgDrd_thread_wrapper (drd_pthread_intercepts.c:272) ==12769== by 0x71CC8C9: start_thread (pthread_create.c:300) ==12769== by 0x6F3392C: clone (clone.S:112) ==12769== Address 0xb9b49a4 is at offset 52 from 0xb9b4970. Allocation context: ==12769== at 0x4C270CA: operator new(unsigned long) (vg_replace_malloc.c:261) ==12769== by 0x4F5DBCF: cppcms::crypto::hmac::init() (new_allocator.h:89) ==12769== by 0x4F5F7AD: cppcms::crypto::hmac::hmac(std::string const&, cppcms::crypto::key const&) (crypto.cpp:461) ==12769== by 0x4F4664F: cppcms::sessions::impl::hmac_cipher::decrypt(std::string const&, std::string&) (hmac_encryptor.cpp:61) ==12769== by 0x4F4C3E8: cppcms::sessions::session_cookies::load(cppcms::session_interface&, std::string&, long&) (session_cookies.cpp:61) ==12769== by 0x4F50431: cppcms::session_interface::load() (session_interface.cpp:142) ==12769== by 0x4EE4819: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:130) ==12769== by 0x4EE6172: booster::function<void ()()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() (bind.hpp:385) ==12769== by 0x4EE7DD4: cppcms::impl::thread_pool::worker() (function.h:168) ==12769== by 0x54EB27C: booster_thread_func (function.h:168) ==12769== by 0x4C2EB60: vgDrd_thread_wrapper (drd_pthread_intercepts.c:272) ==12769== by 0x71CC8C9: start_thread (pthread_create.c:300) ==12769== Other segment start (thread 5) ==12769== at 0x4C2FF7F: pthread_mutex_unlock (drd_pthread_intercepts.c:631) ==12769== by 0x4EE7DC2: cppcms::impl::thread_pool::worker() (thread.h:394) ==12769== by 0x54EB27C: booster_thread_func (function.h:168) ==12769== by 0x4C2EB60: vgDrd_thread_wrapper (drd_pthread_intercepts.c:272) ==12769== by 0x71CC8C9: start_thread (pthread_create.c:300) ==12769== by 0x6F3392C: clone (clone.S:112) ==12769== Other segment end (thread 5) ==12769== at 0x4C2FF7F: pthread_mutex_unlock (drd_pthread_intercepts.c:631) ==12769== by 0x672423E: std::locale::locale() (in /usr/lib/libstdc++.so.6.0.13) ==12769== by 0x4F095C6: cppcms::impl::file_server::main(std::string) (basic_ios.h:452) ==12769== by 0x4EE4840: cppcms::http::context::dispatch(booster::intrusive_ptr<cppcms::application>, std::string, bool) (http_context.cpp:131) ==12769== by 0x4EE6172: booster::function<void ()()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() (bind.hpp:385) ==12769== by 0x4EE7DD4: cppcms::impl::thread_pool::worker() (function.h:168) ==12769== by 0x54EB27C: booster_thread_func (function.h:168) ==12769== by 0x4C2EB60: vgDrd_thread_wrapper (drd_pthread_intercepts.c:272) ==12769== by 0x71CC8C9: start_thread (pthread_create.c:300) ==12769== by 0x6F3392C: clone (clone.S:112) |
From: <ele...@ex...> - 2012-08-01 11:09:18
|
Here is what the other thread is doing according to strace: writev(9, [{"1nwc\212[\26\376m4\355]is\333F\266\375,\376\212\36$\23S\317\1\320\335\330e\212"..., 16384}], 1) = 16384 This just keeps repeating over an over again. |
From: Artyom B. <art...@ya...> - 2012-08-01 11:47:32
|
I'm sorry but I can't serve as remote debugger or valgrind analyzer. I had given you some tips about debugging your application but I can not and I will not debug the application for you. So, open the debugger: gdb and take a look where exactly and why the loop exists... Shouldn't it be trivial? Regards, Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ ----- Original Message ----- > From: "ele...@ex..." <ele...@ex...> > To: Artyom Beilis <art...@ya...>; cpp...@li... > Cc: > Sent: Wednesday, August 1, 2012 2:09 PM > Subject: Re: [Cppcms-users] URGENT: strange bug ocurring > > Here is what the other thread is doing according to strace: > > > > writev(9, > [{"1nwc\212[\26\376m4\355]is\333F\266\375,\376\212\36$\23S\317\1\320\335\330e\212"..., > 16384}], 1) = 16384 > > This just keeps repeating over an over again. > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
From: <ele...@ex...> - 2012-08-01 12:31:32
|
I've done that Artyom, When I run in GDB and attach to the process I get this: 0x00007f8ae979d817 in __libc_writev (fd=9, vector=<value optimized out>, count=1) at ../sysdeps/unix/sysv/linux/writev.c:56 56 ../sysdeps/unix/sysv/linux/writev.c: No such file or directory. in ../sysdeps/unix/sysv/linux/writev.c Unfortunately I have no idea what to make out of this. |
From: <ele...@ex...> - 2012-08-01 12:35:36
|
Sorry forgot to attach GDB trace: #0 0x00007f8933c0e817 in __libc_writev (fd=9, vector=<value optimized out>, count=1) at ../sysdeps/unix/sysv/linux/writev.c:56 #1 0x00007f8935655707 in booster::aio::stream_socket::writev (this=0xe7e9a0, b=<value optimized out>) at /home/sysadmin/cppcms/booster/lib/aio/src/stream_socket.cpp:173 #2 0x00007f8935655769 in booster::aio::stream_socket::write_some (this=0x9, buffer=..., e=...) at /home/sysadmin/cppcms/booster/lib/aio/src/stream_socket.cpp:94 #3 0x00007f8935c7fab3 in cppcms::impl::cgi::http::write_some_to_socket(booster::aio::const_buffer const&, booster::system::error_code&) () from /usr/local/lib/libcppcms.so.1 #4 0x00007f8935c8302a in cppcms::impl::cgi::http::write_some(void const*, unsigned long, booster::system::error_code&) () from /usr/local/lib/libcppcms.so.1 #5 0x00007f8935bb88cb in cppcms::impl::cgi::connection::write (this=0xe7e8d0, data=<value optimized out>, n=16384, e=...) at /home/sysadmin/cppcms/src/cgi_api.cpp:550 #6 0x00007f8935bd005e in cppcms::http::details::output_device::write (this=0xe81ea8, data=<value optimized out>, n=1) at /home/sysadmin/cppcms/src/http_response.cpp:277 #7 0x00007f8935bd03e7 in cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow (this=0x9, c=99) at /home/sysadmin/cppcms/src/http_response.cpp:131 #8 0x00007f89343e7215 in std::basic_streambuf<char, std::char_traits<char> >::xsputn(char const*, long) () from /usr/lib/libstdc++.so.6 #9 0x00007f8935bcd58a in std::basic_streambuf<char, std::char_traits<char> >::sputn (this=0xe7c6f0) at /usr/include/c++/4.4/streambuf:427 #10 cppcms::http::details::gzip_buf::close (this=0xe7c6f0) at /home/sysadmin/cppcms/src/http_response.cpp:201 #11 cppcms::http::response::finalize (this=0xe7c6f0) at /home/sysadmin/cppcms/src/http_response.cpp:380 #12 0x00007f8935bd340d in cppcms::http::context::complete_response (this=0xe78a90) at /home/sysadmin/cppcms/src/http_context.cpp:117 #13 0x00007f8935bd38f1 in cppcms::http::context::dispatch (app=DWARF-2 expression error: DW_OP_reg operations must be used either alone or in conjuction with DW_OP_piece. ) at /home/sysadmin/cppcms/src/http_context.cpp:156 #14 0x00007f8935bd5173 in operator()<void (*)(booster::intrusive_ptr<cppcms::application>, std::basic_string<char, std::char_traits<char>, std::allocator<char> >, bool), cppcms_boost::_bi::list0> (this=0xe9b2d0) at /home/sysadmin/cppcms/cppcms_boost/cppcms_boost/bind/bind.hpp:385 #15 cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > >::operator() (this=0xe9b2d0) at /home/sysadmin/cppcms/cppcms_boost/cppcms_boost/bind/bind_template.hpp:20 #16 booster::function<void ()()>::callable_impl<void, cppcms_boost::_bi::bind_t<void, void (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >, cppcms_boost::_bi::value<std::string>, cppcms_boost::_bi::value<bool> > > >::call() (this=0xe9b2d0) at /home/sysadmin/cppcms/booster/booster/function.h:168 #17 0x00007f8935bd6dd5 in booster::function<void ()()>::operator()() const (this=0xe7a6a0) at /home/sysadmin/cppcms/booster/booster/function.h:168 #18 cppcms::impl::thread_pool::worker (this=0xe7a6a0) at /home/sysadmin/cppcms/src/thread_pool.cpp:120 #19 0x00007f89356cf27d in booster::function<void ()()>::operator()() const (p=<value optimized out>) at /home/sysadmin/cppcms/booster/./booster/function.h:168 #20 booster_thread_func (p=<value optimized out>) at /home/sysadmin/cppcms/booster/lib/thread/src/pthread.cpp:46 #21 0x00007f89339308ca in start_thread (arg=<value optimized out>) at pthread_create.c:300 #22 0x00007f8933c1592d in clone () at ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 #23 0x0000000000000000 in ?? () Whether this gives you an idea about what's going on i don't know |
From: Artyom B. <art...@ya...> - 2012-08-01 13:08:07
|
Ok, I reproduced a problem. I'll update you when I'll fix it. It seems to be a bug in some redesigned buffering/gzip code. Also why do you use the development version in the production environment? Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ ----- Original Message ----- > From: "ele...@ex..." <ele...@ex...> > To: cpp...@li... > Cc: Artyom Beilis <art...@ya...> > Sent: Wednesday, August 1, 2012 3:35 PM > Subject: Re: [Cppcms-users] URGENT: strange bug ocurring > > Sorry forgot to attach GDB trace: > > > #0 0x00007f8933c0e817 in __libc_writev (fd=9, vector=<value optimized > out>, count=1) at ../sysdeps/unix/sysv/linux/writev.c:56 > #1 0x00007f8935655707 in booster::aio::stream_socket::writev > (this=0xe7e9a0, b=<value optimized out>) > at /home/sysadmin/cppcms/booster/lib/aio/src/stream_socket.cpp:173 > #2 0x00007f8935655769 in booster::aio::stream_socket::write_some > (this=0x9, buffer=..., e=...) > at /home/sysadmin/cppcms/booster/lib/aio/src/stream_socket.cpp:94 > #3 0x00007f8935c7fab3 in > cppcms::impl::cgi::http::write_some_to_socket(booster::aio::const_buffer > const&, booster::system::error_code&) () > from /usr/local/lib/libcppcms.so.1 > #4 0x00007f8935c8302a in cppcms::impl::cgi::http::write_some(void const*, > unsigned long, booster::system::error_code&) () > from /usr/local/lib/libcppcms.so.1 > #5 0x00007f8935bb88cb in cppcms::impl::cgi::connection::write > (this=0xe7e8d0, data=<value optimized out>, n=16384, e=...) > at /home/sysadmin/cppcms/src/cgi_api.cpp:550 > #6 0x00007f8935bd005e in cppcms::http::details::output_device::write > (this=0xe81ea8, data=<value optimized out>, n=1) > at /home/sysadmin/cppcms/src/http_response.cpp:277 > #7 0x00007f8935bd03e7 in > cppcms::http::details::basic_obuf<cppcms::http::details::output_device>::overflow > (this=0x9, c=99) > at /home/sysadmin/cppcms/src/http_response.cpp:131 > #8 0x00007f89343e7215 in std::basic_streambuf<char, > std::char_traits<char> >::xsputn(char const*, long) () from > /usr/lib/libstdc++.so.6 > #9 0x00007f8935bcd58a in std::basic_streambuf<char, > std::char_traits<char> >::sputn (this=0xe7c6f0) at > /usr/include/c++/4.4/streambuf:427 > #10 cppcms::http::details::gzip_buf::close (this=0xe7c6f0) at > /home/sysadmin/cppcms/src/http_response.cpp:201 > #11 cppcms::http::response::finalize (this=0xe7c6f0) at > /home/sysadmin/cppcms/src/http_response.cpp:380 > #12 0x00007f8935bd340d in cppcms::http::context::complete_response > (this=0xe78a90) at /home/sysadmin/cppcms/src/http_context.cpp:117 > #13 0x00007f8935bd38f1 in cppcms::http::context::dispatch (app=DWARF-2 > expression error: DW_OP_reg operations must be used either alone or in > conjuction with DW_OP_piece. > ) at /home/sysadmin/cppcms/src/http_context.cpp:156 > #14 0x00007f8935bd5173 in operator()<void > (*)(booster::intrusive_ptr<cppcms::application>, > std::basic_string<char, > std::char_traits<char>, std::allocator<char> >, bool), > cppcms_boost::_bi::list0> (this=0xe9b2d0) at > /home/sysadmin/cppcms/cppcms_boost/cppcms_boost/bind/bind.hpp:385 > #15 cppcms_boost::_bi::bind_t<void, void > (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), > cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >> , cppcms_boost::_bi::value<std::string>, > cppcms_boost::_bi::value<bool> > >> ::operator() (this=0xe9b2d0) > at > /home/sysadmin/cppcms/cppcms_boost/cppcms_boost/bind/bind_template.hpp:20 > #16 booster::function<void ()()>::callable_impl<void, > cppcms_boost::_bi::bind_t<void, void > (*)(booster::intrusive_ptr<cppcms::application>, std::string, bool), > cppcms_boost::_bi::list3<cppcms_boost::_bi::value<booster::intrusive_ptr<cppcms::application> >> , cppcms_boost::_bi::value<std::string>, > cppcms_boost::_bi::value<bool> > >> >::call() (this=0xe9b2d0) at > /home/sysadmin/cppcms/booster/booster/function.h:168 > #17 0x00007f8935bd6dd5 in booster::function<void ()()>::operator()() const > (this=0xe7a6a0) at /home/sysadmin/cppcms/booster/booster/function.h:168 > #18 cppcms::impl::thread_pool::worker (this=0xe7a6a0) at > /home/sysadmin/cppcms/src/thread_pool.cpp:120 > #19 0x00007f89356cf27d in booster::function<void ()()>::operator()() const > (p=<value optimized out>) > at /home/sysadmin/cppcms/booster/./booster/function.h:168 > #20 booster_thread_func (p=<value optimized out>) at > /home/sysadmin/cppcms/booster/lib/thread/src/pthread.cpp:46 > #21 0x00007f89339308ca in start_thread (arg=<value optimized out>) at > pthread_create.c:300 > #22 0x00007f8933c1592d in clone () at > ../sysdeps/unix/sysv/linux/x86_64/clone.S:112 > #23 0x0000000000000000 in ?? () > > Whether this gives you an idea about what's going on i don't know > > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
From: <ele...@ex...> - 2012-08-01 13:27:23
|
> Ok, I reproduced a problem. > > I'll update you when I'll fix it. > > It seems to be a bug in some redesigned buffering/gzip code. > > Also why do you use the development version in the production environment? > Excellent. I was using the development version of CPPCMS on FreeBSD because of the new backtrace you've added April(?) and ive stuck to it because I was running it for months without a problem. (and no im not crazy about updating all the time and running bleeding edge stuff!) I think there was another reason why I was using the devel. Well perhaps I should have switched back to the release. Petr |
From: Artyom B. <art...@ya...> - 2012-08-01 13:32:53
|
Take a version from the trunk. It is fixed in chageset 2197. There was a bug in gzip compressor that caused the infinite loop. Thanks for using development version :-) It could take some time till somebody would discover this bug. Artyom Beilis -------------- CppCMS - C++ Web Framework: http://cppcms.com/ CppDB - C++ SQL Connectivity: http://cppcms.com/sql/cppdb/ ----- Original Message ----- > From: "ele...@ex..." <ele...@ex...> > To: Artyom Beilis <art...@ya...>; cpp...@li... > Cc: > Sent: Wednesday, August 1, 2012 4:27 PM > Subject: Re: [Cppcms-users] URGENT: strange bug ocurring > >> Ok, I reproduced a problem. >> >> I'll update you when I'll fix it. >> >> It seems to be a bug in some redesigned buffering/gzip code. >> >> Also why do you use the development version in the production environment? >> > > Excellent. > > I was using the development version of CPPCMS on FreeBSD because of the > new backtrace you've added April(?) and ive stuck to it because I was > running it for months without a problem. (and no im not crazy about > updating all the time and running bleeding edge stuff!) > > I think there was another reason why I was using the devel. > > Well perhaps I should have switched back to the release. > > Petr > > > ------------------------------------------------------------------------------ > Live Security Virtual Conference > Exclusive live event will cover all the ways today's security and > threat landscape has changed and how IT managers can respond. Discussions > will include endpoint security, mobile security and the latest in malware > threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/ > _______________________________________________ > Cppcms-users mailing list > Cpp...@li... > https://lists.sourceforge.net/lists/listinfo/cppcms-users > |
From: <ele...@ex...> - 2012-08-01 14:23:07
|
> Take a version from the trunk. > > It is fixed in chageset 2197. > > There was a bug in gzip compressor that caused the infinite loop. > > Thanks for using development version :-) > > It could take some time till somebody would discover this bug. Confirmed fix working. Muchas gracias (sorry for all the mails) |