- fixed Read/WriteFile(Ex) and properly wait on completion for synchronous operations - prevent completion port notification by not passing an APC context to the kernel when the low-order bit of the event handle is set (for asynchronous operations) Modified: trunk/reactos/lib/kernel32/file/rw.c _____
Modified: trunk/reactos/lib/kernel32/file/rw.c --- trunk/reactos/lib/kernel32/file/rw.c 2005-05-06 13:35:27 UTC (rev 15042) +++ trunk/reactos/lib/kernel32/file/rw.c 2005-05-06 14:02:45 UTC (rev 15043) @@ -23,78 +23,104 @@
* @implemented */ BOOL STDCALL -WriteFile(HANDLE hFile, - LPCVOID lpBuffer, - DWORD nNumberOfBytesToWrite, - LPDWORD lpNumberOfBytesWritten, - LPOVERLAPPED lpOverLapped) +WriteFile(IN HANDLE hFile, + IN LPCVOID lpBuffer, + IN DWORD nNumberOfBytesToWrite OPTIONAL, + OUT LPDWORD lpNumberOfBytesWritten OPTIONAL, + IN LPOVERLAPPED lpOverlapped OPTIONAL) { - HANDLE hEvent = NULL; - LARGE_INTEGER Offset; - NTSTATUS errCode; - IO_STATUS_BLOCK IIosb; - PIO_STATUS_BLOCK IoStatusBlock; - PLARGE_INTEGER ptrOffset; + NTSTATUS Status;
- DPRINT("WriteFile(hFile %x)\n",hFile); + DPRINT("WriteFile(hFile %x)\n", hFile);
- if (lpOverLapped == NULL && lpNumberOfBytesWritten == NULL) - { - SetLastError(ERROR_INVALID_PARAMETER); - } + if (lpNumberOfBytesWritten != NULL) + { + *lpNumberOfBytesWritten = 0; + }
- if (lpNumberOfBytesWritten) - { - *lpNumberOfBytesWritten = 0; - } - if (IsConsoleHandle(hFile)) { - return(WriteConsoleA(hFile, - lpBuffer, - nNumberOfBytesToWrite, - lpNumberOfBytesWritten, - NULL)); + return WriteConsoleA(hFile, + lpBuffer, + nNumberOfBytesToWrite, + lpNumberOfBytesWritten, + lpOverlapped); }
- if (lpOverLapped != NULL) + if (lpOverlapped != NULL) { - Offset.u.LowPart = lpOverLapped->Offset; - Offset.u.HighPart = lpOverLapped->OffsetHigh; - lpOverLapped->Internal = STATUS_PENDING; - hEvent = lpOverLapped->hEvent; - IoStatusBlock = (PIO_STATUS_BLOCK)lpOverLapped; - ptrOffset = &Offset; + LARGE_INTEGER Offset; + PVOID ApcContext; + + Offset.u.LowPart = lpOverlapped->Offset; + Offset.u.HighPart = lpOverlapped->OffsetHigh; + lpOverlapped->Internal = STATUS_PENDING; + ApcContext = (((ULONG_PTR)lpOverlapped->hEvent & 0x1) ? NULL : lpOverlapped); + + Status = NtWriteFile(hFile, + lpOverlapped->hEvent, + NULL, + ApcContext, + (PIO_STATUS_BLOCK)lpOverlapped, + (PVOID)lpBuffer, + nNumberOfBytesToWrite, + &Offset, + NULL); + + /* return FALSE in case of failure and pending operations! */ + if (!NT_SUCCESS(Status) || Status == STATUS_PENDING) + { + SetLastErrorByStatus(Status); + return FALSE; + } + + if (lpNumberOfBytesWritten != NULL) + { + *lpNumberOfBytesWritten = lpOverlapped->InternalHigh; + } } else { - ptrOffset = NULL; - IoStatusBlock = &IIosb; + IO_STATUS_BLOCK Iosb; + + Status = NtWriteFile(hFile, + NULL, + NULL, + NULL, + &Iosb, + (PVOID)lpBuffer, + nNumberOfBytesToWrite, + NULL, + NULL); + + /* wait in case operation is pending */ + if (Status == STATUS_PENDING) + { + Status = NtWaitForSingleObject(hFile, + FALSE, + NULL); + if (NT_SUCCESS(Status)) + { + Status = Iosb.Status; + } + } + + if (NT_SUCCESS(Status)) + { + /* lpNumberOfBytesWritten must not be NULL here, in fact Win doesn't + check that case either and crashes (only after the operation + completed) */ + *lpNumberOfBytesWritten = Iosb.Information; + } + else + { + SetLastErrorByStatus(Status); + return FALSE; + } } - - errCode = NtWriteFile(hFile, - hEvent, - NULL, - NULL, - IoStatusBlock, - (PVOID)lpBuffer, - nNumberOfBytesToWrite, - ptrOffset, - NULL); - - if (!NT_SUCCESS(errCode) || errCode == STATUS_PENDING) - { - SetLastErrorByStatus (errCode); - return FALSE; - }
- if (lpNumberOfBytesWritten != NULL ) - { - *lpNumberOfBytesWritten = IoStatusBlock->Information; - } - - DPRINT("WriteFile() succeeded\n"); - return(TRUE); + DPRINT("WriteFile() succeeded\n"); + return TRUE; }
@@ -102,87 +128,119 @@ * @implemented */ BOOL STDCALL -ReadFile( - HANDLE hFile, - LPVOID lpBuffer, - DWORD nNumberOfBytesToRead, - LPDWORD lpNumberOfBytesRead, - LPOVERLAPPED lpOverLapped - ) +ReadFile(IN HANDLE hFile, + IN LPVOID lpBuffer, + IN DWORD nNumberOfBytesToRead, + OUT LPDWORD lpNumberOfBytesRead OPTIONAL, + IN LPOVERLAPPED lpOverlapped OPTIONAL) { - HANDLE hEvent = NULL; - LARGE_INTEGER Offset; - NTSTATUS errCode; - IO_STATUS_BLOCK IIosb; - PIO_STATUS_BLOCK IoStatusBlock; - PLARGE_INTEGER ptrOffset; + NTSTATUS Status;
- if (lpOverLapped == NULL && lpNumberOfBytesRead == NULL) - { - SetLastError(ERROR_INVALID_PARAMETER); - } + DPRINT("ReadFile(hFile %x)\n", hFile);
- if (lpNumberOfBytesRead) - { - *lpNumberOfBytesRead = 0; - } - - if (IsConsoleHandle(hFile)) - { - return(ReadConsoleA(hFile, - lpBuffer, - nNumberOfBytesToRead, - lpNumberOfBytesRead, - NULL)); - } - - if (lpOverLapped) - { - Offset.u.LowPart = lpOverLapped->Offset; - Offset.u.HighPart = lpOverLapped->OffsetHigh; - lpOverLapped->Internal = STATUS_PENDING; - hEvent = lpOverLapped->hEvent; - IoStatusBlock = (PIO_STATUS_BLOCK)lpOverLapped; - ptrOffset = &Offset; - } - else - { - ptrOffset = NULL; - IoStatusBlock = &IIosb; - } - - errCode = NtReadFile(hFile, - hEvent, - NULL, - NULL, - IoStatusBlock, - lpBuffer, - nNumberOfBytesToRead, - ptrOffset, - NULL); + if (lpNumberOfBytesRead != NULL) + { + *lpNumberOfBytesRead = 0; + }
- /* for non-overlapped io, a end-of-file error is translated to - a successful operation with zero bytes read */ - if (!lpOverLapped && errCode == STATUS_END_OF_FILE) - { - /* IoStatusBlock->Information should contain zero in case of an error, but to be safe, - set lpNumberOfBytesRead to zero manually instead of using IoStatusBlock->Information */ - *lpNumberOfBytesRead = 0; - return TRUE; - } - - if (!NT_SUCCESS(errCode) || errCode == STATUS_PENDING) - { - SetLastErrorByStatus (errCode); - return FALSE; - } + if (IsConsoleHandle(hFile)) + { + return ReadConsoleA(hFile, + lpBuffer, + nNumberOfBytesToRead, + lpNumberOfBytesRead, + lpOverlapped); + }
- if (lpNumberOfBytesRead != NULL) - { - *lpNumberOfBytesRead = IoStatusBlock->Information; - } - - return(TRUE); + if (lpOverlapped != NULL) + { + LARGE_INTEGER Offset; + PVOID ApcContext; + + Offset.u.LowPart = lpOverlapped->Offset; + Offset.u.HighPart = lpOverlapped->OffsetHigh; + lpOverlapped->Internal = STATUS_PENDING; + ApcContext = (((ULONG_PTR)lpOverlapped->hEvent & 0x1) ? NULL : lpOverlapped); + + Status = NtReadFile(hFile, + lpOverlapped->hEvent, + NULL, + ApcContext, + (PIO_STATUS_BLOCK)lpOverlapped, + lpBuffer, + nNumberOfBytesToRead, + &Offset, + NULL); + + /* return FALSE in case of failure and pending operations! */ + if (!NT_SUCCESS(Status) || Status == STATUS_PENDING) + { + if (Status == STATUS_END_OF_FILE && + lpNumberOfBytesRead != NULL) + { + *lpNumberOfBytesRead = 0; + } + + SetLastErrorByStatus(Status); + return FALSE; + } + + if (lpNumberOfBytesRead != NULL) + { + *lpNumberOfBytesRead = lpOverlapped->InternalHigh; + } + } + else + { + IO_STATUS_BLOCK Iosb; + + Status = NtReadFile(hFile, + NULL, + NULL, + NULL, + &Iosb, + lpBuffer, + nNumberOfBytesToRead, + NULL, + NULL); + + /* wait in case operation is pending */ + if (Status == STATUS_PENDING) + { + Status = NtWaitForSingleObject(hFile, + FALSE, + NULL); + if (NT_SUCCESS(Status)) + { + Status = Iosb.Status; + } + } + + if (Status == STATUS_END_OF_FILE) + { + /* lpNumberOfBytesRead must not be NULL here, in fact Win doesn't + check that case either and crashes (only after the operation + completed) */ + *lpNumberOfBytesRead = Iosb.Information; + return TRUE; + } + + if (NT_SUCCESS(Status)) + { + /* lpNumberOfBytesRead must not be NULL here, in fact Win doesn't + check that case either and crashes (only after the operation + completed) */ + *lpNumberOfBytesRead = Iosb.Information; + } + else + { + SetLastErrorByStatus(Status); + return FALSE; + } + } + + DPRINT("ReadFile() succeeded\n"); + return TRUE; }
VOID STDCALL @@ -191,13 +249,13 @@ ULONG Reserved) { DWORD dwErrorCode; - LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine = + LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine = (LPOVERLAPPED_COMPLETION_ROUTINE)ApcContext;
dwErrorCode = RtlNtStatusToDosError(IoStatusBlock->Status); - lpCompletionRoutine(dwErrorCode, - IoStatusBlock->Information, - (LPOVERLAPPED)IoStatusBlock); + lpCompletionRoutine(dwErrorCode, + IoStatusBlock->Information, + (LPOVERLAPPED)IoStatusBlock); }
@@ -205,54 +263,36 @@ * @implemented */ BOOL STDCALL -WriteFileEx (HANDLE hFile, - LPCVOID lpBuffer, - DWORD nNumberOfBytesToWrite, - LPOVERLAPPED lpOverLapped, - LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) +WriteFileEx(IN HANDLE hFile, + IN LPCVOID lpBuffer, + IN DWORD nNumberOfBytesToWrite OPTIONAL, + IN LPOVERLAPPED lpOverlapped, + IN LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) { - LARGE_INTEGER Offset; - NTSTATUS errCode; - PIO_STATUS_BLOCK IoStatusBlock; - PLARGE_INTEGER ptrOffset; - - DPRINT("WriteFileEx(hFile %x)\n",hFile); - - Offset.u.LowPart = lpOverLapped->Offset; - Offset.u.HighPart = lpOverLapped->OffsetHigh; - lpOverLapped->Internal = STATUS_PENDING; - IoStatusBlock = (PIO_STATUS_BLOCK)lpOverLapped; - ptrOffset = &Offset; + NTSTATUS Status;
- errCode = NtWriteFile(hFile, - NULL, - ApcRoutine, - lpCompletionRoutine, - IoStatusBlock, - (PVOID)lpBuffer, - nNumberOfBytesToWrite, - ptrOffset, - NULL); - - if (NT_ERROR(errCode)) + Offset.u.LowPart = lpOverlapped->Offset; + Offset.u.HighPart = lpOverlapped->OffsetHigh; + lpOverlapped->Internal = STATUS_PENDING; + + Status = NtWriteFile(hFile, + NULL, + ApcRoutine, + lpCompletionRoutine, + (PIO_STATUS_BLOCK)lpOverlapped, + (PVOID)lpBuffer, + nNumberOfBytesToWrite, + &Offset, + NULL); + + if (!NT_SUCCESS(Status)) { - SetLastErrorByStatus (errCode); - DPRINT("WriteFileEx() failed\n"); + SetLastErrorByStatus(Status); return FALSE; } - - if (NT_WARNING(errCode)) - { - SetLastErrorByStatus(errCode); - } - else - { - SetLastError(0); - } - - DPRINT("WriteFileEx() succeeded\n"); - return(TRUE); + + return TRUE; }
@@ -260,49 +300,36 @@ * @implemented */ BOOL STDCALL -ReadFileEx(HANDLE hFile, - LPVOID lpBuffer, - DWORD nNumberOfBytesToRead, - LPOVERLAPPED lpOverLapped, - LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) +ReadFileEx(IN HANDLE hFile, + IN LPVOID lpBuffer, + IN DWORD nNumberOfBytesToRead OPTIONAL, + IN LPOVERLAPPED lpOverlapped, + IN LPOVERLAPPED_COMPLETION_ROUTINE lpCompletionRoutine) { LARGE_INTEGER Offset; - NTSTATUS errCode; - PIO_STATUS_BLOCK IoStatusBlock; - PLARGE_INTEGER ptrOffset; + NTSTATUS Status;
- Offset.u.LowPart = lpOverLapped->Offset; - Offset.u.HighPart = lpOverLapped->OffsetHigh; - lpOverLapped->Internal = STATUS_PENDING; - IoStatusBlock = (PIO_STATUS_BLOCK)lpOverLapped; - ptrOffset = &Offset; + Offset.u.LowPart = lpOverlapped->Offset; + Offset.u.HighPart = lpOverlapped->OffsetHigh; + lpOverlapped->Internal = STATUS_PENDING;
- errCode = NtReadFile(hFile, - NULL, - ApcRoutine, - lpCompletionRoutine, - IoStatusBlock, - lpBuffer, - nNumberOfBytesToRead, - ptrOffset, - NULL); + Status = NtReadFile(hFile, + NULL, + ApcRoutine, + lpCompletionRoutine, + (PIO_STATUS_BLOCK)lpOverlapped, + lpBuffer, + nNumberOfBytesToRead, + &Offset, + NULL);
- if (NT_ERROR(errCode)) + if (!NT_SUCCESS(Status)) { - SetLastErrorByStatus (errCode); - return(FALSE); + SetLastErrorByStatus(Status); + return FALSE; }
- if (NT_WARNING(errCode)) - { - SetLastErrorByStatus(errCode); - } - else - { - SetLastError(0); - } - - return(TRUE); + return TRUE; }
/* EOF */
weiden@svn.reactos.com wrote:
- fixed Read/WriteFile(Ex) and properly wait on completion for synchronous operations
- prevent completion port notification by not passing an APC context to the kernel when the low-order bit of the event handle is set (for asynchronous operations)
Modified: trunk/reactos/lib/kernel32/file/rw.c
Hi,
this changes breaks compiling ros on ros. I get the following debug output for 'make clean':
Page Fault Exception: 14(7) Processor: 0 CS:EIP 1b:7c90acc0 <ntdll.dll:acc0 (rtl/exception.c:89 (KiUserExceptionDispatcher))> cr2 970000 cr3 1ccdb000 Proc: 81720ab8 Pid: 120 <_make.EX> Thrd: 817298f0 Tid: 124 DS 23 ES 23 FS 3b GS 23 EAX: 00970000 EBX: 008708a0 ECX: 0074f118 EDX: 00970000 EBP: 0074f1c8 ESI: 008708a0 ESP: ad802d74 EDI: 00870968 EFLAGS: 00010206 Frames: <msvcrt.dll:d24c (stdio/filbuf.c:60 (_filbuf))> <msvcrt.dll:1c416 (stdio/getc.c:56 (getc))> <msvcrt.dll:1b159 (stdio/fgets.c:38 (fgets))> <_make.EXE:19efd> <_make.EXE:168c1> <_make.EXE:1643c> <_make.EXE:17904> <_make.EXE:1643c> <_make.EXE:1621d> <_make.EXE:12903> <_make.EXE:1189> <_make.EXE:1018> <kernel32.dll:28ae9 (process/create.c:344 (BaseProcessStart))> <DEADBEEF> Page Fault Exception: 14(6) Processor: 0 CS:EIP 1b:7c90acc0 <ntdll.dll:acc0 (rtl/exception.c:89 (KiUserExceptionDispatcher))> cr2 5f00860c cr3 1ccdb000 Proc: 81720ab8 Pid: 120 <_make.EX> Thrd: 817298f0 Tid: 124 DS 23 ES 23 FS 3b GS 23 EAX: 48544150 EBX: 00000013 ECX: 00000013 EDX: 5f008600 EBP: 0074e6a0 ESI: 0074e798 ESP: ad802d74 EDI: 00000023 EFLAGS: 00010206 Frames: <msvcrt.dll:cbf9 (stdlib/malloc.c:35 (malloc))> <_make.EXE:285d1> <_make.EXE:276fe> <_make.EXE:24a3e> <_make.EXE:2464d> <_make.EXE:241c6> <_make.EXE:14d0d> <kernel32.dll:28a10 (process/create.c:295 (_except_handler))> <ntdll.dll:22a08 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccOUaaaa.s:167 (RtlpCaptureContext))> <ntdll.dll:21af6 (i386/exception.c:173 (RtlpDispatchException))> <ntdll.dll:acfe (rtl/exception.c:100 (KiUserExceptionDispatcher))> <0> Unhandled exception Address: 780139df G:\ReactOS\system32\msvcrt.dll CS:EIP 1b:780139df DS 23 ES 23 FS 3b GS 23 EAX: 00970000 EBX: 008708a0 ECX: 0074f118 EDX: 00970000 EBP: 0074f1c8 ESI: 008708a0 ESP: 0074f1a0 EDI: 00870968 EFLAGS: 00010206 Frames: 78000000+d24c G:\ReactOS\system32\msvcrt.dll 78000000+1c416 G:\ReactOS\system32\msvcrt.dll 78000000+1b159 G:\ReactOS\system32\msvcrt.dll 400000+19efd G:\ReactOS\bin_make.EXE 400000+168c1 G:\ReactOS\bin_make.EXE 400000+1643c G:\ReactOS\bin_make.EXE 400000+17904 G:\ReactOS\bin_make.EXE 400000+1643c G:\ReactOS\bin_make.EXE 400000+1621d G:\ReactOS\bin_make.EXE 400000+12903 G:\ReactOS\bin_make.EXE 400000+1189 G:\ReactOS\bin_make.EXE 400000+1018 G:\ReactOS\bin_make.EXE 7c800000+28ae9 G:\ReactOS\system32\kernel32.dll Page Fault Exception: 14(6) Processor: 0 CS:EIP 1b:7c90acc0 <ntdll.dll:acc0 (rtl/exception.c:89 (KiUserExceptionDispatcher))> cr2 5f48544d cr3 1ccdb000 Proc: 81720ab8 Pid: 120 <_make.EX> Thrd: 817298f0 Tid: 124 DS 23 ES 23 FS 3b GS 23 EAX: 545f4f54 EBX: 00870a38 ECX: 00871a48 EDX: 5f485441 EBP: 0074ea9c ESI: 0074ee84 ESP: ad802d74 EDI: 00000000 EFLAGS: 00010206 Frames: <ntdll.dll:167fa (heap.c:453 (HEAP_MakeInUseBlockFree))> <ntdll.dll:1788e (heap.c:1277 (RtlFreeHeap))> <msvcrt.dll:cc17 (stdlib/malloc.c:43 (free))> <msvcrt.dll:1afba (stdio/fclose.c:39 (fclose))> <msvcrt.dll:cefd (stdio/allocfil.c:88 (_fcloseall))> <msvcrt.dll:1028 (dllmain.c:121 (DllMain))> <ntdll.dll:4969 (ldr/utils.c:179 (LdrpCallDllEntry))> <ntdll.dll:8177 (ldr/utils.c:2443 (LdrpDetachProcess))> <ntdll.dll:8478 (ldr/utils.c:2558 (LdrShutdownProcess))> <kernel32.dll:27f49 (process/proc.c:582 (ExitProcess))> <kernel32.dll:28a6d (process/create.c:308 (_except_handler))> <ntdll.dll:22a08 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccOUaaaa.s:167 (RtlpCaptureContext))> <ntdll.dll:21af6 (i386/exception.c:173 (RtlpDispatchException))> <ntdll.dll:acfe (rtl/exception.c:100 (KiUserExceptionDispatcher))> <0> Page Fault Exception: 14(6) Processor: 0 CS:EIP 1b:7c90acc0 <ntdll.dll:acc0 (rtl/exception.c:89 (KiUserExceptionDispatcher))> cr2 5f00860c cr3 1ccdb000 Proc: 81720ab8 Pid: 120 <_make.EX> Thrd: 817298f0 Tid: 124 DS 23 ES 23 FS 3b GS 23 EAX: 48544150 EBX: 00000013 ECX: 00000013 EDX: 5f008600 EBP: 0074df84 ESI: 0074e07c ESP: ad802d74 EDI: 00000023 EFLAGS: 00010206 Frames: <msvcrt.dll:cbf9 (stdlib/malloc.c:35 (malloc))> <_make.EXE:285d1> <_make.EXE:276fe> <_make.EXE:24a3e> <_make.EXE:2464d> <_make.EXE:241c6> <_make.EXE:14d0d> <kernel32.dll:28a10 (process/create.c:295 (_except_handler))> <ntdll.dll:22a08 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccOUaaaa.s:167 (RtlpCaptureContext))> <ntdll.dll:21af6 (i386/exception.c:173 (RtlpDispatchException))> <ntdll.dll:acfe (rtl/exception.c:100 (KiUserExceptionDispatcher))> <0> Unhandled exception Address: 7c9166de G:\ReactOS\system32\ntdll.dll CS:EIP 1b:7c9166de DS 23 ES 23 FS 3b GS 23 EAX: 545f4f54 EBX: 00870a38 ECX: 00871a48 EDX: 5f485441 EBP: 0074ea9c ESI: 0074ee84 ESP: 0074ea84 EDI: 00000000 EFLAGS: 00010206 Frames: 7c900000+167fa G:\ReactOS\system32\ntdll.dll 7c900000+1788e G:\ReactOS\system32\ntdll.dll 78000000+cc17 G:\ReactOS\system32\msvcrt.dll 78000000+1afba G:\ReactOS\system32\msvcrt.dll 78000000+cefd G:\ReactOS\system32\msvcrt.dll 78000000+1028 G:\ReactOS\system32\msvcrt.dll 7c900000+4969 G:\ReactOS\system32\ntdll.dll 7c900000+8177 G:\ReactOS\system32\ntdll.dll 7c900000+8478 G:\ReactOS\system32\ntdll.dll 7c800000+27f49 G:\ReactOS\system32\kernel32.dll 7c800000+28a6d G:\ReactOS\system32\kernel32.dll 7c900000+22a08 G:\ReactOS\system32\ntdll.dll 7c900000+21af6 G:\ReactOS\system32\ntdll.dll 7c900000+acfe G:\ReactOS\system32\ntdll.dll Page Fault Exception: 14(4) Processor: 0 CS:EIP 1b:7c90acc0 (ke/i386/exp.c:224) Stack underflow (tf->esp acfffff8 Limit ad000000) (ke/i386/exp.c:230) 816ae250 816ae250 Stack Segment Fault Exception: 12(0) CS:EIP 8:80054eb7 <ntoskrnl.exe:54eb7 (mm/aspace.c:34 (MmLockAddressSpace))> cr2 acfffff4 cr3 1cef5000 Proc: 816ae250 Pid: 110 <cmd.exe> Thrd: 816b9410 Tid: 118 DS 10 ES 10 FS 30 GS 10 EAX: 816ae4e8 EBX: 00000008 ECX: 816ae4ec EDX: 00000000 EBP: ad000000 ESI: 0000000e ESP: acfffff8 EDI: 816b9410 EFLAGS: 00010282 kESP acfffff8 kernel stack base ad000000 Frames: <ntoskrnl.exe:5cf66 (mm/mm.c:353 (MmNotPresentFault))> <ntoskrnl.exe:adbb (mm/i386/pfault.c:130 (MmPageFault))> <ntoskrnl.exe:ad06 (mm/i386/pfault.c:81 (KiPageFaultHandler))> <ntoskrnl.exe:33f3 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccaKaaaa.s:132 ())> <ntoskrnl.exe:9a4a3 (i386/exception.c:153 (RtlpDispatchException))> <ntoskrnl.exe:c8a9 (ke/catch.c:194 (KiDispatchException))> <ntoskrnl.exe:1229 (ke/i386/exp.c:176 (KiKernelTrapHandler))> <ntoskrnl.exe:ad55 (mm/i386/pfault.c:99 (KiPageFaultHandler))> <ntoskrnl.exe:33f3 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccaKaaaa.s:132 ())> <ntoskrnl.exe:9a4a3 (i386/exception.c:153 (RtlpDispatchException))> <ntoskrnl.exe:c8a9 (ke/catch.c:194 (KiDispatchException))> <ntoskrnl.exe:1229 (ke/i386/exp.c:176 (KiKernelTrapHandler))> <ntoskrnl.exe:ad55 (mm/i386/pfault.c:99 (KiPageFaultHandler))> <ntoskrnl.exe:33f3 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccaKaaaa.s:132 ())> <ntoskrnl.exe:9a4a3 (i386/exception.c:153 (RtlpDispatchException))> <ntoskrnl.exe:c8a9 (ke/catch.c:194 (KiDispatchException))> <ntoskrnl.exe:1229 (ke/i386/exp.c:176 (KiKernelTrapHandler))> <ntoskrnl.exe:ad55 (mm/i386/pfault.c:99 (KiPageFaultHandler))> <ntoskrnl.exe:33f3 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccaKaaaa.s:132 ())> <ntoskrnl.exe:9a4a3 (i386/exception.c:153 (RtlpDispatchException))> <ntoskrnl.exe:c8a9 (ke/catch.c:194 (KiDispatchException))> <ntoskrnl.exe:1229 (ke/i386/exp.c:176 (KiKernelTrapHandler))> <ntoskrnl.exe:ad55 (mm/i386/pfault.c:99 (KiPageFaultHandler))> <ntoskrnl.exe:33f3 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccaKaaaa.s:132 ())> <ntoskrnl.exe:8c197 (kdbg/kdb_symbols.c:81 (KdbpSymFindUserModule))> <ntoskrnl.exe:8c382 (kdbg/kdb_symbols.c:141 (KdbpSymFindModule))> <ntoskrnl.exe:8c3a7 (kdbg/kdb_symbols.c:160 (KdbpSymFindModuleByAddress))> <ntoskrnl.exe:8c40a (kdbg/kdb_symbols.c:222 (KdbSymPrintAddress))> <ntoskrnl.exe:1697 (ke/i386/exp.c:419 (KiDumpTrapFrame))> <ntoskrnl.exe:c7d6 (ke/catch.c:154 (KiDispatchException))> <ntoskrnl.exe:6ace (ke/i386/usertrap.c:120 (KiUserTrapHandler))> <ntoskrnl.exe:ad3c (mm/i386/pfault.c:95 (KiPageFaultHandler))> <ntoskrnl.exe:33f3 (D:\DOKUME~1\hb\LOKALE~1\Temp/ccaKaaaa.s:132 ())>
- Hartmut
Hartmut Birr wrote:
this changes breaks compiling ros on ros. I get the following debug output for 'make clean':
does 15067 fix this problem?
Best Regards,
Thomas
Thomas Weidenmueller wrote:
Hartmut Birr wrote:
this changes breaks compiling ros on ros. I get the following debug output for 'make clean':
does 15067 fix this problem?
Yes, that solves my problem.
- Hartmut