<?xml version="1.0" encoding="utf-8"?>
<feed xmlns="http://www.w3.org/2005/Atom">
	<title type="html"><![CDATA[Форум Guardant &mdash; Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
	<link rel="self" href="https://forum.guardant.ru/feed/atom/topic/872" />
	<updated>2020-01-30T06:18:51Z</updated>
	<generator>PunBB</generator>
	<id>https://forum.guardant.ru/topic/872/</id>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4285/#p4285" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>Coxwain пишет:</cite><blockquote><p>Выяснил причину падения описанного в первом посте, она заключается в утечке памяти при вызове функции GrdCreateHandle(), когда в качестве первого параметра передается NULL. По факту функция GrdCloseHandle() не отчищает выделенную память защищенного контейнера. Ошибку удалось устранить передавая в качестве первого параметра в функцию GrdCreateHandle() не NULL, а заранее выделенный буфер данных типа BYTE размером GrdContainerSize.</p></blockquote></div><p>Проверили у себя с SDK 7 Update 6 — утечки нет.<br />При тестировании вы точно собирали приложение с API из SDK 7 Update 6?<br />Или подключались библиотеки\объекнтые файлы из предыдущих версий?</p>]]></content>
			<author>
				<name><![CDATA[Антон Тихиенко]]></name>
				<uri>https://forum.guardant.ru/user/31/</uri>
			</author>
			<updated>2020-01-30T06:18:51Z</updated>
			<id>https://forum.guardant.ru/post/4285/#p4285</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4280/#p4280" />
			<content type="html"><![CDATA[<p>Выяснил причину падения описанного в первом посте, она заключается в утечке памяти при вызове функции GrdCreateHandle(), когда в качестве первого параметра передается NULL. По факту функция GrdCloseHandle() не отчищает выделенную память защищенного контейнера. Ошибку удалось устранить передавая в качестве первого параметра в функцию GrdCreateHandle() не NULL, а заранее выделенный буфер данных типа BYTE размером GrdContainerSize.</p>]]></content>
			<author>
				<name><![CDATA[Coxwain]]></name>
				<uri>https://forum.guardant.ru/user/1858/</uri>
			</author>
			<updated>2020-01-28T06:07:36Z</updated>
			<id>https://forum.guardant.ru/post/4280/#p4280</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4235/#p4235" />
			<content type="html"><![CDATA[<p>Здравствуйте, спасибо! Выключение notification api в конструкторе помогло.</p>]]></content>
			<author>
				<name><![CDATA[ls]]></name>
				<uri>https://forum.guardant.ru/user/1823/</uri>
			</author>
			<updated>2019-11-13T08:27:46Z</updated>
			<id>https://forum.guardant.ru/post/4235/#p4235</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4234/#p4234" />
			<content type="html"><![CDATA[<div class="quotebox"><cite>ls пишет:</cite><blockquote><p>Добрый день! У нас похожая проблема. Только ключ удаленный, при отключении локального компьютера от сети GrdCheck возвращает ошибку (конкретно, GrdE_NetConnectionLost), далее мы удаляем объект CGrdDongle, в деструкторе вызывается ::GrdCloseHandle(m_hGrd), на ней происходит вылет. Последняя функция в стеке вызовов GrdUnInitializeNotificationAPI (кроме этого в стеке видно вызов GrdLogout, перед ней GrdUnInitializeNotificationAPI и после нее еще 3).<br />Библиотеки взяты из Guardant SDK 7 update 6.<br />Есть скриншот, но не удалось загрузить на форум.</p></blockquote></div><p>Добрый день. Приносим извинения за длительное ожидание ответа.<br />Необходимо проанализировать сетевое notification api. Мы передали информацию в наш отдел разработки. Если используется класс CGrdDongle, то в его конструкторе использование этого api можно выключить.</p>]]></content>
			<author>
				<name><![CDATA[Тимофей Ершов]]></name>
				<uri>https://forum.guardant.ru/user/1116/</uri>
			</author>
			<updated>2019-11-13T07:42:41Z</updated>
			<id>https://forum.guardant.ru/post/4234/#p4234</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4231/#p4231" />
			<content type="html"><![CDATA[<p>Добрый день! У нас похожая проблема. Только ключ удаленный, при отключении локального компьютера от сети GrdCheck возвращает ошибку (конкретно, GrdE_NetConnectionLost), далее мы удаляем объект CGrdDongle, в деструкторе вызывается ::GrdCloseHandle(m_hGrd), на ней происходит вылет. Последняя функция в стеке вызовов GrdUnInitializeNotificationAPI (кроме этого в стеке видно вызов GrdLogout, перед ней GrdUnInitializeNotificationAPI и после нее еще 3).<br />Библиотеки взяты из Guardant SDK 7 update 6.<br />Есть скриншот, но не удалось загрузить на форум.</p>]]></content>
			<author>
				<name><![CDATA[ls]]></name>
				<uri>https://forum.guardant.ru/user/1823/</uri>
			</author>
			<updated>2019-11-07T07:59:29Z</updated>
			<id>https://forum.guardant.ru/post/4231/#p4231</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4200/#p4200" />
			<content type="html"><![CDATA[<p>Здравствуйте. Скачайте Guardant SDK 7 update 6. Соберетие ваше приложение, используя библиотеки и объектные файлы строго из SDK 7 up. 6. Проверьте работу приложения.</p>]]></content>
			<author>
				<name><![CDATA[Тимофей Ершов]]></name>
				<uri>https://forum.guardant.ru/user/1116/</uri>
			</author>
			<updated>2019-09-03T09:48:22Z</updated>
			<id>https://forum.guardant.ru/post/4200/#p4200</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4199/#p4199" />
			<content type="html"><![CDATA[<p>Здравствуйте Тимофей у нас используется SDK версии 7. <br />Примеры я практически все пересмотрел, они достаточно однотипны, работа с ключем происходит в одной функции и программа завершается. <br />А вот примеров как работать с ключом циклично я не нашел. Циклично это значит что в основной программе есть функция которая периодически проверяет подключен ли ключ и если он подключен<br />производит какие либо манипуляции с ним. Вы можете уточнить во время вызова какой функции Guardant API, выполняется функция GrdUnInitializeNotificationAPI во внутреннем коде библиотеки? И почему после ее вызова может произойти падение с сигналом SIGSEGV?</p>]]></content>
			<author>
				<name><![CDATA[Coxwain]]></name>
				<uri>https://forum.guardant.ru/user/1858/</uri>
			</author>
			<updated>2019-09-03T03:18:51Z</updated>
			<id>https://forum.guardant.ru/post/4199/#p4199</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Re: Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4198/#p4198" />
			<content type="html"><![CDATA[<p>Здравствуйте. Уточните, какая версия SDK используется. В составе современного SDK присутствуют <a href="https://dev.guardant.ru/display/KB/0017">примеры</a> использования Guardant API. Ознакомьтесь с примером General Guardant API. Здесь вы найдете рекомендации по реализации процедуры поиска и проверке наличия ключа.</p>]]></content>
			<author>
				<name><![CDATA[Тимофей Ершов]]></name>
				<uri>https://forum.guardant.ru/user/1116/</uri>
			</author>
			<updated>2019-09-02T12:04:43Z</updated>
			<id>https://forum.guardant.ru/post/4198/#p4198</id>
		</entry>
		<entry>
			<title type="html"><![CDATA[Падение программы на вызове GrdUnInitializeNotificationAPI]]></title>
			<link rel="alternate" href="https://forum.guardant.ru/post/4197/#p4197" />
			<content type="html"><![CDATA[<p>Здравствуйте! В нашем приложении используются ключи GuardantCodeTime. Примерная функция проверки лицензии выглядит следующим образом:</p><div class="codebox"><pre><code>HANDLE hHandle = INVALID_HANDLE_VALUE;

int CheckLicense()
{ 
    // Результат работы функции
    int res = -1;
    
    // Наличие ключа
    bool keyOk = false;

    // Проверка наличия ключа
    if(hHandle == INVALID_HANDLE_VALUE || GrdCheck(hHandle) != GrdE_OK)
    {
        // Поиск и подключение к ключу
        if((GrdStartup() == GrdE_OK) &amp;&amp;
           (GrdCreateHandle(hHandle) != INVALID_HANDLE_VALUE) &amp;&amp;
           (GrdSetAccessCodes(hHandle, ...) == GrdE_OK) &amp;&amp;
           (GrdFind(hHandle, ...) == GrdE_OK) &amp;&amp;
           (GrdSetWorkMode(hHandle, ...) == GrdE_OK) &amp;&amp;
           (GrdLogin(hHandle) == GrdE_OK))
        {
            keyOk = true;
        // Возникли ошибки при подключению к ключу
        } else {
            GrdCloseHandle(hHandle);
            hHandle = INVALID_HANDLE_VALUE;
            GrdCleanup();
        }
    } else {
        // Ключ присутствует и уже был проинициализирован
        keyOk = true;
    }
    
    if(keyOk)
    {
        // Вызов внутренних функций ключа для проверки лицензии
        res = GrdCodeRun(...) 
        ...
    }
    
    return res;
}</code></pre></div><p>Когда ключ подключен, функция проверки отрабатывает без ошибок, но когда ключа нет, то после 3-4 часов работы функции, возникает исключение SIGSEGV. Последняя успешно выполненная функция, которая отображается в отладчике - GrdUnInitializeNotificationAPI. Как я понимаю данная функция реализована в библиотеке GrdAPI. <br />&nbsp; &nbsp;При отсутствии ключа выполняется следующий набор функций GrdStartup, GrdCreateHandle, GrdSetAccessCodes и на функции GrdFind происходит ошибка, из-за которой происходит вызов функций GrdCloseHandle, GrdCleanup. Еще хотелось бы отметить, что при подключенном ключе функция проверки вызывается раз в несколько минут, а при отсутсвии раз в 5 секунд. В чем может быть проблема?</p>]]></content>
			<author>
				<name><![CDATA[Coxwain]]></name>
				<uri>https://forum.guardant.ru/user/1858/</uri>
			</author>
			<updated>2019-09-02T11:00:59Z</updated>
			<id>https://forum.guardant.ru/post/4197/#p4197</id>
		</entry>
</feed>
