Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
Поиск утечки с помощью vld
|
|||
|---|---|---|---|
|
#18+
Программа-сервер, многопоточная, не могу понять - где\в чем утечка: включаю в код #include "vld.h" и получаю в консоли сотни "утечек" вида: ---------- Block 6127 at 0x00CEDF30: 76 bytes ---------- Call Stack: c:\program files\boost\boost_1_51\boost\asio\detail\impl\strand_service.ipp (84): SkyRiverServerMT.exe!boost::asio::detail::strand_service::construct + 0x7 bytes c:\program files\boost\boost_1_51\boost\asio\strand.hpp (97): SkyRiverServerMT.exe!boost::asio::io_service::strand::strand d:\users\android\skyriverserver\skyriverservermt\logisticserver.cpp (140): SkyRiverServerMT.exe!connection::connection + 0x6F bytes d:\users\android\skyriverserver\skyriverservermt\logisticserver.cpp (306): SkyRiverServerMT.exe!server3::start_accept + 0x35 bytes d:\users\android\skyriverserver\skyriverservermt\logisticserver.cpp (321): SkyRiverServerMT.exe!server3::handle_accept c:\program files\boost\boost_1_51\boost\bind\mem_fn_template.hpp (165): SkyRiverServerMT.exe!boost::_mfi::mf1<void,server3,boost::system::error_code const &>::operator() + 0x10 bytes c:\program files\boost\boost_1_51\boost\bind\bind.hpp (314): SkyRiverServerMT.exe!boost::_bi::list2<boost::_bi::value<server3 *>,boost::arg<1> >::operator()<boost::_mfi::mf1<void,server3,boost::system::error_code const &>,boost::_bi::list1<boost::system::error_code const &> > c:\program files\boost\boost_1_51\boost\bind\bind_template.hpp (48): SkyRiverServerMT.exe!boost::_bi::bind_t<void,boost::_mfi::mf1<void,server3,boost::system::error_code const &>,boost::_bi::list2<boost::_bi::value<server3 *>,boost::arg<1> > >::operator()<boost::system::error_code> c:\program files\boost\boost_1_51\boost\asio\detail\bind_handler.hpp (47): SkyRiverServerMT.exe!boost::asio::detail::binder1<boost::_bi::bind_t<void,boost::_mfi::mf1<void,server3,boost::system::error_code const &>,boost::_bi::list2<boost::_bi::value<server3 *>,boost::arg<1> > >,boost::system::error_code>::operator() c:\program files\boost\boost_1_51\boost\asio\handler_invoke_hook.hpp (65): SkyRiverServerMT.exe!boost::asio::asio_handler_invoke<boost::asio::detail::binder1<boost::_bi::bind_t<void,boost::_mfi::mf1<void,server3,boost::system::error_code const &>,boost::_bi::list2<boost::_bi::value<server3 *>,boost::arg<1> > >,boost::system::error_code> > c:\program files\boost\boost_1_51\boost\asio\detail\handler_invoke_helpers.hpp (39): SkyRiverServerMT.exe!boost_asio_handler_invoke_helpers::invoke<boost::asio::detail::binder1<boost::_bi::bind_t<void,boost::_mfi::mf1<void,server3,boost::system::error_code const &>,boost::_bi::list2<boost::_bi::value<server3 *>,boost::arg<1> > >,boost::system::error_code>,boo + 0x30 bytes c:\program files\boost\boost_1_51\boost\asio\detail\win_iocp_socket_accept_op.hpp (142): SkyRiverServerMT.exe!boost::asio::detail::win_iocp_socket_accept_op<boost::asio::basic_socket<boost::asio::ip::tcp,boost::asio::stream_socket_service<boost::asio::ip::tcp> >,boost::asio::ip::tcp,boost::_bi::bind_t<void,boost::_mfi::mf1<void,server3,boost::system::error_code c + 0x13 bytes c:\program files\boost\boost_1_51\boost\asio\detail\win_iocp_operation.hpp (45): SkyRiverServerMT.exe!boost::asio::detail::win_iocp_operation::complete + 0x1A bytes c:\program files\boost\boost_1_51\boost\asio\detail\impl\win_iocp_io_service.ipp (397): SkyRiverServerMT.exe!boost::asio::detail::win_iocp_io_service::do_one c:\program files\boost\boost_1_51\boost\asio\detail\impl\win_iocp_io_service.ipp (159): SkyRiverServerMT.exe!boost::asio::detail::win_iocp_io_service::run + 0xE bytes c:\program files\boost\boost_1_51\boost\asio\impl\io_service.ipp (59): SkyRiverServerMT.exe!boost::asio::io_service::run + 0xF bytes c:\program files\boost\boost_1_51\boost\bind\mem_fn_template.hpp (49): SkyRiverServerMT.exe!boost::_mfi::mf0<unsigned int,boost::asio::io_service>::operator() + 0xC bytes c:\program files\boost\boost_1_51\boost\bind\bind.hpp (244): SkyRiverServerMT.exe!boost::_bi::list1<boost::_bi::value<boost::asio::io_service *> >::operator()<unsigned int,boost::_mfi::mf0<unsigned int,boost::asio::io_service>,boost::_bi::list0> c:\program files\boost\boost_1_51\boost\bind\bind_template.hpp (21): SkyRiverServerMT.exe!boost::_bi::bind_t<unsigned int,boost::_mfi::mf0<unsigned int,boost::asio::io_service>,boost::_bi::list1<boost::_bi::value<boost::asio::io_service *> > >::operator() c:\program files\boost\boost_1_51\boost\thread\detail\thread.hpp (75): SkyRiverServerMT.exe!boost::detail::thread_data<boost::_bi::bind_t<unsigned int,boost::_mfi::mf0<unsigned int,boost::asio::io_service>,boost::_bi::list1<boost::_bi::value<boost::asio::io_service *> > > >::run e:\installer\boost\libs\thread\src\win32\thread.cpp (191): SkyRiverServerMT.exe!boost::`anonymous namespace'::thread_start_function f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c (348): SkyRiverServerMT.exe!_callthreadstartex + 0xF bytes f:\dd\vctools\crt_bld\self_x86\crt\src\threadex.c (331): SkyRiverServerMT.exe!_threadstartex 0x7C80B729 (File and line number not available): kernel32.dll!GetModuleFileNameA + 0x1BA bytes Единственное что "моё" это строки d:\users\android\skyriverserver\skyriverservermt\logisticserver.cpp (140): SkyRiverServerMT.exe!connection::connection + 0x6F bytes d:\users\android\skyriverserver\skyriverservermt\logisticserver.cpp (306): SkyRiverServerMT.exe!server3::start_accept + 0x35 bytes d:\users\android\skyriverserver\skyriverservermt\logisticserver.cpp (321): SkyRiverServerMT.exe!server3::handle_accept где 140 это конструктор connection 306 это строка new_connection_.reset(new connection(io_service_)); 321 это кавычка, закрывающая handle_accept... которые вообщем то взяты из примера библиотеки буст... весь текст: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25. 26. 27. 28. 29. 30. 31. 32. 33. 34. 35. 36. 37. 38. 39. 40. 41. 42. 43. 44. 45. 46. 47. 48. 49. 50. 51. 52. 53. 54. 55. 56. 57. 58. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. 81. 82. 83. 84. 85. 86. 87. 88. 89. 90. 91. 92. 93. 94. 95. 96. 97. 98. 99. 100. 101. 102. 103. 104. 105. 106. 107. 108. 109. 110. 111. 112. 113. 114. 115. 116. 117. 118. 119. 120. 121. 122. 123. 124. 125. 126. 127. 128. 129. 130. 131. 132. 133. 134. 135. 136. 137. 138. 139. 140. 141. 142. 143. 144. 145. 146. 147. 148. 149. 150. 151. 152. 153. 154. 155. 156. 157. 158. 159. 160. 161. 162. 163. 164. 165. 166. 167. 168. 169. 170. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 22:03 |
|
||
|
Поиск утечки с помощью vld
|
|||
|---|---|---|---|
|
#18+
The_REALвесь текст: Какой же это "весь текст", когда тут как минимум нет текста main() и класса CTerminalHandlerSelector? Из того что приведено, видно две потенциальные проблемы. 1) delete pTerminalHandler_ не всегда вызывается. Например при ошибке в connection::handle_read Используйте деструктор для гарантированного удаления ресурсов класса. 2) Судя по названию CTerminalHandlerSelector::SelectTerminal объект pTerminalHandler_ не создается а выбирается из списка готовых. Если это так то удалять его вообще не нужно - будет обращение к удаленному объекту, что тоже в принципе утечка памяти. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 18.08.2014, 23:54 |
|
||
|
Поиск утечки с помощью vld
|
|||
|---|---|---|---|
|
#18+
Меня больше интересует, почему vld ругается на утечку именно в этом месте? Anatoly Moskovsky, спасибо что глянули код - дело в том, да там есть ньюансы, но... 1) да, вписывал уничтожение в деструктор connection - проблему не решило 2) ну, там создается объект, просто класса-наследника, одного из нескольких. дело в том, что остальной код - если заменить выделенный фрагмент на однопоточную реализацию без пула (так же есть в примерах boost asio) работает без утечек (ну может очень редких, при ошибке в connection::handle_read как вы сказали), в отличии от этого - тут память "уходит" мегабайтами в час :( ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 19.08.2014, 11:08 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38723220&tid=2019338]: |
0ms |
get settings: |
10ms |
get forum list: |
12ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
92ms |
get topic data: |
9ms |
get forum data: |
2ms |
get page messages: |
42ms |
get tp. blocked users: |
1ms |
| others: | 12ms |
| total: | 188ms |

| 0 / 0 |
