Atom Лента - Форум КриптоПро - Тема:Ошибка при вызове InitializeSecurityContextA - 10Форум КриптоПро - Atom Лентаurn:https:--www-cryptopro-ru:AtomLenta:ForumKriptoPro:Tema:OshibkaprivyzoveInitializeSecurityContextA-10:1Copyright 2024 Форум КриптоПро2024-03-29T08:26:38Zhttps://www.cryptopro.ru/forum2/Images/YAFLogo.pngForum Adminhttps://www.cryptopro.ruforum@cryptopro.ruМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим Коллегинkoviryalkinhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=47336&name=koviryalkinkoviryalkinhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=47336&name=koviryalkinМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим Коллегинkoviryalkinhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=47336&name=koviryalkinРоман кислухинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=11813&name=Роман кислухинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинРоман кислухинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=11813&name=Роман кислухинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинМаксим Коллегинhttps://www.cryptopro.ru/forum2/default.aspx?g=profile&u=3&name=Максим КоллегинYetAnotherForum.NETurn:https:--www-cryptopro-ru:ftPosts:st1:meid115865:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer_Alt" width="100%"><tr><td>Ура! А то мы уже глубоко закопались)</td></tr></table>2020-06-03T13:35:27+03:002020-06-03T13:35:27+03:00Максим Коллегин<table class="content postContainer_Alt" width="100%"><tr><td>Ура! А то мы уже глубоко закопались)</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115858:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115823#post115823"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>почти уверен, что у вас ошибка и повторное освобождение контекста.</div></div><br />Есть! Нашел! Но это не совсем у нас! <br />После освобождения контекста и ухода переменной, указывающей на этот контекст, из области видимости, может придти (а может и не придти) горбатый коллектор (GC)!!! Он не знает ничего не про хидеры ваши, ни про каунтеры =) ... тупа все зачищает! Воспроизводится 100%-но!</td></tr></table>2020-06-03T12:58:00+03:002020-06-03T12:58:00+03:00koviryalkin<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115823#post115823"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>почти уверен, что у вас ошибка и повторное освобождение контекста.</div></div><br />Есть! Нашел! Но это не совсем у нас! <br />После освобождения контекста и ухода переменной, указывающей на этот контекст, из области видимости, может придти (а может и не придти) горбатый коллектор (GC)!!! Он не знает ничего не про хидеры ваши, ни про каунтеры =) ... тупа все зачищает! Воспроизводится 100%-но!</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115847:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115823#post115823"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Очень странно, что это помогло. А сможете выложить код? почти уверен, что у вас ошибка и повторное освобождение контекста.</div></div><br />Папытался принудительно сделать повторное освобождение контекста (два раза подряд). После этого java машина вывалилась, правда не сразу, а где-то дальше...<br /><br /><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115823#post115823"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Можете включить аудит capi20 ну уровне 0x5 - будут видны вызовы CertFreeCertificateContext.</div></div><br /><a rel="nofollow" href="https://drive.google.com/file/d/1Wj9r5PEZEM6KcaPi-LoDIy0urS_6QGSc/view?usp=sharing" title="https://drive.google.com/file/d/1Wj9r5PEZEM6KcaPi-LoDIy0urS_6QGSc/view?usp=sharing">0x80090320.log.tgz</a><br />это уже на обновленной версии, которую Ваши коллеги дали.<br /><br /></td></tr></table>2020-06-03T10:37:19+03:002020-06-03T10:37:19+03:00koviryalkin<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115823#post115823"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Очень странно, что это помогло. А сможете выложить код? почти уверен, что у вас ошибка и повторное освобождение контекста.</div></div><br />Папытался принудительно сделать повторное освобождение контекста (два раза подряд). После этого java машина вывалилась, правда не сразу, а где-то дальше...<br /><br /><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115823#post115823"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Можете включить аудит capi20 ну уровне 0x5 - будут видны вызовы CertFreeCertificateContext.</div></div><br /><a rel="nofollow" href="https://drive.google.com/file/d/1Wj9r5PEZEM6KcaPi-LoDIy0urS_6QGSc/view?usp=sharing" title="https://drive.google.com/file/d/1Wj9r5PEZEM6KcaPi-LoDIy0urS_6QGSc/view?usp=sharing">0x80090320.log.tgz</a><br />это уже на обновленной версии, которую Ваши коллеги дали.<br /><br /></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115823:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer" width="100%"><tr><td>Очень странно, что это помогло. А сможете выложить код? почти уверен, что у вас ошибка и повторное освобождение контекста.<br />Можете включить аудит capi20 ну уровне 0x5 - будут видны вызовы CertFreeCertificateContext.<br />Или посмотрет счётчик ссылок при ошибках. Он хранится в (PCERT_CONTEXT_HEADER)pCertContext-1; <br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-c">typedef struct _CERT_CONTEXT_HEADER {
volatile LONG cCount;
DWORD placeholder;
} CERT_CONTEXT_HEADER, *PCERT_CONTEXT_HEADER,</code></pre>
</div></div></td></tr></table>2020-06-02T14:20:30+03:002020-06-02T14:20:30+03:00Максим Коллегин<table class="content postContainer" width="100%"><tr><td>Очень странно, что это помогло. А сможете выложить код? почти уверен, что у вас ошибка и повторное освобождение контекста.<br />Можете включить аудит capi20 ну уровне 0x5 - будут видны вызовы CertFreeCertificateContext.<br />Или посмотрет счётчик ссылок при ошибках. Он хранится в (PCERT_CONTEXT_HEADER)pCertContext-1; <br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-c">typedef struct _CERT_CONTEXT_HEADER {
volatile LONG cCount;
DWORD placeholder;
} CERT_CONTEXT_HEADER, *PCERT_CONTEXT_HEADER,</code></pre>
</div></div></td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115801:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115795#post115795"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Вызывать CertFreeCertificateContext после создания удостоверения можно и нужно - SSP увеличит счётчик ссылок, сделав Duplicate.</div></div><br /><br />Убрал освобождение контекста сразу после вызова AcquireCredentialsHandle и теперь он существует все время, пока существует полученное удостоверение безопасности. За 12 часов работы ошибок нет =/</td></tr></table>2020-06-01T22:19:30+03:002020-06-01T22:19:30+03:00koviryalkin<table class="content postContainer_Alt" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115795#post115795"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Вызывать CertFreeCertificateContext после создания удостоверения можно и нужно - SSP увеличит счётчик ссылок, сделав Duplicate.</div></div><br /><br />Убрал освобождение контекста сразу после вызова AcquireCredentialsHandle и теперь он существует все время, пока существует полученное удостоверение безопасности. За 12 часов работы ошибок нет =/</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115796:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer" width="100%"><tr><td>Хранилище не используется. Берется сертификат (из контейнера ключа) и создается новый контекст функцией CertCreateCertificateContext.</td></tr></table>2020-06-01T17:24:57+03:002020-06-01T17:24:57+03:00Роман кислухин<table class="content postContainer" width="100%"><tr><td>Хранилище не используется. Берется сертификат (из контейнера ключа) и создается новый контекст функцией CertCreateCertificateContext.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115795:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer_Alt" width="100%"><tr><td>Вызывать CertFreeCertificateContext после создания удостоверения можно и нужно - SSP увеличит счётчик ссылок, сделав Duplicate.<br />А вот хранилище, в котором находился контекст сертификата в флагом Force не закрываете?</td></tr></table>2020-06-01T17:18:40+03:002020-06-01T17:18:40+03:00Максим Коллегин<table class="content postContainer_Alt" width="100%"><tr><td>Вызывать CertFreeCertificateContext после создания удостоверения можно и нужно - SSP увеличит счётчик ссылок, сделав Duplicate.<br />А вот хранилище, в котором находился контекст сертификата в флагом Force не закрываете?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115793:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115764#post115764"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Очень похоже на разрушенный PCCERT_CONTEXT, переданный в SSPI, вы не могли его случайно освободить в вызывающем коде?</div></div><br /><br />В "CryptoPro 4.0 SDK\samples\SSPI\WebServer\WebServer.c" тоже освобождается:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-c">
// Освобождение контекста сертификата. В Schannel уже создана его копия.
if(pCertContext)
{
CertFreeCertificateContext(pCertContext);
}
</code></pre>
</div></div><br />Причем в случае ошибки не освобождается. Я понимаю, что это пример, но все-таки, как должно быть?<br />В документации на этот счет ничего не нашел.</td></tr></table>2020-06-01T16:38:44+03:002020-06-01T16:38:44+03:00Роман кислухин<table class="content postContainer" width="100%"><tr><td><div class="quote"><span class="quotetitle">Автор: Максим Коллегин <a href="/forum2/default.aspx?g=posts&m=115764#post115764"><img src="/forum2/Themes/soclean/icon_latest_reply.gif" title="Перейти к цитате" alt="Перейти к цитате" /></a></span><blockquote>Очень похоже на разрушенный PCCERT_CONTEXT, переданный в SSPI, вы не могли его случайно освободить в вызывающем коде?</div></div><br /><br />В "CryptoPro 4.0 SDK\samples\SSPI\WebServer\WebServer.c" тоже освобождается:<br /><div class="code"><strong>Код:</strong><div class="innercode"><pre class="line-numbers"><code class="language-c">
// Освобождение контекста сертификата. В Schannel уже создана его копия.
if(pCertContext)
{
CertFreeCertificateContext(pCertContext);
}
</code></pre>
</div></div><br />Причем в случае ошибки не освобождается. Я понимаю, что это пример, но все-таки, как должно быть?<br />В документации на этот счет ничего не нашел.</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115764:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer_Alt" width="100%"><tr><td>Очень похоже на разрушенный PCCERT_CONTEXT, переданный в SSPI, вы не могли его случайно освободить в вызывающем коде?</td></tr></table>2020-05-31T11:26:03+03:002020-05-31T11:26:03+03:00Максим Коллегин<table class="content postContainer_Alt" width="100%"><tr><td>Очень похоже на разрушенный PCCERT_CONTEXT, переданный в SSPI, вы не могли его случайно освободить в вызывающем коде?</td></tr></table>urn:https:--www-cryptopro-ru:ftPosts:st1:meid115763:1Ошибка при вызове InitializeSecurityContextA<table class="content postContainer" width="100%"><tr><td>Чтобы было больше сообщений в логе - уровень аудита нужно задавать у libssp. <br />cpssp - это для Windows.</td></tr></table>2020-05-31T10:33:58+03:002020-05-31T10:33:58+03:00Максим Коллегин<table class="content postContainer" width="100%"><tr><td>Чтобы было больше сообщений в логе - уровень аудита нужно задавать у libssp. <br />cpssp - это для Windows.</td></tr></table>