2009-02-27 7 views
2

Nous avons poursuivi un bug sur mon application web WCF (W2K3 IIS) qui résultait en un stackoverflow. Pour corriger cela, j'ai dû augmenter la pile de mon application en créant un thread avec la quantité de mémoire que je voulais allouer.IIS stackoverflow

Mais que se passe-t-il avec les fils enfants? Mon application crée de nombreux threads, hériteront-ils de la valeur ou devrais-je définir chaque thread avec la nouvelle valeur? Edit: Si j'exécute les services (WCF) en tant qu'hôte de console, ils fonctionnent très bien. En outre, si je modifie la pile du w3wp.exe (avec EDITBIN) ils fonctionnent également bien sur IIS.
J'ai donc besoin d'augmenter la pile. Je sais que je peux créer un fil avec la taille de la pile (existe-t-il un autre moyen?) Mais j'ai besoin de savoir ce qui se passe avec les fils fils. Edit2: Nous devons définir certains vecteurs BIG qui provoquent un débordement de pile. Ce n'est donc pas un bug dans notre système. J'ai vraiment besoin d'augmenter la pile

+0

Etes-vous sûr que ce n'est pas un appel récursif qui ne se termine jamais? – mookid8000

+0

Je chercherais des fuites de mémoire avant d'essayer d'augmenter l'allocation de mémoire. –

+0

Pouvez-vous expliquer pourquoi l'apparition d'un dépassement de pile signifie que vous devez augmenter la mémoire? Je ne comprends pas. –

Répondre

2

Après l'avoir essayé moi-même, je peux dire oui! Les threads enfants conservent la quantité de pile définie sur le thread parent.

1

Il semble que vous ayez besoin de réfléchir plus sérieusement à pourquoi vous obtenez un débordement de pile au lieu de simplement allouer plus de mémoire.

Y at-il une fonction avec une grande quantité de variables locales ou un tableau qui se passe sur la pile? Etes-vous sûr de ne pas avoir de fuite avec des boucles récursives par inadvertance?

-Adam

+0

oui je suis ... J'ai juste besoin de savoir ce qui se passe avec les fils de l'enfant – sebagomez