From: Zebediah Figura zfigura@codeweavers.com
Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=54342 --- dlls/ws2_32/tests/sock.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-)
diff --git a/dlls/ws2_32/tests/sock.c b/dlls/ws2_32/tests/sock.c index fc3c7053aa1..ce916e9a653 100644 --- a/dlls/ws2_32/tests/sock.c +++ b/dlls/ws2_32/tests/sock.c @@ -7626,24 +7626,29 @@ static void test_WSARecv(void)
memset(&ov, 0, sizeof(ov)); flags = 0; - bufs[0].len = 2; + bufs[0].len = 1; bufs[0].buf = buf;
- /* Send 4 bytes and receive in two calls of 2 */ + /* Send 2 bytes and receive in two calls of 1 */ SetLastError(0xdeadbeef); - iret = send(src, "test", 4, 0); - ok(iret == 4, "Expected 4, got %d\n", iret); + iret = send(src, "ab", 2, 0); + ok(iret == 2, "Expected 2, got %d\n", iret); ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %ld\n", GetLastError()); SetLastError(0xdeadbeef); bytesReturned = 0xdeadbeef;
+ /* Non-overlapped WSARecv() performs an alertable wait (tested below), but + * not if it completes synchronously. Make sure it completes synchronously + * by polling for input. */ + check_poll_mask(dest, POLLRDNORM, POLLRDNORM); + apc_count = 0; dwret = QueueUserAPC(apc_func, GetCurrentThread(), (ULONG_PTR)&apc_count); ok(dwret, "QueueUserAPC returned %lu\n", dwret);
iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, NULL, NULL); ok(!iret, "Expected 0, got %d\n", iret); - ok(bytesReturned == 2, "Expected 2, got %ld\n", bytesReturned); + ok(bytesReturned == 1, "Expected 2, got %ld\n", bytesReturned); ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %ld\n", GetLastError());
ok(!apc_count, "got apc_count %u.\n", apc_count); @@ -7654,7 +7659,7 @@ static void test_WSARecv(void) bytesReturned = 0xdeadbeef; iret = WSARecv(dest, bufs, 1, &bytesReturned, &flags, NULL, NULL); ok(!iret, "Expected 0, got %d\n", iret); - ok(bytesReturned == 2, "Expected 2, got %ld\n", bytesReturned); + ok(bytesReturned == 1, "Expected 2, got %ld\n", bytesReturned); ok(GetLastError() == ERROR_SUCCESS, "Expected 0, got %ld\n", GetLastError());
bufs[0].len = 4;
From: Zebediah Figura zfigura@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54113 --- dlls/ws2_32/tests/afd.c | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-)
diff --git a/dlls/ws2_32/tests/afd.c b/dlls/ws2_32/tests/afd.c index b856caee853..b011c0da69f 100644 --- a/dlls/ws2_32/tests/afd.c +++ b/dlls/ws2_32/tests/afd.c @@ -2058,17 +2058,20 @@ static void test_get_events_reset(void)
tcp_socketpair(&client, &server);
- ret = WSAEventSelect(client, event, FD_ACCEPT | FD_CONNECT | FD_CLOSE | FD_OOB | FD_READ | FD_WRITE); + ret = WSAEventSelect(client, event, FD_ACCEPT | FD_CLOSE | FD_OOB | FD_READ); ok(!ret, "got error %lu\n", GetLastError());
close_with_rst(server);
+ ret = WaitForSingleObject(event, 1000); + ok(!ret, "got %d\n", ret); + memset(¶ms, 0xcc, sizeof(params)); memset(&io, 0xcc, sizeof(io)); ret = NtDeviceIoControlFile((HANDLE)client, NULL, NULL, NULL, &io, IOCTL_AFD_GET_EVENTS, NULL, 0, ¶ms, sizeof(params)); ok(!ret, "got %#x\n", ret); - ok(params.flags == (AFD_POLL_RESET | AFD_POLL_CONNECT | AFD_POLL_WRITE), "got flags %#x\n", params.flags); + ok(params.flags == AFD_POLL_RESET, "got flags %#x\n", params.flags); for (i = 0; i < ARRAY_SIZE(params.status); ++i) ok(!params.status[i], "got status[%u] %#x\n", i, params.status[i]);
@@ -2076,17 +2079,21 @@ static void test_get_events_reset(void)
tcp_socketpair(&client, &server);
- ret = WSAEventSelect(server, event, FD_ACCEPT | FD_CONNECT | FD_CLOSE | FD_OOB | FD_READ | FD_WRITE); + ResetEvent(event); + ret = WSAEventSelect(server, event, FD_ACCEPT | FD_CLOSE | FD_OOB | FD_READ); ok(!ret, "got error %lu\n", GetLastError());
close_with_rst(client);
+ ret = WaitForSingleObject(event, 1000); + ok(!ret, "got %d\n", ret); + memset(¶ms, 0xcc, sizeof(params)); memset(&io, 0xcc, sizeof(io)); ret = NtDeviceIoControlFile((HANDLE)server, NULL, NULL, NULL, &io, IOCTL_AFD_GET_EVENTS, NULL, 0, ¶ms, sizeof(params)); ok(!ret, "got %#x\n", ret); - ok(params.flags == (AFD_POLL_RESET | AFD_POLL_WRITE), "got flags %#x\n", params.flags); + ok(params.flags == AFD_POLL_RESET, "got flags %#x\n", params.flags); for (i = 0; i < ARRAY_SIZE(params.status); ++i) ok(!params.status[i], "got status[%u] %#x\n", i, params.status[i]);
From: Zebediah Figura zfigura@codeweavers.com
This gives different results on llvmpipe.
Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=53213 --- dlls/d3d10core/tests/d3d10core.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d10core/tests/d3d10core.c b/dlls/d3d10core/tests/d3d10core.c index b337c05f056..a8283da9c18 100644 --- a/dlls/d3d10core/tests/d3d10core.c +++ b/dlls/d3d10core/tests/d3d10core.c @@ -7448,10 +7448,10 @@ static void test_texture(void) {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, -1.0f, rgba_level_0}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.0f, rgba_level_0}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.4f, rgba_level_0}, - {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.5f, level_1_colors}, + {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.6f, level_1_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.0f, level_1_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.4f, level_1_colors}, - {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.5f, level_2_colors}, + {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.6f, level_2_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 2.0f, level_2_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 3.0f, level_2_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 4.0f, level_2_colors},
From: Zebediah Figura zfigura@codeweavers.com
This gives different results on llvmpipe.
Wine-Bug: https://bugs.winehq.org//show_bug.cgi?id=53213 --- dlls/d3d11/tests/d3d11.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-)
diff --git a/dlls/d3d11/tests/d3d11.c b/dlls/d3d11/tests/d3d11.c index 3bf3fa44d97..1b33664befd 100644 --- a/dlls/d3d11/tests/d3d11.c +++ b/dlls/d3d11/tests/d3d11.c @@ -9830,10 +9830,10 @@ static void test_texture(void) {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, -1.0f, rgba_level_0}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.0f, rgba_level_0}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.4f, rgba_level_0}, - {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.5f, level_1_colors}, + {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 0.6f, level_1_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.0f, level_1_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.4f, level_1_colors}, - {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.5f, level_2_colors}, + {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 1.6f, level_2_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 2.0f, level_2_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 3.0f, level_2_colors}, {&ps_sample_l, &rgba_texture, POINT, 0.0f, 0.0f, MIP_MAX, 4.0f, level_2_colors},
From: Zebediah Figura zfigura@codeweavers.com
d3d tests are currently running out of address space in gitlab CI.
There are other ways to fix this than using -Wl,--large-address-aware, but this is the easiest, and I do not see any drawbacks to it. --- tools/makedep.c | 1 + 1 file changed, 1 insertion(+)
diff --git a/tools/makedep.c b/tools/makedep.c index 8495d93d8c6..4bc01e1711b 100644 --- a/tools/makedep.c +++ b/tools/makedep.c @@ -3522,6 +3522,7 @@ static void output_test_module( struct makefile *make, unsigned int arch ) output_filenames_obj_dir( make, make->res_files[arch] ); if ((debug_file = get_debug_file( make, testmodule, arch ))) output_filename( strmake( "-Wl,--debug-file,%s", obj_dir_path( make, debug_file ))); + output_filename( "-Wl,--large-address-aware" ); output_filenames( all_libs ); output_filename( arch_make_variable( "LDFLAGS", arch )); output( "\n" );
From: Zebediah Figura zfigura@codeweavers.com
--- dlls/ntdll/unix/signal_i386.c | 29 ++++++++++++++++ dlls/ntdll/unix/signal_x86_64.c | 12 +++++++ tools/gitlab/build.yml | 15 -------- tools/gitlab/test.yml | 61 +-------------------------------- 4 files changed, 42 insertions(+), 75 deletions(-)
diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index 293b8689c06..8a04c82a47d 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -50,6 +50,9 @@ #ifdef HAVE_SYS_UCONTEXT_H # include <sys/ucontext.h> #endif +#include <sys/stat.h> +#include <fcntl.h> +#include <dirent.h>
#include "ntstatus.h" #define WIN32_NO_STATUS @@ -1924,6 +1927,32 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext ) rec.ExceptionCode = EXCEPTION_ILLEGAL_INSTRUCTION; break; } + + { + int fd = open("/proc/self/maps", O_RDONLY); + struct dirent *de; + char buffer[1024]; + ssize_t ret; + DIR *dir; + + while ((ret = read(fd, buffer, sizeof(buffer))) > 0) + write(2, buffer, ret); + + close(fd); + + dir = opendir("/proc/self/task/"); + while ((de = readdir(dir))) + { + if (de->d_name[0] == '.') continue; + sprintf(buffer, "/proc/self/task/%s/comm", de->d_name); + fd = open(buffer, O_RDONLY); + ret = read(fd, buffer, sizeof(buffer)); + write(2, buffer, ret); + close(fd); + } + closedir(dir); + } + if (handle_syscall_fault( ucontext, stack, &rec, &xcontext.c )) return; setup_raise_exception( ucontext, stack, &rec, &xcontext ); } diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index eac5d961a07..6959dc8ae05 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -64,6 +64,8 @@ #ifdef __APPLE__ # include <mach/mach.h> #endif +#include <sys/stat.h> +#include <fcntl.h>
#include "ntstatus.h" #define WIN32_NO_STATUS @@ -1966,6 +1968,16 @@ static void segv_handler( int signal, siginfo_t *siginfo, void *sigcontext ) rec.ExceptionCode = EXCEPTION_ILLEGAL_INSTRUCTION; break; } + + { + int fd = open("/proc/self/maps", O_RDONLY); + char buffer[1024]; + ssize_t ret; + + while ((ret = read(fd, buffer, sizeof(buffer))) > 0) + write(2, buffer, ret); + } + if (handle_syscall_fault( ucontext, &rec, &context.c )) return; setup_raise_exception( ucontext, &rec, &context ); } diff --git a/tools/gitlab/build.yml b/tools/gitlab/build.yml index 8a5d5b40ac1..473b609e5d7 100644 --- a/tools/gitlab/build.yml +++ b/tools/gitlab/build.yml @@ -37,21 +37,6 @@ build-linux: script: - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./tools/gitlab/build-linux
-build-mac: - extends: .wine-build - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - tags: - - mac - artifacts: - when: on_failure - paths: - - build64/config.log - - build32/config.log - script: - - export PATH="/usr/local/opt/ccache/libexec:$PATH" - - git rebase $CI_MERGE_REQUEST_DIFF_BASE_SHA --exec ./tools/gitlab/build-mac - build-daily-linux: extends: .wine-build rules: diff --git a/tools/gitlab/test.yml b/tools/gitlab/test.yml index 0df6a6029f9..087d325226c 100644 --- a/tools/gitlab/test.yml +++ b/tools/gitlab/test.yml @@ -21,7 +21,6 @@ - export PATH=$BASEDIR/usr/local/bin:$PATH - export DISPLAY=:0 - export LC_ALL=C.UTF-8 - - export WINEDEBUG=err-all,fixme-all - | cat >$HOME/xorg.conf << EOF Section "Device" @@ -42,18 +41,6 @@ - wine wineboot.exe -u - wineserver -w
-test-linux-64: - extends: .wine-test - variables: - INCLUDE_TESTS: "dinput" - rules: - - if: $CI_PIPELINE_SOURCE == 'merge_request_event' - needs: - - job: build-linux - script: - - export WINETEST_COLOR=1 - - wine usr/local/lib/wine/x86_64-windows/winetest.exe -q -q -o - -t gitlab -u $CI_JOB_URL $INCLUDE_TESTS - test-linux-32: extends: .wine-test variables: @@ -64,50 +51,4 @@ test-linux-32: - job: build-linux script: - export WINETEST_COLOR=1 - - wine usr/local/lib/wine/i386-windows/winetest.exe -q -q -o - -t gitlab -u $CI_JOB_URL -n $EXCLUDE_TESTS - -debian-32: - extends: .wine-test - rules: - - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - needs: - - job: build-daily-linux - script: - - wine usr/local/lib/wine/i386-windows/winetest.exe -q -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL - -debian-64: - extends: .wine-test - rules: - - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - needs: - - job: build-daily-linux - script: - - wine usr/local/lib/wine/x86_64-windows/winetest.exe -q -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL - -win10-21h2-32: - stage: test - interruptible: true - variables: - GIT_STRATEGY: none - rules: - - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - needs: - - job: build-winetest - tags: - - win10-21h2 - script: - - ./winetest.exe -q -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL - -win10-21h2-64: - stage: test - interruptible: true - variables: - GIT_STRATEGY: none - rules: - - if: $CI_PIPELINE_SOURCE == 'trigger' && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH - needs: - - job: build-winetest - tags: - - win10-21h2 - script: - - ./winetest64.exe -q -t gitlab-$CI_JOB_NAME -u $CI_JOB_URL + - wine usr/local/lib/wine/i386-windows/winetest.exe -e -q -q -o - -t gitlab -u $CI_JOB_URL d3d10core:d3d10core d3d11:d3d11 d3d8:device d3d8:visual d3d9:d3d9ex d3d9:device d3d9:visual
Ugh, I'm sorry, that was not supposed to be submitted to Wine.
This merge request was closed by Zebediah Figura.