Regression-Test for CORE-10510 Tests with official gcc bootcd isos starting prince.exe (shadow and the flame): all buids fail "ok" means: ros shutdown succeeded afterwards "got it" means, i got assertion on shutdown after dieing of csrss, then BSOD 66666 5xOK 66967 5xOK 68000 5xOK 69000 5xOK 69473 5xOK 69500 5xOK 69548 9xOK 69552 9xOK 69553 9xOK 69554 1xOK, got it on second try 69555 0xOK, got it on first try 69557 0xOK, got it on first try, but crashed already when hitting start (intention was to shut down) 69572 2xOK, got it on third try 69585 4xOK, got it on fifth try 69619 0xOK, got it on first try 69700 1xOK, got it on second try, but crashed already when closing explorer window which I used to start prince.exe 69792 2xOK, got it on third try 69800 2xOK, got it on third try 69870 0xOK, got it on first try 69880 1xOK, got it on second try 69882nEL2xOK, got it on third try, but crashed already when hitting start (intention was to shut down) 69882EL 0xOK, got it on first try !!!!!!!!!!Guilty Revision is 69554!!!!!!!!!!!!!!!! http://code.reactos.org/changelog/reactos?cs=69554 ---------------------------------------------------------------------------------------------------------------------------------------- ---------------------------------------------------------------------------------------------------------------------------------------- today I regtested whether a single replacement within r69554 is responsible for that test I took current head69883 and then partly reverted parts of r69554 changeset and retested - I cumulated these change-reverts in the following sequence after revert of: /win32ss/user/ntuser/misc/registry.c 1xOK, GOT ANOTHER ASSERTION THEN - SYMPTOM CHANGED - debugger keyboard input prevented to create BT, was like "auto-ignore on keypress in debugger", happened everytime, ROS did not crash after assertion, but aborted the shutdown process each time bringing me back to desktop (../../win32ss/user/winsrv/usersrv/shutdown.c:641) SrvExitWindowsEx(ClientId: 254.258, Flags: 0x1) (../../win32ss/user/winsrv/usersrv/shutdown.c:675) Caller LUID is: 0.1714 (../../win32ss/user/ntuser/ntstubs.c:736) err: Shutdown initiated (../../win32ss/user/ntuser/shutdown.c:217) err: UserInitiateShutdown (../../win32ss/user/ntuser/shutdown.c:289) err: UserInitiateShutdown -- Notify Winlogon for shutdown (../../win32ss/user/ntuser/shutdown.c:165) err: NotifyLogon(0x1, 0x0) (../../win32ss/user/ntuser/shutdown.c:189) err: Sending LN_LOGOFF message to Winlogon (../../win32ss/user/winsrv/usersrv/shutdown.c:684) Win32k says: 103 (../../win32ss/user/winsrv/usersrv/shutdown.c:694) STATUS_PENDING err:(../../base/system/winlogon/sas.c:1423) In LN_LOGOFF, exit_in_progress == false (../../ntoskrnl/lpc/send.c:899) No connected port (../../dll/ntdll/csr/connect.c:456) LPC Failed: c0000037 (../../dll/win32/kernel32/client/proc.c:519) Failed to tell CSRSS about new thread: c0000037 *** Assertion failed: NT_SUCCESS(Status) *** Source File: ../../dll/win32/kernel32/client/thread.c, line 313 Found that changed symptom interesting enough to retry the exact same thing with the same install once more... and on the very next try exactly the same thing happened (the new assertion without possibility to reach dbg prompt, then back to desktop) I decided to revert more.... ---------------------------------------------------------------------------------------------------------------------------------------- /win32ss/gdi/ntgdi/freetype.c 3xOK, on second try again the new assertion, not able to bt, auto-continue, then back to desktop, no crash I reverted more... /win32ss/user/ntuser/input.c 1xOK, on second try again the new assertion, not able to bt, auto-continue, then back to desktop, no crash (../../win32ss/user/winsrv/consrv/frontends/gui/guiterm.c:337) CsrDereferenceThread being called; [0x88, 0x318] -- hThread = 0x00000580, pcsrt->Process = 0x00410D90; pcsrt->ThreadHandle = 0x00000580 from [0x88, 0x318] err:(../../dll/win32/shell32/wine/changenotify.c:707) _NotificationCompletion overflow err:(../../dll/win32/shell32/wine/changenotify.c:754) ReadDirectoryChangesW failed. (00000000, 00262F18, 00262DDC, 7AE01B91) Code: 6 shellutils.h:185: WARNING: Unexpected RefCount > 0 (1)! shellutils.h:185: WARNING: Unexpected RefCount > 0 (2)! shellutils.h:185: WARNING: Unexpected RefCount > 0 (2)! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! shellbrowser.cpp:3472: WARNING: There are 1 references to the CShellBrowser active or leaked. WDMAUD.DRV - Thread detached fixme:(../../dll/win32/comctl32/toolbar.c:380) [00060100] TBSTYLE_REGISTERDROP not implemented traywnd.cpp:2720: Unexpected failure 80004005. err:(../../dll/win32/comctl32/commctrl.c:1756) GdiAlphaBlend failed: 0 (../../win32ss/user/winsrv/usersrv/shutdown.c:641) SrvExitWindowsEx(ClientId: 258.25c, Flags: 0x1) (../../win32ss/user/winsrv/usersrv/shutdown.c:675) Caller LUID is: 0.176c (../../win32ss/user/ntuser/ntstubs.c:736) err: Shutdown initiated (../../win32ss/user/ntuser/shutdown.c:217) err: UserInitiateShutdown (../../win32ss/user/ntuser/shutdown.c:289) err: UserInitiateShutdown -- Notify Winlogon for shutdown (../../win32ss/user/ntuser/shutdown.c:165) err: NotifyLogon(0x1, 0x0) (../../win32ss/user/ntuser/shutdown.c:189) err: Sending LN_LOGOFF message to Winlogon (../../win32ss/user/winsrv/usersrv/shutdown.c:684) Win32k says: 103 (../../win32ss/user/winsrv/usersrv/shutdown.c:694) STATUS_PENDING err:(../../base/system/winlogon/sas.c:1423) In LN_LOGOFF, exit_in_progress == false (../../dll/win32/kernel32/client/proc.c:519) Failed to tell CSRSS about new thread: c0000008 *** Assertion failed: NT_SUCCESS(Status) *** Source File: ../../dll/win32/kernel32/client/thread.c, line 313 Break repeatedly, break Once, Ignore, terminate Process or terminate Thread (boipt)? kdb:> b Execute '.cxr 0022F508' to dump context err:(../../win32ss/user/user32/windows/message.c:1506) Exception when calling unicode WndProc 00404ECB Msg 76 pti B1566930 Wndpti B1566930 I decided to revert more ---------------------------------------------------------------------------------------------------------------------------------------- /win32ss/user/ntuser/misc.c 1xOK, on second try again the new assertion, not able to bt, auto-continue, then back to desktop, no crash (../../win32ss/gdi/ntgdi/gdiobj.c:1169) GreDeleteObject: Trying to delete invalid object 61050139 (../../win32ss/user/ntuser/nonclient.c:1127) err: Wnd is active and not set active! (../../win32ss/user/winsrv/consrv/frontends/gui/guiterm.c:337) CsrDereferenceThread being called; [0x88, 0x328] -- hThread = 0x00000590, pcsrt->Process = 0x00410D90; pcsrt->ThreadHandle = 0x00000590 from [0x88, 0x328] err:(../../dll/win32/shell32/wine/changenotify.c:707) _NotificationCompletion overflow err:(../../dll/win32/shell32/wine/changenotify.c:754) ReadDirectoryChangesW failed. (00000000, 00268260, 00268124, 7AE01B91) Code: 6 shellutils.h:185: WARNING: Unexpected RefCount > 0 (1)! shellutils.h:185: WARNING: Unexpected RefCount > 0 (2)! shellutils.h:185: WARNING: Unexpected RefCount > 0 (2)! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! shellbrowser.cpp:3472: WARNING: There are 1 references to the CShellBrowser active or leaked. WDMAUD.DRV - Thread detached fixme:(../../dll/win32/comctl32/toolbar.c:380) [000500FE] TBSTYLE_REGISTERDROP not implemented traywnd.cpp:2720: Unexpected failure 80004005. err:(../../dll/win32/comctl32/commctrl.c:1756) GdiAlphaBlend failed: 0 (../../win32ss/user/winsrv/usersrv/shutdown.c:641) SrvExitWindowsEx(ClientId: 258.25c, Flags: 0x1) (../../win32ss/user/winsrv/usersrv/shutdown.c:675) Caller LUID is: 0.175b (../../win32ss/user/ntuser/ntstubs.c:736) err: Shutdown initiated (../../win32ss/user/ntuser/shutdown.c:217) err: UserInitiateShutdown (../../win32ss/user/ntuser/shutdown.c:289) err: UserInitiateShutdown -- Notify Winlogon for shutdown (../../win32ss/user/ntuser/shutdown.c:165) err: NotifyLogon(0x1, 0x0) (../../win32ss/user/ntuser/shutdown.c:189) err: Sending LN_LOGOFF message to Winlogon (../../win32ss/user/winsrv/usersrv/shutdown.c:684) Win32k says: 103 (../../win32ss/user/winsrv/usersrv/shutdown.c:694) STATUS_PENDING err:(../../base/system/winlogon/sas.c:1423) In LN_LOGOFF, exit_in_progress == false (../../dll/win32/kernel32/client/proc.c:519) Failed to tell CSRSS about new thread: c0000008 *** Assertion failed: NT_SUCCESS(Status) *** Source File: ../../dll/win32/kernel32/client/thread.c, line 313 Break repeatedly, break Once, Ignore, terminate Process or terminate Thread (boipt)? kdb:> b Execute '.cxr 0022F508' to dump context err:(../../win32ss/user/user32/windows/message.c:1506) Exception when calling unicode WndProc 00404ECB Msg 76 pti B15668D0 Wndpti B15668D0 I decided to revert the last files changes ---------------------------------------------------------------------------------------------------------------------------------------- /win32ss/user/ntuser/winsta.c 1xOK, on second try again the new assertion, not able to bt, auto-continue, then back to desktop, no crash (../../win32ss/user/winsrv/consrv/frontends/gui/guiterm.c:337) CsrDereferenceThread being called; [0x88, 0x320] -- hThread = 0x00000588, pcsrt->Process = 0x00410D90; pcsrt->ThreadHandle = 0x00000588 from [0x88, 0x320] err:(../../dll/win32/shell32/wine/changenotify.c:707) _NotificationCompletion overflow err:(../../dll/win32/shell32/wine/changenotify.c:754) ReadDirectoryChangesW failed. (00000000, 00265288, 0026514C, 7AE01B91) Code: 6 shellutils.h:185: WARNING: Unexpected RefCount > 0 (1)! shellutils.h:185: WARNING: Unexpected RefCount > 0 (2)! shellutils.h:185: WARNING: Unexpected RefCount > 0 (2)! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! (../../win32ss/user/ntuser/cursoricon.c:806) err: Trying to delete global cursor! shellbrowser.cpp:3472: WARNING: There are 1 references to the CShellBrowser active or leaked. WDMAUD.DRV - Thread detached fixme:(../../dll/win32/comctl32/toolbar.c:380) [00060114] TBSTYLE_REGISTERDROP not implemented traywnd.cpp:2720: Unexpected failure 80004005. err:(../../dll/win32/comctl32/commctrl.c:1756) GdiAlphaBlend failed: 0 (../../win32ss/user/winsrv/usersrv/shutdown.c:641) SrvExitWindowsEx(ClientId: 25c.260, Flags: 0x1) (../../win32ss/user/winsrv/usersrv/shutdown.c:675) Caller LUID is: 0.1766 (../../win32ss/user/ntuser/ntstubs.c:736) err: Shutdown initiated (../../win32ss/user/ntuser/shutdown.c:217) err: UserInitiateShutdown (../../win32ss/user/ntuser/shutdown.c:289) err: UserInitiateShutdown -- Notify Winlogon for shutdown (../../win32ss/user/ntuser/shutdown.c:165) err: NotifyLogon(0x1, 0x0) (../../win32ss/user/ntuser/shutdown.c:189) err: Sending LN_LOGOFF message to Winlogon (../../win32ss/user/winsrv/usersrv/shutdown.c:684) Win32k says: 103 (../../win32ss/user/winsrv/usersrv/shutdown.c:694) STATUS_PENDING err:(../../base/system/winlogon/sas.c:1423) In LN_LOGOFF, exit_in_progress == false (../../dll/win32/kernel32/client/proc.c:519) Failed to tell CSRSS about new thread: c0000008 *** Assertion failed: NT_SUCCESS(Status) *** Source File: ../../dll/win32/kernel32/client/thread.c, line 313 Break repeatedly, break Once, Ignore, terminate Process or terminate Thread (boipt)? kdb:> b Execute '.cxr 0022F508' to dump context err:(../../win32ss/user/user32/windows/message.c:1506) Exception when calling unicode WndProc 00404ECB Msg 76 pti B1566858 Wndpti B1566858 At this point changeset 69554 was completely reverted ---------------------------------------------------------------------------------------------------------------------------------------- So my conclusion is: You can prevent that BSOD from happening by partial revert of 69554, but you won't achieve a state then that will always shutdown in nowadays TRUNK, you would just stay on desktop with about the same probability that BSODs today. Therefore we have to develop a solution that goes inline with Thomas (most likely reasonable) changes in r69554.