<?xml version="1.0" encoding="UTF-8"?>
<!-- Generated on Sun, 27 May 2012 09:26:05 -0700 -->
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <atom:link href="http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/feed/" rel="self" type="application/rss+xml" />
    <title>Intel Software Network Комментарии фид</title>
    <link>http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors</link>
    <description></description>
    <language>ru-ru</language>
    <item>
      <title>От Vladimir Tsymbal (Intel)</title>
      <description><![CDATA[ Прошу извинить меня за ошибку в ссылке. На самом деле сайт утилиты Pin находится по адресу www.pintool.org ]]></description>
      <link>http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-29858</link>
      <pubDate>Wed, 19 Aug 2009 08:39:14 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-29858</guid>
    </item>
    <item>
      <title>От Timur Balbot</title>
      <description><![CDATA[ Приветствую,

Недавно обнаружил у себя в коде проблему типа "Uninitialized Partial Memory Access" с помощью Intel Parallel Studio. С виду всё было корректно и ошибки такого рода быть не должно было.

У меня была небольшая структура.

typedef struct sample_info_s {
	REFERENCE_TIME	PTS[2];
	REFERENCE_TIME	MediaTime[2];
	BOOL			bPreroll;
	BOOL			bValidPTS;
	BOOL			bValidMediaType;
} sample_info_t;

Каждое поле я заполнял в ручную:
sample_info_t si;
si.PTS[0] = m_rtStart;
si.PTS[1] = m_rtStop;
si.MediaTime[0] = m_mtStart;
si.MediaTime[1] = m_mtStop;
si.bPreroll = bPreroll;
si.bValidPTS = 1;
si.bValidMediaType = 1;

Затем указатель на эту структуру данных, а также её размер (т.е. sizeof(sample_info_t)) передавался в другой модуль, который понятия не имел, что за данные ему передавались.

В этом модуле выделялся блок памяти для временного хранения переданных данных, т.е. блок размером sizeof(sample_info_t). Куда я их и копировал с помощью memcpy().

Inspector сразу же меня предупредил, что при вызове memcpy() происходит Uninitialized Partial Memory Access.
К счастью, долго голову ломать не пришлось. Конечно, он прав!
Компилятор Microsoft C++ выравнил поля структуры, и размер стурктуры sizeof(sample_info_t) не равен размеру всех полей этой структуры. Поэтому когда memcpy копирует данные, ей приходится читать неинициализированные байты.

Конечно, это лечится следующим образом.
sample_info_t si;
memset(&si, 0, sizeof(si));
далее инициализируем поля как раньше.

Вуаля, больше нет проблем! А вообще, Inspector, входящий в Intel Parallel Studio, отличная и удобная утилита. Респект! ]]></description>
      <link>http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-44030</link>
      <pubDate>Fri, 28 May 2010 20:48:59 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-44030</guid>
    </item>
    <item>
      <title>От Vladimir Tsymbal (Intel)</title>
      <description><![CDATA[ Спасибо Вам за лестный отзыв. Кстати, мы рады бы были послушать и о недостатках Инспектора с Вашей точки зрения. ]]></description>
      <link>http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-44061</link>
      <pubDate>Sun, 30 May 2010 01:04:13 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-44061</guid>
    </item>
    <item>
      <title>От Кирилл</title>
      <description><![CDATA[ Доброе время суток
Попробовал использовать инспектор на тестовых приложениях, хорошо видно, где память выделяется, где освобождается. Все ok, запускаю уже на боевой код под инспектором и даже не смог дождаться, когда оно прогрузится. Процессор 2 ядра загружен на 100%. 
И возник вопрос, а можно ли добавить вычислительной мощности за счет других компьютеров в сети?

К сожалению, нет возможность поставить более мощную машину.

 ]]></description>
      <link>http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-73016</link>
      <pubDate>Tue, 17 Apr 2012 23:21:04 -0700</pubDate>
      <guid isPermaLink="true">http://software.intel.com/ru-ru/articles/intel-parallel-inspector-finding-memory-errors/#comment-73016</guid>
    </item>
  </channel></rss>
