Вопрос

Мы отслеживали ошибку в моем веб-приложении WCF (W2K3 IIS), которая приводила к переполнению стека.

Чтобы исправить это, мне нужно было увеличить стек моего приложения, создав поток с тем объемом памяти, который я хотел выделить.

Но что происходит с дочерними потоками?Мое приложение создает много потоков, унаследуют ли они значение или мне придется присваивать каждому отдельному потоку новое значение?

Редактировать:Если я запускаю службы (WCF) в качестве хоста консоли, они работают просто отлично.Кроме того, если я изменю стек w3wp.exe (с помощью EDITBIN), они также отлично работают в IIS.
Итак, мне нужно увеличить стек.Я знаю, что могу создать поток с размером стека (есть другой способ?), Но мне нужно знать, что происходит с дочерними потоками.

Редактировать 2:Нам нужно определить несколько БОЛЬШИХ векторов, которые приводят к переполнению стека.Так что это не ошибка в нашей системе.Мне действительно нужно (есть) увеличить стек

Это было полезно?

Решение

Попробовав это сам, я могу сказать "да"!Дочерние потоки сохраняют объем стека, установленный в родительском потоке.

Другие советы

Это звучит так, как будто вам нужно более тщательно подумать о почему вы получаете переполнение стека вместо того, чтобы просто выделять больше памяти.

Есть ли какая-то функция с огромным количеством локальных переменных или массив, который собирается в стеке?

Вы уверены, что у вас где-нибудь не происходит утечка из-за непреднамеренных рекурсивных циклов?

-Адам

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top