openzfsonwindows/openzfs

BSOD 0x23 from consent.exe

Closed this issue · 1 comments

stack


CACHE_MANAGER (34)
    See the comment for FAT_FILE_SYSTEM (0x23)
Arguments:
Arg1: 0000000000000299
Arg2: ffffffffc0000420
Arg3: 0000000000000000
Arg4: 0000000000000000

BUGCHECK_CODE:  34

BUGCHECK_P1: 299

BUGCHECK_P2: ffffffffc0000420

BUGCHECK_P3: 0

BUGCHECK_P4: 0

EXCEPTION_RECORD:  ffffffffc0000420 -- (.exr 0xffffffffc0000420)
Cannot read Exception record @ ffffffffc0000420

PROCESS_NAME:  consent.exe

STACK_TEXT:  
ffff978c`72b9b8d8 fffff804`303668e2     : ffff978c`72b9ba40 fffff804`3011ae80 fffff804`2abd2180 00000000`00000201 : nt!DbgBreakPointWithStatus
ffff978c`72b9b8e0 fffff804`30365fa3     : fffff804`00000003 ffff978c`72b9ba40 fffff804`302301f0 00000000`00000034 : nt!KiBugCheckDebugBreak+0x12
ffff978c`72b9b940 fffff804`30216c77     : ffff878f`3cbf8aa0 fffff804`2e749273 00000000`00000093 ffff978c`72b9c2a0 : nt!KeBugCheck2+0xba3
ffff978c`72b9c0b0 fffff804`3028cd89     : 00000000`00000034 00000000`00000299 ffffffff`c0000420 00000000`00000000 : nt!KeBugCheckEx+0x107
ffff978c`72b9c0f0 fffff804`305ea0e3     : ffff878f`00000000 ffff878f`3b006a20 00000032`00000093 00000001`00000001 : nt!CcCopyReadEx+0x1fcdb9
ffff978c`72b9c1d0 fffff804`2ea48621     : 00000000`00000120 ffff878f`3cbf8aa0 ffff878f`3ff02c60 ffff878f`39371db0 : nt!CcCopyRead+0x23
ffff978c`72b9c220 fffff804`2ea48d9f     : ffff878f`3cbf8aa0 ffff978c`72b9c891 ffff878f`39371db0 ffff878f`3cbf8aa0 : OpenZFS!fs_read_impl+0x971 [C:\src\openzfs\module\os\windows\zfs\zfs_vnops_windows.c @ 4695] 
ffff978c`72b9c380 fffff804`2ea50e1a     : ffff878f`3cbf8aa0 fffff804`2e749273 00000000`00000000 ffff978c`72b9c891 : OpenZFS!fs_read+0x46f [C:\src\openzfs\module\os\windows\zfs\zfs_vnops_windows.c @ 4851] 
ffff978c`72b9c480 fffff804`2ea4d312     : 00000000`00000019 00000000`00000000 ffff878f`3cbf8ca8 ffff878f`3c046570 : OpenZFS!fsDispatcher+0x179a [C:\src\openzfs\module\os\windows\zfs\zfs_vnops_windows.c @ 7241] 
ffff978c`72b9c5f0 fffff804`300ebef5     : ffff978c`72b9c7b0 fffff804`31918029 ffff978c`72b9d000 ffff978c`72b97000 : OpenZFS!dispatcher+0x292 [C:\src\openzfs\module\os\windows\zfs\zfs_vnops_windows.c @ 7360] 
ffff978c`72b9c6e0 fffff804`3191a1db     : ffff878f`00000000 ffff878f`3cbf8aa0 00000000`00000028 7fffffff`ffffffff : nt!IofCallDriver+0x55
ffff978c`72b9c720 fffff804`31917e23     : ffff978c`72b9c7b0 00000000`00000000 00000000`00000000 fffff804`300653c3 : FLTMGR!FltpLegacyProcessingAfterPreCallbacksCompleted+0x15b
ffff978c`72b9c790 fffff804`300ebef5     : ffff878f`3bea3cf0 ffff878f`3ef7a120 ffff878f`39371db0 00000000`00000001 : FLTMGR!FltpDispatch+0xa3
ffff978c`72b9c7f0 fffff804`30540060     : ffff878f`3bea3cf0 ffff978c`72b9c891 ffff978c`72b9c891 000001fb`1acd0000 : nt!IofCallDriver+0x55
ffff978c`72b9c830 fffff804`30527db4     : 00000000`00000000 ffff878f`3c046570 00000000`00000000 ffff878f`3c046570 : nt!IopSynchronousServiceTail+0x1d0
ffff978c`72b9c8e0 fffff804`305278a3     : ffff878f`3c046570 00000000`00000000 00000000`00000000 00000000`00000000 : nt!IopReadFile+0x4d4
ffff978c`72b9c9e0 fffff804`3022bbe5     : ffff878f`3a684080 ffff978c`72b9cb60 00000027`98a7e888 000001fb`18fd8810 : nt!NtReadFile+0xd3
ffff978c`72b9ca70 00007ff8`b396f434     : 00007ff8`b200c2b6 000001fb`190134d0 00000027`98a7e909 000001fb`18fd8848 : nt!KiSystemServiceCopyEnd+0x25
00000027`98a7e868 00007ff8`b200c2b6     : 000001fb`190134d0 00000027`98a7e909 000001fb`18fd8848 00000000`00000000 : ntdll!NtReadFile+0x14
00000027`98a7e870 00007ff8`b200c519     : 00000027`98a7ee80 ffffffff`ffffffff 00000000`00000000 000001fb`190169fe : KERNEL32!BaseDllOpenIniFileOnDisk+0x366
00000027`98a7e970 00007ff8`b200b8b9     : 000001fb`18fd8810 000001fb`18fd8810 000001fb`1900c601 00000000`00000100 : KERNEL32!BaseDllReadWriteIniFileOnDisk+0x31
00000027`98a7e9b0 00007ff8`b200d89a     : 0000ca7e`00000000 00007ff8`a611dc00 00000027`98a7f3c0 000001fb`19016c30 : KERNEL32!BaseDllReadWriteIniFile+0x179
00000027`98a7ee00 00007ff8`b200df25     : 00000000`ffffffff 00000027`98a7ef60 000001fb`1900c6b8 000001fb`18f7f024 : KERNEL32!GetPrivateProfileStringW+0x6a
00000027`98a7ee60 00007ff8`a6071b68     : 000001fb`1900c6b8 00000000`00000000 00000000`00000000 000001fb`1900c6b8 : KERNEL32!GetPrivateProfileIntW+0x45
00000027`98a7f0f0 00007ff6`05a95107     : 00000000`00000001 00000000`00000000 00000000`00000000 000001fb`1900c6c8 : urlmon!CZoneIdentifier::Load+0x73f38
00000027`98a7f170 00007ff6`05a93223     : 00000000`00000000 00000000`00000000 000001fb`18f7ef90 00000000`00000000 : consent!CuiGetContextInformation+0x357
00000027`98a7f2c0 00007ff6`05a972ef     : 000001fb`18f7770a 000001fb`18f7770c 00000000`00000000 00000000`00000000 : consent!WinMain+0xf73
00000027`98a7f680 00007ff8`b201257d     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : consent!__mainCRTStartup+0x1b7
00000027`98a7f740 00007ff8`b392aa58     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : KERNEL32!BaseThreadInitThunk+0x1d
00000027`98a7f770 00000000`00000000     : 00000000`00000000 00000000`00000000 00000000`00000000 00000000`00000000 : ntdll!RtlUserThreadStart+0x28


