Ustawienie GFlags, aby złapać uszkodzenie sterty (inne niż Page Heap)?

W jednym miejscu produkcji nasza aplikacja(*) awarie powtarzają się, ale nie powtarzalnie. Analiza zrzutów awaryjnych wyraźnie pokazuje, że jest to uszkodzenie sterty: awarie są w innej lokalizacji, ale zawsze mają dostęp do naruszeń wewnątrzkernel32!HeapFree/ntdll!RtlpLowFragHeapFree. Wygraj Dbg!analyze -v zgłasza także uszkodzenie sterty.

Dotychczas próbowaliśmy uruchomić aplikację za pomocąGFlags opcjaSterty stron. Problem polega na tym, że obciążenie pamięci sterty stron jest takie, że aplikacja nie będzie już działać (uderzając w limit pamięci wirtualnej dla procesu 32-bitowego).

Więc,nie możemy użyć Page Heap. Który innyflagi byłoby użyteczne, aby dodać tak, że my też

mieć awarię w miejscu korupcjilub przynajmniej może uzyskać więcej informacji na temat zrzutu awaryjnego, który ostatecznie zostanie wygenerowany po awariiHeapFree?

Aktualnie testujemy flagi:

Włącz tagowanie stertyWłącz sprawdzanie ogona sterty

w nadziei, że następny zrzut awaryjny będzie zawierał więcej informacji o tym, co poszło nie tak.

Rozważyłem te flagi, ale na razie je zostawiłem:

Włącz sprawdzanie parametrów sterty ... Oczekiwałbym dość dużego obciążenia, gdy system sprawdza za każdym razem, gdy wywoływana jest funkcja stertyWłącz sprawdzanie bez sterty ... nie jestem pewien, czy to by mi coś kupiłoWłącz sprawdzanie poprawności sterty podczas połączenia ... tutaj nawet doktorzy ostrzegają przed wysokim kosztem

Jednym z problemów, które mam (również) jest to, że nie jestem pewien, w jaki sposób te flagi pomagają w przypadku uszkodzenia pamięci. Page Heap oczywiście spowoduje naruszenie zasad dostępu, gdy coś zapisze się na stronach ochronnych, ale jak działają pozostałe flagi?

Czy muszę uruchamiać aplikację z weryfikatorem aplikacji dla tych innych flag, aby pomóc? Czy zostanie zgłoszony wyjątek, gdy sprawdzający kod wykryje coś?

Która kombinacja tych flag ma największy sens, aby aplikacja mogła nadal działać z wydajnością OK i zużyciem pamięci w produkcji?

(*): Jest to 32-bitowa aplikacja dla systemu Windows w automatyce przemysłowej. Działa na 64-bitowym Win7 w tym przypadku (co dobrze sprawdza się w wielu innych witrynach).

questionAnswers(2)

yourAnswerToTheQuestion