From e927567352f8069433d3f1ad8db0a5b3e3cfe9df Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Jun 2026 04:15:01 +0000 Subject: [PATCH 1/2] Initial plan From c51c01696e94c7bef6b2476a8e1b0c598eeb8454 Mon Sep 17 00:00:00 2001 From: "copilot-swe-agent[bot]" <198982749+Copilot@users.noreply.github.com> Date: Sun, 7 Jun 2026 04:19:25 +0000 Subject: [PATCH 2/2] Delete MapViewOfFile/test1 PAL test that uses undeclared FILE_FLAG_NO_BUFFERING Co-authored-by: jkotas <6668460+jkotas@users.noreply.github.com> --- src/coreclr/pal/tests/palsuite/CMakeLists.txt | 1 - .../pal/tests/palsuite/compilableTests.txt | 1 - .../MapViewOfFile/test1/MapViewOfFile.cpp | 244 ------------------ .../pal/tests/palsuite/paltestlist.txt | 1 - .../pal/tests/palsuite/wasm/index.html | 1 - 5 files changed, 248 deletions(-) delete mode 100644 src/coreclr/pal/tests/palsuite/filemapping_memmgt/MapViewOfFile/test1/MapViewOfFile.cpp diff --git a/src/coreclr/pal/tests/palsuite/CMakeLists.txt b/src/coreclr/pal/tests/palsuite/CMakeLists.txt index 8aa8dc60c4bea9..b80c283430f6e2 100644 --- a/src/coreclr/pal/tests/palsuite/CMakeLists.txt +++ b/src/coreclr/pal/tests/palsuite/CMakeLists.txt @@ -177,7 +177,6 @@ add_executable_clr(paltests # filemapping_memmgt/GetProcAddress/test1/testlib.cpp filemapping_memmgt/GetProcAddress/test2/test2.cpp # filemapping_memmgt/GetProcAddress/test2/testlib.cpp - filemapping_memmgt/MapViewOfFile/test1/MapViewOfFile.cpp filemapping_memmgt/MapViewOfFile/test2/MapViewOfFile.cpp filemapping_memmgt/MapViewOfFile/test3/MapViewOfFile.cpp filemapping_memmgt/MapViewOfFile/test4/mapviewoffile.cpp diff --git a/src/coreclr/pal/tests/palsuite/compilableTests.txt b/src/coreclr/pal/tests/palsuite/compilableTests.txt index 1500145501b791..558daa57a5f36d 100644 --- a/src/coreclr/pal/tests/palsuite/compilableTests.txt +++ b/src/coreclr/pal/tests/palsuite/compilableTests.txt @@ -113,7 +113,6 @@ filemapping_memmgt/GetModuleFileNameW/test1/paltest_getmodulefilenamew_test1 filemapping_memmgt/GetModuleFileNameW/test2/paltest_getmodulefilenamew_test2 filemapping_memmgt/GetProcAddress/test1/paltest_getprocaddress_test1 filemapping_memmgt/GetProcAddress/test2/paltest_getprocaddress_test2 -filemapping_memmgt/MapViewOfFile/test1/paltest_mapviewoffile_test1 filemapping_memmgt/MapViewOfFile/test2/paltest_mapviewoffile_test2 filemapping_memmgt/MapViewOfFile/test3/paltest_mapviewoffile_test3 filemapping_memmgt/MapViewOfFile/test4/paltest_mapviewoffile_test4 diff --git a/src/coreclr/pal/tests/palsuite/filemapping_memmgt/MapViewOfFile/test1/MapViewOfFile.cpp b/src/coreclr/pal/tests/palsuite/filemapping_memmgt/MapViewOfFile/test1/MapViewOfFile.cpp deleted file mode 100644 index f6b5989ee6d27d..00000000000000 --- a/src/coreclr/pal/tests/palsuite/filemapping_memmgt/MapViewOfFile/test1/MapViewOfFile.cpp +++ /dev/null @@ -1,244 +0,0 @@ -// Licensed to the .NET Foundation under one or more agreements. -// The .NET Foundation licenses this file to you under the MIT license. - -/*============================================================= -** -** Source: MapViewOfFile.c -** -** -** Purpose: Positive test the MapViewOfFile API. -** Call MapViewOfFile with access FILE_MAP_READ. -** -** -**============================================================*/ -#include -#define MAPPINGSIZE 8192 - -// This test is special - it doesn't work when the file is created on a tmpfs, like the /tmp folder -// that is the default location for running PAL tests. The reason is that on such filesystem, -// it is not possible to create file with FILE_FLAG_NO_BUFFERING. -// So we explicitly use the /var/tmp that cannot be on tmpfs, since it it persistent over reboots. - -#ifdef __ANDROID__ -// On Android, "/var/tmp/" doesn't exist; temporary files should go to /data/local/tmp/ -#define TEMP_DIRECTORY_PATH "/data/local/tmp/" -#elif defined(__HAIKU__) -// "/var/tmp/" also doesn't exist on Haiku. -#define TEMP_DIRECTORY_PATH "/boot/system/cache/" -#else -#define TEMP_DIRECTORY_PATH "/var/tmp/" -#endif - -PALTEST(filemapping_memmgt_MapViewOfFile_test1_paltest_mapviewoffile_test1, "filemapping_memmgt/MapViewOfFile/test1/paltest_mapviewoffile_test1") -{ - - HANDLE hFile = INVALID_HANDLE_VALUE; - LPSTR buf = NULL; - CHAR ch[MAPPINGSIZE]; - CHAR* lpFilePath = TEMP_DIRECTORY_PATH"tst"; - DWORD dwBytesWritten = 0; - DWORD dwInitialSize = 0; - DWORD dwFinalSize = 0; - BOOL bRetVal = FALSE; - - HANDLE hFileMapping = 0; - LPVOID lpMapViewAddress = NULL; - - /* Initialize the PAL environment. - */ - if( 0 != PAL_Initialize(argc, argv)) - { - return FAIL; - } - - /* Create a file handle with CreateFile. - */ - hFile = CreateFile( lpFilePath, - GENERIC_WRITE|GENERIC_READ, - FILE_SHARE_READ|FILE_SHARE_WRITE, - NULL, - OPEN_ALWAYS, - FILE_ATTRIBUTE_NORMAL | FILE_FLAG_NO_BUFFERING, - NULL); - - if (hFile == INVALID_HANDLE_VALUE) - { - Fail( "ERROR: %u :unable to create file \"%s\".\n", - GetLastError(), lpFilePath); - } - - /* Get the initial size of file, for latter tests. - */ - dwInitialSize = GetFileSize (hFile, NULL); - if ( INVALID_FILE_SIZE == dwInitialSize ) - { - Fail("ERROR:%u: The created file \"%s\" has an invalid " - "file size.\n",GetLastError(),lpFilePath); - } - - /* - * An application must meet certain requirements when working - * with files opened with FILE_FLAG_NO_BUFFERING: - * File access must begin at byte offsets within the file that - * are integer multiples of the volume's sector size. To determine a - * volume's sector size, call the GetDiskFreeSpace function. - * - * File access must be for numbers of bytes that are integer - * multiples of the volume's sector size. For example, if the - * sector size is 512 bytes, an application can request reads and - * writes of 512, 1024, or 2048 bytes, but not of 335, 981, or 7171 bytes. - * - * Buffer addresses for read and write operations must be sector - * aligned (aligned on addresses in memory that are integer multiples - * of the volume's sector size). One way to sector align buffers is to use the - * VirtualAlloc function to allocate the buffers. This function allocates memory - * that is aligned on addresses that are integer multiples of the system's page size. - * Because both page and volume sector sizes are powers of 2, memory aligned by multiples - * of the system's page size is also aligned by multiples of the volume's sector size. - */ - buf = (LPSTR)VirtualAlloc( NULL, /* Let the system decide the location. */ - MAPPINGSIZE / 2, /* One page, the smallest you can request */ - MEM_COMMIT, /* Reserve and commit in one pass */ - PAGE_READWRITE ); /* Allow reading and writting. */ - - if ( NULL == buf ) - { - Trace( "VirtualAlloc failed! LastError=%d\n", GetLastError() ); - CloseHandle( hFile ); - Fail(""); - } - - - /* - * Write to the File handle. - * The reminder will be padded with zeros. - */ - strncpy( buf, - "thats not a test string....THIS is a test string", - MAPPINGSIZE / 2 ); - - bRetVal = WriteFile(hFile, - buf, - MAPPINGSIZE / 2, - &dwBytesWritten, - NULL); - - if ( FALSE == bRetVal ) - { - Trace( "ERROR: %u :unable to write to file handle hFile=0x%lx\n", - GetLastError(), hFile); - CloseHandle(hFile); - VirtualFree( buf, 0, MEM_RELEASE ); - Fail(""); - } - - /* Create a unnamed file-mapping object with file handle FileHandle - * and with PAGE_READWRITE protection. - */ - hFileMapping = CreateFileMapping( hFile, - NULL, /*not inherited*/ - PAGE_READWRITE, /*read and wite*/ - 0, /*high-order of object size*/ - MAPPINGSIZE, /*low-orger of object size*/ - NULL); /*unnamed object*/ - - if( NULL == hFileMapping ) - { - Trace("ERROR:%u: Failed to create File Mapping.\n", GetLastError()); - CloseHandle(hFile); - VirtualFree( buf, 0, MEM_RELEASE ); - Fail(""); - } - - /* maps a view of a file into the address space of the calling process. - */ - lpMapViewAddress = MapViewOfFile( hFileMapping, - FILE_MAP_READ, /* access code */ - 0, /*high order offset*/ - 0, /*low order offset*/ - MAPPINGSIZE); /* number of bytes for map */ - - if( NULL == lpMapViewAddress ) - { - Trace( "ERROR:%u: Failed to call MapViewOfFile API to map" - " a view of file!\n", GetLastError()); - CloseHandle(hFile); - CloseHandle(hFileMapping); - VirtualFree( buf, 0, MEM_RELEASE ); - Fail(""); - } - - /* Verify that the size of the file has increased to - * accomidate the MapView. - */ - dwFinalSize = GetFileSize (hFile, NULL); - if ( (dwFinalSize <= dwInitialSize) && (dwFinalSize != MAPPINGSIZE)) - { - - CloseHandle(hFile); - CloseHandle(hFileMapping); - VirtualFree( buf, 0, MEM_RELEASE ); - UnmapViewOfFile(lpMapViewAddress); - - Fail( "ERROR: Size of the file was expected to " - "increase from \"%d\", to \"%d\".\n ", - dwInitialSize, - dwFinalSize); - } - - /* Copy the MapViewOfFile to buffer, so we can - * compare with value read from file directly. - */ - memcpy(ch, (LPCSTR)lpMapViewAddress, MAPPINGSIZE); - if (memcmp(ch, buf, strlen(buf)) != 0) - { - CloseHandle(hFile); - CloseHandle(hFileMapping); - UnmapViewOfFile(lpMapViewAddress) ; - VirtualFree( buf, 0, MEM_RELEASE ); - - Fail( "ERROR: MapViewOfFile not equal to file contents " - "retrieved \"%s\", expected \"%s\".\n", - ch, - buf); - } - - /* Unmap the view of file. - */ - if( FALSE == UnmapViewOfFile(lpMapViewAddress) ) - { - Trace( "\nFailed to call UnmapViewOfFile API to unmap the " - "view of a file, error code=%u\n", GetLastError()); - CloseHandle(hFile); - CloseHandle(hFileMapping); - VirtualFree( buf, 0, MEM_RELEASE ); - Fail(""); - } - - /* Close handle to create file. - */ - if( FALSE == CloseHandle(hFile) ) - { - Trace( "ERROR:%u:Failed to call CloseHandle API to close a file handle.", - GetLastError()); - CloseHandle(hFileMapping); - VirtualFree( buf, 0, MEM_RELEASE ); - Fail(""); - } - - if( FALSE == CloseHandle(hFileMapping) ) - { - Trace( "ERROR:%u:Failed to call CloseHandle API to close a " - "filemapping handle.",GetLastError()); - VirtualFree( buf, 0, MEM_RELEASE ); - Fail(""); - } - - VirtualFree( buf, 0, MEM_RELEASE ); - - remove(lpFilePath); - - PAL_Terminate(); - return PASS; -} - diff --git a/src/coreclr/pal/tests/palsuite/paltestlist.txt b/src/coreclr/pal/tests/palsuite/paltestlist.txt index 9c080cc4142f36..ffc7d0d00b7173 100644 --- a/src/coreclr/pal/tests/palsuite/paltestlist.txt +++ b/src/coreclr/pal/tests/palsuite/paltestlist.txt @@ -104,7 +104,6 @@ filemapping_memmgt/CreateFileMappingW/test9/paltest_createfilemappingw_test9 filemapping_memmgt/FreeLibrary/test2/paltest_freelibrary_test2 filemapping_memmgt/GetModuleFileNameA/test2/paltest_getmodulefilenamea_test2 filemapping_memmgt/GetModuleFileNameW/test2/paltest_getmodulefilenamew_test2 -filemapping_memmgt/MapViewOfFile/test1/paltest_mapviewoffile_test1 filemapping_memmgt/MapViewOfFile/test2/paltest_mapviewoffile_test2 filemapping_memmgt/MapViewOfFile/test3/paltest_mapviewoffile_test3 filemapping_memmgt/MapViewOfFile/test4/paltest_mapviewoffile_test4 diff --git a/src/coreclr/pal/tests/palsuite/wasm/index.html b/src/coreclr/pal/tests/palsuite/wasm/index.html index c2c04442b21894..38fd0a6b39b1e1 100644 --- a/src/coreclr/pal/tests/palsuite/wasm/index.html +++ b/src/coreclr/pal/tests/palsuite/wasm/index.html @@ -13,7 +13,6 @@

PAL Tests WASM

"exception_handling/RaiseException", // 3 tests, we don't have stack unwinding available from C native code "file_io/WriteFile/test5/paltest_writefile_test5", // infinite loop "file_io/SetFilePointer/test7/paltest_setfilepointer_test7", // tries to allocate 4GB of memory in MEMFS when run with chromedriver - "filemapping_memmgt/MapViewOfFile/test1/paltest_mapviewoffile_test1", // infinite loop and then chrome crashes "filemapping_memmgt/ProbeMemory/ProbeMemory_neg1/paltest_probememory_probememory_neg1", "miscellaneous/InterlockedCompareExchange/test2/paltest_interlockedcompareexchange_test2", // MT test "miscellaneous/InterlockedDecrement/test2/paltest_interlockeddecrement_test2", // MT test