FAULTING_SOURCE_LINE:  C:\src\openzfs\module\os\windows\zfs\zfs_vnops_windows.c

FAULTING_SOURCE_FILE:  C:\src\openzfs\module\os\windows\zfs\zfs_vnops_windows.c

FAULTING_SOURCE_LINE_NUMBER:  4695

FAULTING_SOURCE_CODE:  
  4691: 	dprintf("sizes = %I64x, %I64x, %I64x\n",
  4692: 	    vp->FileHeader.AllocationSize.QuadPart,
  4693: 	    vp->FileHeader.FileSize.QuadPart,
  4694: 	    vp->FileHeader.ValidDataLength.QuadPart);
> 4695: 			if (!CcCopyRead(FileObject,
  4696: 			    &IrpSp->Parameters.Read.ByteOffset,
  4697: 			    length, wait, data, &Irp->IoStatus)) {
  4698: 				dprintf("CcCopyRead could not wait\n");
  4699: 
  4700: 				IoMarkIrpPending(Irp);


SYMBOL_NAME:  OpenZFS!fs_read_impl+971

MODULE_NAME: OpenZFS

IMAGE_NAME:  OpenZFS.sys

STACK_COMMAND:  .cxr; .ecxr ; kb

BUCKET_ID_FUNC_OFFSET:  971

FAILURE_BUCKET_ID:  0x34_OpenZFS!fs_read_impl

OS_VERSION:  10.0.22621.1

BUILDLAB_STR:  ni_release

OSPLATFORM_TYPE:  x64

OSNAME:  Windows 10

FAILURE_ID_HASH:  {5f5597ca-a19d-8b7b-138e-63469926b9f3}

Followup:     MachineOwner
---------

Filenames handled immediately before crash seem to be handled poorly:

cbuf

FFFF878F3A684080: dprintf: zfs_vnops_windows.c:784:zfs_vnop_lookup_impl(): zfs_v
nop_lookup_impl: enter
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:924:zfs_vnop_lookup_impl(): zfs_v
nop_lookup_impl: converted name is '\SteamSetup.exe:Zone.Identifier' input len b
ytes 62 (err 0)  CaseInsensitive
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:1027:zfs_vnop_lookup_impl(): zfs_
vnop_lookup_impl: Parsed out streamname 'Zone.Identifier:$DATA'
FFFF878F3A684080: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 34
FFFF878F3A684080: dprintf: dbuf.c:3296:dbuf_create(): ds=BOOM obj=34 lvl=0 blkid
=0 db=FFFF878F486E2940
FFFF878F3A684080: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 7
FFFF878F3A684080: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 134
FFFF878F3A684080: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 137
FFFF878F3A684080: vnode_couplefileobject: vp FFFF878F48E21B10 fo FFFF878F3C04657
0
FFFF878F3A684080: vnode_fileobject_add: added FO FFFF878F3C046570 to vp FFFF878F
48E21B10
FFFF878F3A684080: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 7
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:2176:zfs_build_path(): zfs_bu
ild_path: zap_value_search 22
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:1919:zfs_vnop_lookup(): zfs_vnop_
lookup: OK with FILE_OPENED
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:7338:dispatcher(): dispatcher: en
ter: major 5: minor 0: IRP_MJ_QUERY_INFORMATION: type 0x6: fo FFFF878F3C046570
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:6845:fsDispatcher():   fsDispatch
er: enter: major 5: minor 0: IRP_MJ_QUERY_INFORMATION fsDeviceObject
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:2575:query_information(): FileNor
malizedNameInformation
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:4898:file_name_information():
 * file_name_information: (normalize 1)
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:4933:file_name_information():
 file_name_information: name not set path taken
FFFF878F3A684080: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 134
FFFF878F3A684080: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 7
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:2176:zfs_build_path(): zfs_bu
ild_path: zap_value_search 22
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:4937:file_name_information():
 file_name_information: failed to build fullpath
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:4973:file_name_information():
 file_name_information: remaining space 252 str.len 80 struct size 8
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:5009:file_name_information():
 * file_name_information:  name of 'FFFF878F3A684080^S??.^D????^]0^D???^S??.^D??
?^Q' struct size 0x8 and FileNameLength 0x50 Usedspace 0x50
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:7338:dispatcher(): dispatcher: enter: major 5: minor 0: IRP_MJ_QUERY_INFORMATION: type 0x6: fo FFFF878F3C046570
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:6845:fsDispatcher():   fsDispatcher: enter: major 5: minor 0: IRP_MJ_QUERY_INFORMATION fsDeviceObject
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:4366:file_basic_information():    file_basic_information
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:7338:dispatcher(): dispatcher: enter: major 5: minor 0: IRP_MJ_QUERY_INFORMATION: type 0x6: fo FFFF878F3C046570
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:6845:fsDispatcher():   fsDispatcher: enter: major 5: minor 0: IRP_MJ_QUERY_INFORMATION fsDeviceObject
FFFF878F3A684080: dprintf: zfs_vnops_windows_lib.c:4499:file_standard_information():    file_standard_information

FFFF878F3A684080: dprintf: zfs_vnops_windows.c:312:zfs_init_cache(): zfs_init_cache: CcInitializeCacheMap
FFFF878F3AED8040: dprintf: zfs_vnops_windows_lib.c:4933:file_name_information(): file_name_information: name not set path taken
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:4690:fs_read_impl(): CcCopyRead(FFFF878F3C046570, 0, 93, 1, FFFFB301B24A8000, FFFF878F3BEA3D20)
FFFF878F3AED8040: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 134
FFFF878F3A684080: dprintf: zfs_vnops_windows.c:4694:fs_read_impl(): sizes = 200, 93, 93
FFFF878F3AED8040: dprintf: zfs_znode.c:1075:zfs_zget_ext(): +zget 7
FFFF878F3AED8040: dprintf: zfs_vnops_windows_lib.c:2176:zfs_build_path(): zfs_build_path: zap_value_search 22
FFFF878F3AED8040: dprintf: zfs_vnops_windows_lib.c:4937:file_name_information(): file_name_information: failed to build fullpath
FFFF878F3AED8040: dprintf: zfs_vnops_windows_lib.c:4973:file_name_information(): file_name_information: remaining space 252 str.len 80 struct size 8
FFFF878F3AED8040: dprintf: zfs_vnops_windows_lib.c:5009:file_name_information(): * file_name_information:  name of 'FFFF878F3AED8040^S??.^D????^]0^D???^S??.^D???^Q' struct size 0x8 and FileNameLength 0x50 Usedspace 0x50
-EB-   

Thread FFFF878F3A684080 crashed.

OK turns out that we correctly handle SteamSetup.exe:Zone.Identifier in the open, create the stream. The stream was opened with DELETE_ON_CLOSE.

We did not handle deleting the file in IRP_MJ_CLOSE, we call CcSetFileSizes() to zero, then attempt to remove SteamSetup.exe:Zone.Identifier. This would fail. A future re-open would succeed and read call would call CcCopyRead() which is thinking the ValidFileSize is 0, but is still 0x93 - and BSOD.

Now we correctly parse out the stream name, and actually delete the stream/xattr.
674ab11