2015-06-17 10 views
5

Ich habe eine MFC-basiertes Programm, das vor 3059317 Update installieren fein gerade gearbeitet:MFC-Programm hängt: gebrochen Comctl32.dll nach Update KB3059317 auf Vista?

MS15-060: Sicherheitsanfälligkeit in Microsoft allgemeinen Steuerelemente kann Remotecodeausführung ermöglichen, 9. Juni 2015)

Das Update ersetzt Comctl32.dll durch eine neue Version.

Nach dem Anwenden dieses Updates hängt das Öffnen eines Dialoges nur das Programm. Nicht alle Dialoge scheinen betroffen zu sein, aber die Druckvorschau bleibt durchgehend hängen, ohne jedoch das Programm zu stürzen. Es reagiert einfach nicht mehr.

Ich habe keine Ahnung, wie ich versuchen könnte, dieses Problem zu debuggen, um einen Weg zu finden. Erstellen ein Speicherabbild, wenn das Programm gehangen wird, gibt folgende Stack-Trace:

comctl32.dll!751f8505() 
Xxx.exe!CWnd::WindowProc(unsigned int message, unsigned int wParam, long lParam) Line 2095 + 0x13 bytes 
Xxx.exe!AfxCallWndProc(CWnd * pWnd, HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 285 
Xxxx.exe!AfxWndProc(HWND__ * hWnd, unsigned int nMsg, unsigned int wParam, long lParam) Line 434 + 0x10 bytes 
user32.dll!76aafd72() 
user32.dll!76aa84de() 
user32.dll!76aafd72() 
user32.dll!76aa9f8d() 
ntdll.dll!77dd5a7e() 
user32.dll!76aaa2af() 
comctl32.dll!75249cfb() 
comctl32.dll!751fb559() 
user32.dll!76aafd72() 
user32.dll!76aafe4a() 
user32.dll!76ab09d3() 
user32.dll!76abb759() 
Xxx.exe!CWnd::DefWindowProcA(unsigned int nMsg, unsigned int wParam, long lParam) Line 1116 + 0x7 bytes 
Xxx.exe!CWnd::Default() Line 315 + 0x13 bytes 
Xxx.exe!CParsedEdit::OnPaint() Line 1603 
Xxx.exe!CBannerEdit::OnPaint() Line 368 

So sind wir in der Tat in Comctl32.dll stecken - was nun?

Übrigens, in einigen Fällen löst die Deinstallation des Updates das Problem.

UPDATE

In allen Fällen Aero ausgeschaltet löst immer das Problem. Und KB3059317 scheint nicht das einzige Update Juni 2015 zu Windows Vista zu sein, das dieses seltsame Verhalten zeigt.

+0

Wenn Sie 'CWnd :: WindowProc 'betrachten, worauf zeigt' this'? Was sind die Werte von "Nachricht", "wParam" und "LParam"? –

+0

Ich habe ein paar Anwendungen auf meinem System aufgrund dieses Updates auch abstürzen. – navossoc

Antwort

2

Es schlägt mit Areo Vista zumindest für einen Dialog in unserer App fehl: Der Dialog wird einfach nicht gezeichnet. Es ist vorhanden, aber es ist einfach nicht sichtbar.

Um das Problem auf Vista Aero zu lösen, entfernen Sie alle Anrufe auf SetRedraw() Funktion während der Ausführung vonund OnSize() Methoden.

Es scheint, dass SetRedraw(TRUE) keinen (positiven) Effekt hat, zumindest in diesen beiden Fällen.

0

Ich habe das gleiche Problem mit einem benutzerdefinierten Programm in .NET 4 geschrieben, die eine angepasste Version des ListView-Steuerelement verwendet. Das Programm hängt nicht, produziert und Fehler "versucht, geschützten Speicher zu lesen oder zu schreiben. Dies ist oft ein Hinweis darauf, dass anderer Speicher beschädigt ist.". Nach der Deinstallation dieses Updates ist alles in Ordnung.