Этот баннер — требование Роскомнадзора для исполнения 152 ФЗ.
«На сайте осуществляется обработка файлов cookie, необходимых для работы сайта, а также для анализа использования сайта и улучшения предоставляемых сервисов с использованием метрической программы Яндекс.Метрика. Продолжая использовать сайт, вы даёте согласие с использованием данных технологий».
Политика конфиденциальности
|
|
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Добрый день, коллеги! Опять ошибка, теперь в многопоточности. Вроде вчера все отладил и сегодня опять валится, см. Рисунок. Кроме этой ошибки назовите если вам не трудно, где могут возникнуть проблемы. На самом деле функция getDataCPU намного больше, вы там видите как снимаются данные 2 раза. Это минимум для расчета процента загрузки процессора. Код: 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. 171. 172. 173. 174. 175. 176. 177. 178. 179. 180. 181. 182. 183. 184. 185. 186. 187. 188. 189. 190. 191. 192. 193. 194. 195. 196. 197. 198. 199. 200. 201. 202. 203. 204. 205. 206. 207. 208. 209. 210. 211. 212. 213. 214. 215. 216. 217. 218. 219. 220. 221. 222. 223. 224. 225. 226. 227. 228. 229. 230. 231. 232. 233. 234. 235. 236. 237. 238. 239. 240. 241. 242. 243. 244. 245. 246. 247. 248. 249. 250. 251. 252. 253. 254. 255. 256. 257. 258. 259. 260. 261. 262. 263. 264. 265. 266. 267. 268. 269. 270. 271. 272. 273. 274. 275. 276. 277. 278. 279. 280. 281. 282. 283. 284. 285. 286. 287. 288. 289. 290. 291. 292. 293. 294. 295. 296. 297. 298. 299. 300. Этот фрагмент кода запускается много раз. 2 раза он выполняется нормально и ломается на 3-м шаге в указанном месте. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:49 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Сори, не успел скрин ошибки выложить. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 13:50 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. hres глобальная переменная? Если так, то ее все потоки одновременно используют. Чтобы она была глобальной только на уровне потока надо так объявлять Код: plaintext 1. тогда каждый поток свой hres будет использовать. С другими глобальными точно так же. Посмотрел код, непонятно зачем hres глобальная. Оно точно надо? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:06 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Dima T Код: plaintext 1. 2. 3. 4. hres глобальная переменная? Если так, то ее все потоки одновременно используют. Чтобы она была глобальной только на уровне потока надо так объявлять Код: plaintext 1. тогда каждый поток свой hres будет использовать. С другими глобальными точно так же. Посмотрел код, непонятно зачем hres глобальная. Оно точно надо? Спасибо! Да, глобальная. b = initializeCOM(); Там используется hres. Инициализация СОМ происходит один для всех потоков. Из других глобальных переменных есть только cpu_memory_vec(в примере его нет). Этот вектор заполняется всеми потоками, а потом происходит заливка в СУБД. Скрин ошибки привожу, сейчас свалилась только на 6-м шаге поэтому так долго. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:21 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Текст ошибки. Первый этап обработки исключения в "0x77149c17" в "connectOracle.exe": 0xC0000005: Нарушение прав доступа при чтении "0xdcbfd870". Поток 'Поток Win32' (0x2680) завершился с кодом 1 (0x1). STATUS_STACK_BUFFER_OVERRUN encountered ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:25 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
CoInitializeEx() надо в каждом потоке вызывать. http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms695279(v=vs.85).aspx Remarks CoInitializeEx must be called at least once, and is usually called only once, for each thread that uses the COM library. Вобщем переделывай чтобы в каждом потоке вызывалось твоя initializeCOM() ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:41 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Dima TCoInitializeEx() надо в каждом потоке вызывать. http://msdn.microsoft.com/ru-ru/library/windows/desktop/ms695279(v=vs.85).aspx Remarks CoInitializeEx must be called at least once, and is usually called only once, for each thread that uses the COM library. Вобщем переделывай чтобы в каждом потоке вызывалось твоя initializeCOM() Пробовал уже вчера, нельзя так. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:43 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Dima T, Стоп! Беру свои слова обратно. Ваши слова хоть с опозданием, но подействовали отрезвляюще. )) Код: plaintext 1. MULTITHREADED о чем то говорит. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:49 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
vadipokПробовал уже вчера, нельзя так. Если я хэлп правильно понимаю - можно и нужно. Пробовал с глобальной hres? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 14:54 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Dima TvadipokПробовал уже вчера, нельзя так. Если я хэлп правильно понимаю - можно и нужно. Пробовал с глобальной hres? Вот так пробовал, думаю по началу понятно будет, просто закаментил. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:04 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Почему COINIT_APARTMENTTHREADED ? Попробуй COINIT_MULTITHREADED http://msdn.microsoft.com/en-us/library/windows/desktop/ff485844(v=vs.85).aspx You must set exactly one of these flags. Generally, a thread that creates a window should use the COINIT_APARTMENTTHREADED flag, and other threads should use COINIT_MULTITHREADED. PS Гугл переводчик повеселил )) https://translate.google.ru/#en/ru/Apartment threaded. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:14 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Dima T Код: plaintext 1. Почему COINIT_APARTMENTTHREADED ? Попробуй COINIT_MULTITHREADED http://msdn.microsoft.com/en-us/library/windows/desktop/ff485844(v=vs.85).aspx You must set exactly one of these flags. Generally, a thread that creates a window should use the COINIT_APARTMENTTHREADED flag, and other threads should use COINIT_MULTITHREADED. PS Гугл переводчик повеселил )) https://translate.google.ru/#en/ru/Apartment threaded. )) Это я уже экспериментировал, на самом деле там было COINIT_MULTITHREADED. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 10.10.2014, 15:20 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Даже так ошибка Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:35 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Читаю свой текст и мне кажется, что я не правильно объяснил суть проблемы. Проблема в том, что в первый раз код написанный с низу выполняется на ура, т. е. 1-й запуск Хорошо работает для всех ip адресов(их порядка 300). Потом на любом шаге, начиная с трех может вылезти ошибка. Код: 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. ................. } ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:41 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Очень нужна помощь, коллеги. Сейчас пробовал следующее, ошибка все равно вылезает. Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 13:47 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
vadipokЧитаю свой текст и мне кажется, что я не правильно объяснил суть проблемы. Проблема в том, что в первый раз код написанный с низу выполняется на ура, т. е. 1-й запуск Хорошо работает для всех ip адресов(их порядка 300). Потом на любом шаге, начиная с трех может вылезти ошибка... Ты в очередной раз доказал что телепатов тут нет Для начала попробуй вынеси за while() инициализацию COMа Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 14:04 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Да я просто не знаю за что зацепится. Хотел закончить все в эту пятницу, да видно не судьба. )) Когда человек тонет, то хватается за любую щепку. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 14:10 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Ты бы сделал пример своего кода, так чтобы можно было задать 2-3 IP и запустить. Не факт что проблема именно в тех кусках которые ты сюда выкладываешь. PS Только лишнего не надо. Консольная прога, в main() запуск потоков, в потоках опрос и printf() результата. PPS только сначала убедись что пример у тебя глючит :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 14:18 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Вот эта конструкция нездоровая vadipok Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Убери while (t<120) в поток, пусть он там крутится в каждом потоке, если надо - синхронизируй потоки. А так получается куча накладных расходов: сначала поток создай, внутри объект получи, один раз им попользовался, все закрыл и все сначала. Если к объекту надо много раз обратиться - держи его до тех пор пока он нужен. Делай рабочий пример, подопиливаем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 14:56 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Код: 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. Старнности какие-то, почему то вектор ipAddress_vec не очищается после ошибки. А прежняя ошибка, тьфу-тьфу ушла. ) Модератор: vadipok, а вот вместо картинки текст вставить из консоли, да ещё оформив его соответствующим образом, нельзя было? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 15:17 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Dima TВот эта конструкция нездоровая vadipok Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. Убери while (t<120) в поток, пусть он там крутится в каждом потоке, если надо - синхронизируй потоки. А так получается куча накладных расходов: сначала поток создай, внутри объект получи, один раз им попользовался, все закрыл и все сначала. Если к объекту надо много раз обратиться - держи его до тех пор пока он нужен. Делай рабочий пример, подопиливаем. Нельзя его убирать, по задумке каждую минуту будет выполнятся сканирование всех компов. Как я это по другому реализую как не циклы? В конце кода вы увидите Код: plaintext 1. 2. Пока такой простой способ, завязанный на стандартный шедуллинг Windows. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 15:24 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
Модератору: Извиняюсь, а как? Это же вывод в командную строку, сейчас все перелопатил там. Ctrl+C, Ctrl+V; Shift+Insert, Ctrl+Insert перепробывал не помогло. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 15:32 |
|
||
|
проблемы с WMI
|
|||
|---|---|---|---|
|
#18+
vadipokИзвиняюсь, а как?в левом верхнем углу консольного окна есть иконка - это системное меню, или правый клик мышью в области окна консоли. Пункт меню "Пометить", потом пункт меню "Копировать <ВВОД>". Темнота ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 13.10.2014, 16:06 |
|
||
|
|

start [/forum/topic.php?fid=57&msg=38773166&tid=2019274]: |
0ms |
get settings: |
10ms |
get forum list: |
13ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
41ms |
get topic data: |
11ms |
get forum data: |
2ms |
get page messages: |
53ms |
get tp. blocked users: |
1ms |
| others: | 295ms |
| total: | 434ms |

| 0 / 0 |
