Using a dedicated exit jmpbuf and removing the need for assembly routines.
When Wine handles an exception in unix code, we return to user mode by jumping to the last syscall frame. This can leave some pthread cancel cleanups registered, in the pthread internal linked list, and at the same time later overwrite the stack frame they were registered for.
In the same way, jumping to the exit frame on thread exit or abort, can also leave some cleanup handlers registered for invalid stack frames.
Depending on the implementation, calling pthread_exit will cause all the registered pthread cleanup handlers to be called, possibly jumping back to now overwritten stack frames and causing segmentation faults.
Exiting a pthread normally, by returning from its procedure, or calling exit(0) for the main thread doesn't run pthread_exit and doesn't call cleanup handlers, avoiding that situation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52213
### Additional note:
For robustness, we should probably try to execute these cleanup handlers when unwinding the stack frames, as we would otherwise leave pthread objects in a potential problematic state (like a mutex locked, etc).
It is however hard to do so when the handlers are registered from some C code: pthread C implementation is done by calling some internal pthread functions to register the handlers, and they aren't registered as standard unwind handlers.
Only pthread_cancel and pthread_exit can unwind and call / unregister the C handlers, but interrupting that procedure, for instance calling setjmp / longjmp from withing our own handler isn't supported.
From C++ code, pthread cleanup handlers are registered through C++ class constructors / destructors, and it would then be possible to partially unwind and call them at the same time.
-- v8: ntdll: Remove now unnecessary arch-specific exit frame. ntdll: Avoid calling pthread_exit on thread exit. ntdll: Return entry and suspend from server_init_process_done. ntdll: Create a pthread for the main thread.
From: Rémi Bernon rbernon@codeweavers.com
So that we can safely call pthread_exit from the unix main thread, and wait for all other threads to exit. The last win32 thread will actually terminate the process directly by calling _exit.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52213 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54346 --- dlls/ntdll/unix/loader.c | 24 ++++++++++++++++++++---- 1 file changed, 20 insertions(+), 4 deletions(-)
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index 65934acfc36..60953c03177 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -2071,14 +2071,13 @@ const unixlib_entry_t __wine_unix_call_wow64_funcs[] =
#endif /* _WIN64 */
-/*********************************************************************** - * start_main_thread - */ -static void start_main_thread(void) +static void *pthread_main_wrapper( void *arg ) { SYSTEM_SERVICE_TABLE syscall_table = { (ULONG_PTR *)syscalls, NULL, ARRAY_SIZE(syscalls), syscall_args }; TEB *teb = virtual_alloc_first_teb(); + sigset_t *blocked_signals = arg;
+ pthread_sigmask( SIG_UNBLOCK, blocked_signals, NULL ); signal_init_threading(); signal_alloc_thread( teb ); dbg_init(); @@ -2101,6 +2100,23 @@ static void start_main_thread(void) ntdll_init_syscalls( 0, &syscall_table, p__wine_syscall_dispatcher ); *p__wine_unix_call_dispatcher = __wine_unix_call_dispatcher; server_init_process_done(); + return 0; +} + +/*********************************************************************** + * start_main_thread + */ +static void start_main_thread(void) +{ + static sigset_t blocked_signals; + pthread_t thread; + + /* block all signals for this thread, it cannot handle them */ + sigfillset( &blocked_signals ); + pthread_sigmask( SIG_BLOCK, &blocked_signals, NULL ); + pthread_create( &thread, NULL, pthread_main_wrapper, &blocked_signals ); + pthread_detach( thread ); + pthread_exit( NULL ); }
#ifdef __ANDROID__
From: Rémi Bernon rbernon@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52213 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54346 --- dlls/ntdll/unix/loader.c | 5 ++++- dlls/ntdll/unix/server.c | 10 ++++------ dlls/ntdll/unix/unix_private.h | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-)
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index 60953c03177..071fa731a5a 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -2076,6 +2076,8 @@ static void *pthread_main_wrapper( void *arg ) SYSTEM_SERVICE_TABLE syscall_table = { (ULONG_PTR *)syscalls, NULL, ARRAY_SIZE(syscalls), syscall_args }; TEB *teb = virtual_alloc_first_teb(); sigset_t *blocked_signals = arg; + BOOL suspend; + void *entry;
pthread_sigmask( SIG_UNBLOCK, blocked_signals, NULL ); signal_init_threading(); @@ -2099,7 +2101,8 @@ static void *pthread_main_wrapper( void *arg ) load_apiset_dll(); ntdll_init_syscalls( 0, &syscall_table, p__wine_syscall_dispatcher ); *p__wine_unix_call_dispatcher = __wine_unix_call_dispatcher; - server_init_process_done(); + server_init_process_done( &entry, &suspend ); + signal_start_thread( entry, peb, suspend, NtCurrentTeb() ); return 0; }
diff --git a/dlls/ntdll/unix/server.c b/dlls/ntdll/unix/server.c index 75a766078cd..1cd55d859cb 100644 --- a/dlls/ntdll/unix/server.c +++ b/dlls/ntdll/unix/server.c @@ -1572,11 +1572,10 @@ size_t server_init_process(void) /*********************************************************************** * server_init_process_done */ -void server_init_process_done(void) +void server_init_process_done( void **entry, BOOL *suspend ) { - void *entry, *teb; + void *teb; unsigned int status; - int suspend; FILE_FS_DEVICE_INFORMATION info;
if (!get_device_info( initial_cwd, &info ) && (info.Characteristics & FILE_REMOVABLE_MEDIA)) @@ -1606,13 +1605,12 @@ void server_init_process_done(void) req->ldt_copy = wine_server_client_ptr( &__wine_ldt_copy ); #endif status = wine_server_call( req ); - suspend = reply->suspend; - entry = wine_server_get_ptr( reply->entry ); + *suspend = reply->suspend; + *entry = wine_server_get_ptr( reply->entry ); } SERVER_END_REQ;
assert( !status ); - signal_start_thread( entry, peb, suspend, NtCurrentTeb() ); }
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h index 8821cd78491..e6628b434fc 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h @@ -174,7 +174,7 @@ extern int server_get_unix_fd( HANDLE handle, unsigned int wanted_access, int *u extern void wine_server_send_fd( int fd ) DECLSPEC_HIDDEN; extern void process_exit_wrapper( int status ) DECLSPEC_HIDDEN; extern size_t server_init_process(void) DECLSPEC_HIDDEN; -extern void server_init_process_done(void) DECLSPEC_HIDDEN; +extern void server_init_process_done( void **entry, BOOL *suspend ) DECLSPEC_HIDDEN; extern void server_init_thread( void *entry_point, BOOL *suspend ) DECLSPEC_HIDDEN; extern int server_pipe( int fd[2] ) DECLSPEC_HIDDEN;
From: Rémi Bernon rbernon@codeweavers.com
Using a dedicated exit jmpbuf and removing the need for assembly routines.
When Wine handles an exception in unix code, we return to user mode by jumping to the last syscall frame. This can leave some pthread cancel cleanups registered, in the pthread internal linked list, and at the same time later overwrite the stack frame they were registered for.
In the same way, jumping to the exit frame on thread exit or abort, can also leave some cleanup handlers registered for invalid stack frames.
Depending on the implementation, calling pthread_exit will cause all the registered pthread cleanup handlers to be called, possibly jumping back to now overwritten stack frames and causing segmentation faults.
Exiting a pthread normally, by returning from its procedure doesn't run pthread_exit and doesn't call cleanup handlers, avoiding that situation.
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52213 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54346 --- dlls/ntdll/unix/loader.c | 3 +- dlls/ntdll/unix/signal_arm.c | 14 -------- dlls/ntdll/unix/signal_arm64.c | 12 ------- dlls/ntdll/unix/signal_i386.c | 25 ------------- dlls/ntdll/unix/signal_x86_64.c | 21 ----------- dlls/ntdll/unix/thread.c | 64 ++++++++++++++++++++++----------- dlls/ntdll/unix/unix_private.h | 4 ++- 7 files changed, 47 insertions(+), 96 deletions(-)
diff --git a/dlls/ntdll/unix/loader.c b/dlls/ntdll/unix/loader.c index 071fa731a5a..7acbb4c76fc 100644 --- a/dlls/ntdll/unix/loader.c +++ b/dlls/ntdll/unix/loader.c @@ -2102,8 +2102,7 @@ static void *pthread_main_wrapper( void *arg ) ntdll_init_syscalls( 0, &syscall_table, p__wine_syscall_dispatcher ); *p__wine_unix_call_dispatcher = __wine_unix_call_dispatcher; server_init_process_done( &entry, &suspend ); - signal_start_thread( entry, peb, suspend, NtCurrentTeb() ); - return 0; + return thread_start( entry, peb, suspend, NtCurrentTeb() ); }
/*********************************************************************** diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c index 8180bc52b46..2333f0e2813 100644 --- a/dlls/ntdll/unix/signal_arm.c +++ b/dlls/ntdll/unix/signal_arm.c @@ -1638,20 +1638,6 @@ __ASM_GLOBAL_FUNC( signal_start_thread, "bl " __ASM_NAME("call_init_thunk") )
-/*********************************************************************** - * signal_exit_thread - */ -__ASM_GLOBAL_FUNC( signal_exit_thread, - __ASM_EHABI(".cantunwind\n\t") - "ldr r3, [r2, #0x1d4]\n\t" /* arm_thread_data()->exit_frame */ - "mov ip, #0\n\t" - "str ip, [r2, #0x1d4]\n\t" - "cmp r3, ip\n\t" - "it ne\n\t" - "movne sp, r3\n\t" - "blx r1" ) - - /*********************************************************************** * __wine_syscall_dispatcher */ diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c index bd9818c808a..b3940c738c5 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c @@ -1434,18 +1434,6 @@ __ASM_GLOBAL_FUNC( signal_start_thread, "1:\tmov sp, x8\n\t" "bl " __ASM_NAME("call_init_thunk") )
-/*********************************************************************** - * signal_exit_thread - */ -__ASM_GLOBAL_FUNC( signal_exit_thread, - "stp x29, x30, [sp,#-16]!\n\t" - "ldr x3, [x2, #0x2f0]\n\t" /* arm64_thread_data()->exit_frame */ - "str xzr, [x2, #0x2f0]\n\t" - "cbz x3, 1f\n\t" - "mov sp, x3\n" - "1:\tldp x29, x30, [sp], #16\n\t" - "br x1" ) -
/*********************************************************************** * __wine_syscall_dispatcher diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index 1cea685d995..cec97be9b1f 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -2508,31 +2508,6 @@ __ASM_GLOBAL_FUNC( signal_start_thread, "call " __ASM_NAME("call_init_thunk") )
-/*********************************************************************** - * signal_exit_thread - */ -__ASM_GLOBAL_FUNC( signal_exit_thread, - "movl 8(%esp),%ecx\n\t" - "movl 12(%esp),%esi\n\t" - "xorl %edx,%edx\n\t" - /* fetch exit frame */ - "xchgl %edx,0x1f4(%esi)\n\t" /* x86_thread_data()->exit_frame */ - "testl %edx,%edx\n\t" - "jnz 1f\n\t" - "jmp *%ecx\n\t" - /* switch to exit frame stack */ - "1:\tmovl 4(%esp),%eax\n\t" - "movl %edx,%ebp\n\t" - __ASM_CFI(".cfi_def_cfa %ebp,4\n\t") - __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") - __ASM_CFI(".cfi_rel_offset %ebx,-4\n\t") - __ASM_CFI(".cfi_rel_offset %esi,-8\n\t") - __ASM_CFI(".cfi_rel_offset %edi,-12\n\t") - "leal -20(%ebp),%esp\n\t" - "pushl %eax\n\t" - "call *%ecx" ) - - /*********************************************************************** * __wine_syscall_dispatcher */ diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index 54babc7d964..a34b15ab039 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -2607,27 +2607,6 @@ __ASM_GLOBAL_FUNC( signal_start_thread, "call " __ASM_NAME("call_init_thunk"))
-/*********************************************************************** - * signal_exit_thread - */ -__ASM_GLOBAL_FUNC( signal_exit_thread, - /* fetch exit frame */ - "xorl %ecx,%ecx\n\t" - "xchgq %rcx,0x320(%rdx)\n\t" /* amd64_thread_data()->exit_frame */ - "testq %rcx,%rcx\n\t" - "jnz 1f\n\t" - "jmp *%rsi\n" - /* switch to exit frame stack */ - "1:\tmovq %rcx,%rsp\n\t" - __ASM_CFI(".cfi_adjust_cfa_offset 56\n\t") - __ASM_CFI(".cfi_rel_offset %rbp,48\n\t") - __ASM_CFI(".cfi_rel_offset %rbx,40\n\t") - __ASM_CFI(".cfi_rel_offset %r12,32\n\t") - __ASM_CFI(".cfi_rel_offset %r13,24\n\t") - __ASM_CFI(".cfi_rel_offset %r14,16\n\t") - __ASM_CFI(".cfi_rel_offset %r15,8\n\t") - "call *%rsi" ) - /*********************************************************************** * __wine_syscall_dispatcher */ diff --git a/dlls/ntdll/unix/thread.c b/dlls/ntdll/unix/thread.c index d56962e1721..591bf2a1fd8 100644 --- a/dlls/ntdll/unix/thread.c +++ b/dlls/ntdll/unix/thread.c @@ -1047,36 +1047,58 @@ static void contexts_from_server( CONTEXT *context, context_t server_contexts[2] else context_from_server( wow_context, &server_contexts[0], main_image_info.Machine ); }
- /*********************************************************************** - * pthread_exit_wrapper - */ -static void pthread_exit_wrapper( int status ) -{ - close( ntdll_get_thread_data()->wait_fd[0] ); - close( ntdll_get_thread_data()->wait_fd[1] ); - close( ntdll_get_thread_data()->reply_fd ); - close( ntdll_get_thread_data()->request_fd ); - pthread_exit( UIntToPtr(status) ); -} - - -/*********************************************************************** - * start_thread + * pthread_start_wrapper * * Startup routine for a newly created thread. */ -static void start_thread( TEB *teb ) +static void *pthread_start_wrapper( void *arg ) { + TEB *teb = arg; struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)&teb->GdiTebBatch; BOOL suspend;
thread_data->pthread_id = pthread_self(); pthread_setspecific( teb_key, teb ); server_init_thread( thread_data->start, &suspend ); - signal_start_thread( thread_data->start, thread_data->param, suspend, teb ); + return thread_start( thread_data->start, thread_data->param, suspend, teb ); +} + +static void thread_exit_cleanup( struct ntdll_thread_data *thread_data ) +{ + close( thread_data->wait_fd[0] ); + close( thread_data->wait_fd[1] ); + close( thread_data->reply_fd ); + close( thread_data->request_fd ); +} + +void *thread_start( PRTL_THREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB *teb ) +{ + struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)&teb->GdiTebBatch; + __wine_jmp_buf exit_buf = {0}; + int ret; + + if (!(ret = __wine_setjmpex( (thread_data->exit_buf = &exit_buf), NULL ))) + signal_start_thread( entry, arg, suspend, teb ); + + if (ret > 0) thread_exit_cleanup( thread_data ); + else process_exit_wrapper( (UINT_PTR)thread_data->param ); + return thread_data->param; }
+static void DECLSPEC_NORETURN thread_exit( int status, BOOL process, TEB *teb ) +{ + struct ntdll_thread_data *thread_data = (struct ntdll_thread_data *)&teb->GdiTebBatch; + + thread_data->param = (void *)(UINT_PTR)status; + + /* return to thread_start and exit thread to avoid calling cancel handlers */ + if (thread_data->exit_buf) __wine_longjmp( thread_data->exit_buf, process ? -1 : 1 ); + + /* if thread isn't started yet, just call pthread_exit */ + thread_exit_cleanup( thread_data ); + pthread_exit( thread_data->param ); +}
/*********************************************************************** * get_machine_context_size @@ -1353,7 +1375,7 @@ NTSTATUS WINAPI NtCreateThreadEx( HANDLE *handle, ACCESS_MASK access, OBJECT_ATT pthread_attr_setguardsize( &pthread_attr, 0 ); pthread_attr_setscope( &pthread_attr, PTHREAD_SCOPE_SYSTEM ); /* force creating a kernel thread */ InterlockedIncrement( &nb_threads ); - if (pthread_create( &pthread_id, &pthread_attr, (void * (*)(void *))start_thread, teb )) + if (pthread_create( &pthread_id, &pthread_attr, pthread_start_wrapper, teb )) { InterlockedDecrement( &nb_threads ); virtual_free_teb( teb ); @@ -1381,7 +1403,7 @@ void abort_thread( int status ) { pthread_sigmask( SIG_BLOCK, &server_block_set, NULL ); if (InterlockedDecrement( &nb_threads ) <= 0) abort_process( status ); - signal_exit_thread( status, pthread_exit_wrapper, NtCurrentTeb() ); + thread_exit( status, FALSE, NtCurrentTeb() ); }
@@ -1414,7 +1436,7 @@ static DECLSPEC_NORETURN void exit_thread( int status ) virtual_free_teb( teb ); } } - signal_exit_thread( status, pthread_exit_wrapper, NtCurrentTeb() ); + thread_exit( status, FALSE, NtCurrentTeb() ); }
@@ -1424,7 +1446,7 @@ static DECLSPEC_NORETURN void exit_thread( int status ) void exit_process( int status ) { pthread_sigmask( SIG_BLOCK, &server_block_set, NULL ); - signal_exit_thread( get_unix_exit_code( status ), process_exit_wrapper, NtCurrentTeb() ); + thread_exit( get_unix_exit_code( status ), TRUE, NtCurrentTeb() ); }
diff --git a/dlls/ntdll/unix/unix_private.h b/dlls/ntdll/unix/unix_private.h index e6628b434fc..24439120226 100644 --- a/dlls/ntdll/unix/unix_private.h +++ b/dlls/ntdll/unix/unix_private.h @@ -66,6 +66,7 @@ struct ntdll_thread_data PRTL_THREAD_START_ROUTINE start; /* thread entry point */ void *param; /* thread entry point parameter */ void *jmp_buf; /* setjmp buffer for exception handling */ + void *exit_buf; /* setjmp buffer for thread exit */ };
C_ASSERT( sizeof(struct ntdll_thread_data) <= sizeof(((TEB *)0)->GdiTebBatch) ); @@ -240,7 +241,8 @@ extern void signal_free_thread( TEB *teb ) DECLSPEC_HIDDEN; extern void signal_init_process(void) DECLSPEC_HIDDEN; extern void DECLSPEC_NORETURN signal_start_thread( PRTL_THREAD_START_ROUTINE entry, void *arg, BOOL suspend, TEB *teb ) DECLSPEC_HIDDEN; -extern void DECLSPEC_NORETURN signal_exit_thread( int status, void (*func)(int), TEB *teb ) DECLSPEC_HIDDEN; +extern void *thread_start( PRTL_THREAD_START_ROUTINE entry, void *arg, + BOOL suspend, TEB *teb ) DECLSPEC_HIDDEN; extern SYSTEM_SERVICE_TABLE KeServiceDescriptorTable[4] DECLSPEC_HIDDEN; extern void __wine_syscall_dispatcher(void) DECLSPEC_HIDDEN; extern void WINAPI DECLSPEC_NORETURN __wine_syscall_dispatcher_return( void *frame, ULONG_PTR retval ) DECLSPEC_HIDDEN;
From: Rémi Bernon rbernon@codeweavers.com
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=52213 Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=54346 --- dlls/ntdll/signal_i386.c | 2 -- dlls/ntdll/unix/signal_arm.c | 25 ++++++--------- dlls/ntdll/unix/signal_arm64.c | 26 ++++++--------- dlls/ntdll/unix/signal_i386.c | 41 +++++++++--------------- dlls/ntdll/unix/signal_x86_64.c | 56 +++++++++++---------------------- 5 files changed, 52 insertions(+), 98 deletions(-)
diff --git a/dlls/ntdll/signal_i386.c b/dlls/ntdll/signal_i386.c index 9709be34f8c..f730d8cf69b 100644 --- a/dlls/ntdll/signal_i386.c +++ b/dlls/ntdll/signal_i386.c @@ -47,12 +47,10 @@ struct x86_thread_data DWORD dr3; /* 1e8 */ DWORD dr6; /* 1ec */ DWORD dr7; /* 1f0 */ - void *exit_frame; /* 1f4 exit frame pointer */ };
C_ASSERT( sizeof(struct x86_thread_data) <= 16 * sizeof(void *) ); C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct x86_thread_data, gs ) == 0x1d8 ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct x86_thread_data, exit_frame ) == 0x1f4 );
static inline struct x86_thread_data *x86_thread_data(void) { diff --git a/dlls/ntdll/unix/signal_arm.c b/dlls/ntdll/unix/signal_arm.c index 2333f0e2813..f19813dd180 100644 --- a/dlls/ntdll/unix/signal_arm.c +++ b/dlls/ntdll/unix/signal_arm.c @@ -205,13 +205,11 @@ C_ASSERT( sizeof( struct syscall_frame ) == 0x160);
struct arm_thread_data { - void *exit_frame; /* 1d4 exit frame pointer */ - struct syscall_frame *syscall_frame; /* 1d8 frame pointer on syscall entry */ + struct syscall_frame *syscall_frame; /* 1d4 frame pointer on syscall entry */ };
C_ASSERT( sizeof(struct arm_thread_data) <= sizeof(((struct ntdll_thread_data *)0)->cpu_data) ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct arm_thread_data, exit_frame ) == 0x1d4 ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct arm_thread_data, syscall_frame ) == 0x1d8 ); +C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct arm_thread_data, syscall_frame ) == 0x1d4 );
static inline struct arm_thread_data *arm_thread_data(void) { @@ -1169,9 +1167,9 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, "str r6, [r5, #0x80]\n\t" #endif "sub sp, sp, #0x160\n\t" /* sizeof(struct syscall_frame) + registers */ - "ldr r5, [r4, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "ldr r5, [r4, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "str r5, [sp, #0x4c]\n\t" /* frame->prev_frame */ - "str sp, [r4, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "str sp, [r4, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "ldr r6, [r5, #0x50]\n\t" /* prev_frame->syscall_table */ "str r6, [sp, #0x50]\n\t" /* frame->syscall_table */ "mov ip, r0\n\t" @@ -1186,9 +1184,9 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, extern void CDECL DECLSPEC_NORETURN user_mode_callback_return( void *ret_ptr, ULONG ret_len, NTSTATUS status, TEB *teb ) DECLSPEC_HIDDEN; __ASM_GLOBAL_FUNC( user_mode_callback_return, - "ldr r4, [r3, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "ldr r4, [r3, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "ldr r5, [r4, #0x4c]\n\t" /* frame->prev_frame */ - "str r5, [r3, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "str r5, [r3, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "add r5, r4, #0x160\n\t" #ifndef __SOFTFP__ "vldm r5, {d8-d15}\n\t" @@ -1626,14 +1624,11 @@ void DECLSPEC_HIDDEN call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, B */ __ASM_GLOBAL_FUNC( signal_start_thread, __ASM_EHABI(".cantunwind\n\t") - "push {r4-r12,lr}\n\t" - /* store exit frame */ - "str sp, [r3, #0x1d4]\n\t" /* arm_thread_data()->exit_frame */ /* set syscall frame */ - "ldr r6, [r3, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "ldr r6, [r3, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "cbnz r6, 1f\n\t" "sub r6, sp, #0x160\n\t" /* sizeof(struct syscall_frame) */ - "str r6, [r3, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "str r6, [r3, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "1:\tmov sp, r6\n\t" "bl " __ASM_NAME("call_init_thunk") )
@@ -1644,7 +1639,7 @@ __ASM_GLOBAL_FUNC( signal_start_thread, __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, __ASM_EHABI(".cantunwind\n\t") "mrc p15, 0, r1, c13, c0, 2\n\t" /* NtCurrentTeb() */ - "ldr r1, [r1, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "ldr r1, [r1, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "add r0, r1, #0x10\n\t" "stm r0, {r4-r12,lr}\n\t" "add r2, sp, #0x10\n\t" @@ -1722,7 +1717,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, __ASM_GLOBAL_FUNC( __wine_unix_call_dispatcher, __ASM_EHABI(".cantunwind\n\t") "mrc p15, 0, r1, c13, c0, 2\n\t" /* NtCurrentTeb() */ - "ldr r1, [r1, #0x1d8]\n\t" /* arm_thread_data()->syscall_frame */ + "ldr r1, [r1, #0x1d4]\n\t" /* arm_thread_data()->syscall_frame */ "add ip, r1, #0x10\n\t" "stm ip, {r4-r12,lr}\n\t" "str sp, [r1, #0x38]\n\t" diff --git a/dlls/ntdll/unix/signal_arm64.c b/dlls/ntdll/unix/signal_arm64.c index b3940c738c5..787776fef4b 100644 --- a/dlls/ntdll/unix/signal_arm64.c +++ b/dlls/ntdll/unix/signal_arm64.c @@ -150,13 +150,11 @@ C_ASSERT( sizeof( struct syscall_frame ) == 0x330 );
struct arm64_thread_data { - void *exit_frame; /* 02f0 exit frame pointer */ - struct syscall_frame *syscall_frame; /* 02f8 frame pointer on syscall entry */ + struct syscall_frame *syscall_frame; /* 02f0 frame pointer on syscall entry */ };
C_ASSERT( sizeof(struct arm64_thread_data) <= sizeof(((struct ntdll_thread_data *)0)->cpu_data) ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct arm64_thread_data, exit_frame ) == 0x2f0 ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct arm64_thread_data, syscall_frame ) == 0x2f8 ); +C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct arm64_thread_data, syscall_frame ) == 0x2f0 );
static inline struct arm64_thread_data *arm64_thread_data(void) { @@ -904,9 +902,9 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, "ldr x6, [x18]\n\t" /* teb->Tib.ExceptionList */ "stp x5, x6, [x29, #0xb0]\n\t"
- "ldr x7, [x18, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "ldr x7, [x18, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "sub x5, sp, #0x330\n\t" /* sizeof(struct syscall_frame) */ - "str x5, [x18, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "str x5, [x18, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "ldr x8, [x7, #0x118]\n\t" /* prev_frame->syscall_table */ "ldp x0, x1, [x17]\n\t" /* id, args */ "ldr x2, [x17, #0x10]\n\t" /* len */ @@ -921,9 +919,9 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, extern void CDECL DECLSPEC_NORETURN user_mode_callback_return( void *ret_ptr, ULONG ret_len, NTSTATUS status, TEB *teb ) DECLSPEC_HIDDEN; __ASM_GLOBAL_FUNC( user_mode_callback_return, - "ldr x4, [x3, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "ldr x4, [x3, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "ldr x5, [x4, #0x110]\n\t" /* prev_frame */ - "str x5, [x3, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "str x5, [x3, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "add x29, x4, #0x330\n\t" /* sizeof(struct syscall_frame) */ "ldp x5, x6, [x29, #0xb0]\n\t" "str x6, [x3]\n\t" /* teb->Tib.ExceptionList */ @@ -1422,15 +1420,11 @@ void DECLSPEC_HIDDEN call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, B * signal_start_thread */ __ASM_GLOBAL_FUNC( signal_start_thread, - "stp x29, x30, [sp,#-16]!\n\t" - /* store exit frame */ - "mov x29, sp\n\t" - "str x29, [x3, #0x2f0]\n\t" /* arm64_thread_data()->exit_frame */ /* set syscall frame */ - "ldr x8, [x3, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "ldr x8, [x3, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "cbnz x8, 1f\n\t" "sub x8, sp, #0x330\n\t" /* sizeof(struct syscall_frame) */ - "str x8, [x3, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "str x8, [x3, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "1:\tmov sp, x8\n\t" "bl " __ASM_NAME("call_init_thunk") )
@@ -1455,7 +1449,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, "ldr x30, [sp, #80]\n\t" "ldp x0, x1, [sp], #96\n\t"
- "ldr x10, [x18, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "ldr x10, [x18, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "stp x18, x19, [x10, #0x90]\n\t" "stp x20, x21, [x10, #0xa0]\n\t" "stp x22, x23, [x10, #0xb0]\n\t" @@ -1575,7 +1569,7 @@ __ASM_GLOBAL_FUNC( __wine_unix_call_dispatcher, "ldp x2, x30,[sp, #16]\n\t" "ldp x0, x1, [sp], #32\n\t"
- "ldr x10, [x18, #0x2f8]\n\t" /* arm64_thread_data()->syscall_frame */ + "ldr x10, [x18, #0x2f0]\n\t" /* arm64_thread_data()->syscall_frame */ "stp x18, x19, [x10, #0x90]\n\t" "stp x20, x21, [x10, #0xa0]\n\t" "stp x22, x23, [x10, #0xb0]\n\t" diff --git a/dlls/ntdll/unix/signal_i386.c b/dlls/ntdll/unix/signal_i386.c index cec97be9b1f..70cdcb9312d 100644 --- a/dlls/ntdll/unix/signal_i386.c +++ b/dlls/ntdll/unix/signal_i386.c @@ -480,14 +480,12 @@ struct x86_thread_data UINT dr3; /* 1e8 */ UINT dr6; /* 1ec */ UINT dr7; /* 1f0 */ - void *exit_frame; /* 1f4 exit frame pointer */ - struct syscall_frame *syscall_frame; /* 1f8 frame pointer on syscall entry */ + struct syscall_frame *syscall_frame; /* 1f4 frame pointer on syscall entry */ };
C_ASSERT( sizeof(struct x86_thread_data) <= sizeof(((struct ntdll_thread_data *)0)->cpu_data) ); C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct x86_thread_data, gs ) == 0x1d8 ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct x86_thread_data, exit_frame ) == 0x1f4 ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct x86_thread_data, syscall_frame ) == 0x1f8 ); +C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct x86_thread_data, syscall_frame ) == 0x1f4 );
/* flags to control the behavior of the syscall dispatcher */ #define SYSCALL_HAVE_XSAVE 1 @@ -1593,13 +1591,13 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, "subl $0x384,%esp\n\t" /* sizeof(struct syscall_frame) + ebp */ "andl $~63,%esp\n\t" "movl %ebp,0x380(%esp)\n\t" - "movl 0x1f8(%edx),%ecx\n\t" /* x86_thread_data()->syscall_frame */ + "movl 0x1f4(%edx),%ecx\n\t" /* x86_thread_data()->syscall_frame */ "movl (%ecx),%eax\n\t" /* frame->syscall_flags */ "movl %eax,(%esp)\n\t" "movl 0x38(%ecx),%eax\n\t" /* frame->syscall_table */ "movl %eax,0x38(%esp)\n\t" "movl %ecx,0x3c(%esp)\n\t" /* frame->prev_frame */ - "movl %esp,0x1f8(%edx)\n\t" /* x86_thread_data()->syscall_frame */ + "movl %esp,0x1f4(%edx)\n\t" /* x86_thread_data()->syscall_frame */ "movl 8(%ebp),%ecx\n\t" /* func */ "movl 12(%ebp),%esp\n\t" /* stack */ "xorl %ebp,%ebp\n\t" @@ -1613,9 +1611,9 @@ extern void CDECL DECLSPEC_NORETURN user_mode_callback_return( void *ret_ptr, UL NTSTATUS status, TEB *teb ) DECLSPEC_HIDDEN; __ASM_GLOBAL_FUNC( user_mode_callback_return, "movl 16(%esp),%edx\n" /* teb */ - "movl 0x1f8(%edx),%eax\n\t" /* x86_thread_data()->syscall_frame */ + "movl 0x1f4(%edx),%eax\n\t" /* x86_thread_data()->syscall_frame */ "movl 0x3c(%eax),%ecx\n\t" /* frame->prev_frame */ - "movl %ecx,0x1f8(%edx)\n\t" /* x86_thread_data()->syscall_frame */ + "movl %ecx,0x1f4(%edx)\n\t" /* x86_thread_data()->syscall_frame */ "movl 0x380(%eax),%ebp\n\t" /* call_user_mode_callback ebp */ __ASM_CFI(".cfi_adjust_cfa_offset 4\n\t") __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") @@ -2479,32 +2477,21 @@ void DECLSPEC_HIDDEN call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, B * signal_start_thread */ __ASM_GLOBAL_FUNC( signal_start_thread, - "pushl %ebp\n\t" - __ASM_CFI(".cfi_adjust_cfa_offset 4\n\t") - __ASM_CFI(".cfi_rel_offset %ebp,0\n\t") "movl %esp,%ebp\n\t" __ASM_CFI(".cfi_def_cfa_register %ebp\n\t") - "pushl %ebx\n\t" - __ASM_CFI(".cfi_rel_offset %ebx,-4\n\t") - "pushl %esi\n\t" - __ASM_CFI(".cfi_rel_offset %esi,-8\n\t") - "pushl %edi\n\t" - __ASM_CFI(".cfi_rel_offset %edi,-12\n\t") - /* store exit frame */ - "movl 20(%ebp),%ecx\n\t" /* teb */ - "movl %ebp,0x1f4(%ecx)\n\t" /* x86_thread_data()->exit_frame */ + "movl 16(%ebp),%ecx\n\t" /* teb */ /* set syscall frame */ - "movl 0x1f8(%ecx),%eax\n\t" /* x86_thread_data()->syscall_frame */ + "movl 0x1f4(%ecx),%eax\n\t" /* x86_thread_data()->syscall_frame */ "orl %eax,%eax\n\t" "jnz 1f\n\t" "leal -0x380(%esp),%eax\n\t" /* sizeof(struct syscall_frame) */ "andl $~63,%eax\n\t" - "movl %eax,0x1f8(%ecx)\n" /* x86_thread_data()->syscall_frame */ + "movl %eax,0x1f4(%ecx)\n" /* x86_thread_data()->syscall_frame */ "1:\tmovl %eax,%esp\n\t" "pushl %ecx\n\t" /* teb */ - "pushl 16(%ebp)\n\t" /* suspend */ - "pushl 12(%ebp)\n\t" /* arg */ - "pushl 8(%ebp)\n\t" /* entry */ + "pushl 12(%ebp)\n\t" /* suspend */ + "pushl 8(%ebp)\n\t" /* arg */ + "pushl 4(%ebp)\n\t" /* entry */ "call " __ASM_NAME("call_init_thunk") )
@@ -2512,7 +2499,7 @@ __ASM_GLOBAL_FUNC( signal_start_thread, * __wine_syscall_dispatcher */ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, - "movl %fs:0x1f8,%ecx\n\t" /* x86_thread_data()->syscall_frame */ + "movl %fs:0x1f4,%ecx\n\t" /* x86_thread_data()->syscall_frame */ "movw $0,0x02(%ecx)\n\t" /* frame->restore_flags */ "popl 0x08(%ecx)\n\t" /* frame->eip */ __ASM_CFI(".cfi_adjust_cfa_offset -4\n\t") @@ -2704,7 +2691,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, * __wine_unix_call_dispatcher */ __ASM_GLOBAL_FUNC( __wine_unix_call_dispatcher, - "movl %fs:0x1f8,%ecx\n\t" /* x86_thread_data()->syscall_frame */ + "movl %fs:0x1f4,%ecx\n\t" /* x86_thread_data()->syscall_frame */ "movw $0,0x02(%ecx)\n\t" /* frame->restore_flags */ "popl 0x08(%ecx)\n\t" /* frame->eip */ __ASM_CFI(".cfi_adjust_cfa_offset -4\n\t") diff --git a/dlls/ntdll/unix/signal_x86_64.c b/dlls/ntdll/unix/signal_x86_64.c index a34b15ab039..0df7af1a6e4 100644 --- a/dlls/ntdll/unix/signal_x86_64.c +++ b/dlls/ntdll/unix/signal_x86_64.c @@ -424,16 +424,14 @@ struct amd64_thread_data DWORD_PTR dr3; /* 0308 */ DWORD_PTR dr6; /* 0310 */ DWORD_PTR dr7; /* 0318 */ - void *exit_frame; /* 0320 exit frame pointer */ - struct syscall_frame *syscall_frame; /* 0328 syscall frame pointer */ - void *pthread_teb; /* 0330 thread data for pthread */ - DWORD fs; /* 0338 WOW TEB selector */ + struct syscall_frame *syscall_frame; /* 0320 syscall frame pointer */ + void *pthread_teb; /* 0328 thread data for pthread */ + DWORD fs; /* 0330 WOW TEB selector */ };
C_ASSERT( sizeof(struct amd64_thread_data) <= sizeof(((struct ntdll_thread_data *)0)->cpu_data) ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct amd64_thread_data, exit_frame ) == 0x320 ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct amd64_thread_data, syscall_frame ) == 0x328 ); -C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct amd64_thread_data, pthread_teb ) == 0x330 ); +C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct amd64_thread_data, syscall_frame ) == 0x320 ); +C_ASSERT( offsetof( TEB, GdiTebBatch ) + offsetof( struct amd64_thread_data, pthread_teb ) == 0x328 );
static inline struct amd64_thread_data *amd64_thread_data(void) { @@ -1616,7 +1614,7 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, "subq $0x410,%rsp\n\t" /* sizeof(struct syscall_frame) + ebp + exception */ "andq $~63,%rsp\n\t" "movq %rbp,0x400(%rsp)\n\t" - "movq 0x328(%r11),%r10\n\t" /* amd64_thread_data()->syscall_frame */ + "movq 0x320(%r11),%r10\n\t" /* amd64_thread_data()->syscall_frame */ "movq (%r11),%rax\n\t" /* NtCurrentTeb()->Tib.ExceptionList */ "movq %rax,0x408(%rsp)\n\t" "movq 0xa8(%r10),%rax\n\t" /* prev_frame->syscall_table */ @@ -1624,11 +1622,11 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, "movl 0xb0(%r10),%r14d\n\t" /* prev_frame->syscall_flags */ "movl %r14d,0xb0(%rsp)\n\t" /* frame->syscall_flags */ "movq %r10,0xa0(%rsp)\n\t" /* frame->prev_frame */ - "movq %rsp,0x328(%r11)\n\t" /* amd64_thread_data()->syscall_frame */ + "movq %rsp,0x320(%r11)\n\t" /* amd64_thread_data()->syscall_frame */ #ifdef __linux__ "testl $12,%r14d\n\t" /* SYSCALL_HAVE_PTHREAD_TEB | SYSCALL_HAVE_WRFSGSBASE */ "jz 1f\n\t" - "movw 0x338(%r11),%fs\n" /* amd64_thread_data()->fs */ + "movw 0x330(%r11),%fs\n" /* amd64_thread_data()->fs */ "1:\n\t" #endif "movq %rcx,%r9\n\t" /* func */ @@ -1646,9 +1644,9 @@ __ASM_GLOBAL_FUNC( call_user_mode_callback, extern void CDECL DECLSPEC_NORETURN user_mode_callback_return( void *ret_ptr, ULONG ret_len, NTSTATUS status, TEB *teb ) DECLSPEC_HIDDEN; __ASM_GLOBAL_FUNC( user_mode_callback_return, - "movq 0x328(%r9),%r10\n\t" /* amd64_thread_data()->syscall_frame */ + "movq 0x320(%r9),%r10\n\t" /* amd64_thread_data()->syscall_frame */ "movq 0xa0(%r10),%r11\n\t" /* frame->prev_frame */ - "movq %r11,0x328(%r9)\n\t" /* amd64_thread_data()->syscall_frame = prev_frame */ + "movq %r11,0x320(%r9)\n\t" /* amd64_thread_data()->syscall_frame = prev_frame */ "movq 0x400(%r10),%rbp\n\t" /* call_user_mode_callback rbp */ __ASM_CFI(".cfi_def_cfa_register %rbp\n\t") __ASM_CFI(".cfi_rel_offset %rbx,-0x08\n\t") @@ -2578,31 +2576,13 @@ void DECLSPEC_HIDDEN call_init_thunk( LPTHREAD_START_ROUTINE entry, void *arg, B * signal_start_thread */ __ASM_GLOBAL_FUNC( signal_start_thread, - "subq $56,%rsp\n\t" - __ASM_SEH(".seh_stackalloc 56\n\t") - __ASM_SEH(".seh_endprologue\n\t") - __ASM_CFI(".cfi_adjust_cfa_offset 56\n\t") - "movq %rbp,48(%rsp)\n\t" - __ASM_CFI(".cfi_rel_offset %rbp,48\n\t") - "movq %rbx,40(%rsp)\n\t" - __ASM_CFI(".cfi_rel_offset %rbx,40\n\t") - "movq %r12,32(%rsp)\n\t" - __ASM_CFI(".cfi_rel_offset %r12,32\n\t") - "movq %r13,24(%rsp)\n\t" - __ASM_CFI(".cfi_rel_offset %r13,24\n\t") - "movq %r14,16(%rsp)\n\t" - __ASM_CFI(".cfi_rel_offset %r14,16\n\t") - "movq %r15,8(%rsp)\n\t" - __ASM_CFI(".cfi_rel_offset %r15,8\n\t") - /* store exit frame */ - "movq %rsp,0x320(%rcx)\n\t" /* amd64_thread_data()->exit_frame */ /* set syscall frame */ - "movq 0x328(%rcx),%rax\n\t" /* amd64_thread_data()->syscall_frame */ + "movq 0x320(%rcx),%rax\n\t" /* amd64_thread_data()->syscall_frame */ "orq %rax,%rax\n\t" "jnz 1f\n\t" "leaq -0x400(%rsp),%rax\n\t" /* sizeof(struct syscall_frame) */ "andq $~63,%rax\n\t" - "movq %rax,0x328(%rcx)\n" /* amd64_thread_data()->syscall_frame */ + "movq %rax,0x320(%rcx)\n" /* amd64_thread_data()->syscall_frame */ "1:\tmovq %rax,%rsp\n\t" "call " __ASM_NAME("call_init_thunk"))
@@ -2613,9 +2593,9 @@ __ASM_GLOBAL_FUNC( signal_start_thread, __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, #ifdef __APPLE__ "movq %gs:0x30,%rcx\n\t" - "movq 0x328(%rcx),%rcx\n\t" + "movq 0x320(%rcx),%rcx\n\t" #else - "movq %gs:0x328,%rcx\n\t" /* amd64_thread_data()->syscall_frame */ + "movq %gs:0x320,%rcx\n\t" /* amd64_thread_data()->syscall_frame */ #endif "popq 0x70(%rcx)\n\t" /* frame->rip */ __ASM_CFI(".cfi_adjust_cfa_offset -8\n\t") @@ -2696,7 +2676,7 @@ __ASM_GLOBAL_FUNC( __wine_syscall_dispatcher, #ifdef __linux__ "testl $12,%r14d\n\t" /* SYSCALL_HAVE_PTHREAD_TEB | SYSCALL_HAVE_WRFSGSBASE */ "jz 2f\n\t" - "movq %gs:0x330,%rsi\n\t" /* amd64_thread_data()->pthread_teb */ + "movq %gs:0x328,%rsi\n\t" /* amd64_thread_data()->pthread_teb */ "testl $8,%r14d\n\t" /* SYSCALL_HAVE_WRFSGSBASE */ "jz 1f\n\t" "wrfsbase %rsi\n\t" @@ -2838,9 +2818,9 @@ __ASM_GLOBAL_FUNC( __wine_unix_call_dispatcher, "movq %rcx,%r10\n\t" #ifdef __APPLE__ "movq %gs:0x30,%rcx\n\t" - "movq 0x328(%rcx),%rcx\n\t" + "movq 0x320(%rcx),%rcx\n\t" #else - "movq %gs:0x328,%rcx\n\t" /* amd64_thread_data()->syscall_frame */ + "movq %gs:0x320,%rcx\n\t" /* amd64_thread_data()->syscall_frame */ #endif "popq 0x70(%rcx)\n\t" /* frame->rip */ __ASM_CFI(".cfi_adjust_cfa_offset -8\n\t") @@ -2882,7 +2862,7 @@ __ASM_GLOBAL_FUNC( __wine_unix_call_dispatcher, "testl $12,%r14d\n\t" /* SYSCALL_HAVE_PTHREAD_TEB | SYSCALL_HAVE_WRFSGSBASE */ "jz 2f\n\t" "movw %fs,0x7e(%rcx)\n\t" - "movq %gs:0x330,%rsi\n\t" /* amd64_thread_data()->pthread_teb */ + "movq %gs:0x328,%rsi\n\t" /* amd64_thread_data()->pthread_teb */ "testl $8,%r14d\n\t" /* SYSCALL_HAVE_WRFSGSBASE */ "jz 1f\n\t" "wrfsbase %rsi\n\t"
Hi,
It looks like your patch introduced the new failures shown below. Please investigate and fix them before resubmitting your patch. If they are not new, fixing them anyway would help a lot. Otherwise please ask for the known failures list to be updated.
The tests also ran into some preexisting test failures. If you know how to fix them that would be helpful. See the TestBot job for the details:
The full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=129159
Your paranoid android.
=== debian11 (32 bit report) ===
inetmib1: Unhandled exception: page fault on read access to 0x00160000 in 32-bit code (0x6ab29732).
iphlpapi: iphlpapi.c:305: Test failed: got 50 iphlpapi.c:309: Test failed: got 50 iphlpapi.c:312: Test failed: got 50 iphlpapi.c:313: Test failed: got 11797144 vs 0 iphlpapi.c:332: Test failed: 0: got 00b40288 vs 00146e88 iphlpapi.c:335: Test failed: 0: got 00000000 vs 0000c0ff iphlpapi.c:350: Test failed: 0: got 00010042 vs 00300030 iphlpapi.c:352: Test failed: 0: got 1380319232 vs 65795 iphlpapi.c:356: Test failed: 0: got 11797144 iphlpapi.c:357: Test failed: 0: got 11797128 vs 3538996 iphlpapi.c:358: Test failed: 0: got 0 vs 8192054 iphlpapi.c:362: Test failed: 0: got 0 vs 3407924 iphlpapi.c:332: Test failed: 1: got 00000000 vs 00146e88 iphlpapi.c:335: Test failed: 1: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 1: got 00000000 vs 922a2a0a iphlpapi.c:352: Test failed: 1: got 0 vs 65863 iphlpapi.c:354: Test failed: 1: got 0 iphlpapi.c:360: Test failed: 1: got 10100000 iphlpapi.c:363: Test failed: 1: got 269488144 iphlpapi.c:364: Test failed: 1: got 269488144 iphlpapi.c:365: Test failed: 1: got 269488144 iphlpapi.c:366: Test failed: 1: got 269488144 iphlpapi.c:332: Test failed: 2: got 10101010 vs 00000000 iphlpapi.c:336: Test failed: 2: got 538968064 iphlpapi.c:350: Test failed: 2: got 20202020 vs 00000000 iphlpapi.c:352: Test failed: 2: got 538976288 vs 0 iphlpapi.c:354: Test failed: 2: got 538976288 iphlpapi.c:357: Test failed: 2: got 538976288 vs 0 iphlpapi.c:358: Test failed: 2: got 538976288 vs 0 iphlpapi.c:360: Test failed: 2: got 20202020 iphlpapi.c:354: Test failed: 3: got 0 iphlpapi.c:365: Test failed: 3: got 269484032 iphlpapi.c:366: Test failed: 3: got 269488144 iphlpapi.c:332: Test failed: 4: got 10101010 vs 00000000 iphlpapi.c:335: Test failed: 4: got 10101010 vs 00000000 iphlpapi.c:336: Test failed: 4: got 269488144 iphlpapi.c:350: Test failed: 4: got 10101010 vs 00000000 iphlpapi.c:352: Test failed: 4: got 269488144 vs 0 iphlpapi.c:354: Test failed: 4: got 0 iphlpapi.c:357: Test failed: 4: got 538968064 vs 65814 iphlpapi.c:358: Test failed: 4: got 538976288 vs 24 iphlpapi.c:360: Test failed: 4: got 20202020 iphlpapi.c:363: Test failed: 4: got 538976288 iphlpapi.c:364: Test failed: 4: got 538976288 iphlpapi.c:365: Test failed: 4: got 538976288 iphlpapi.c:332: Test failed: 5: got 00000000 vs 00000001 iphlpapi.c:354: Test failed: 5: got 0 iphlpapi.c:336: Test failed: 6: got 1650524160 iphlpapi.c:350: Test failed: 6: got 66656463 vs 00000000 iphlpapi.c:352: Test failed: 6: got 1785292903 vs 0 iphlpapi.c:354: Test failed: 6: got 1852664939 iphlpapi.c:357: Test failed: 6: got 1920036975 vs 0 iphlpapi.c:358: Test failed: 6: got 1987409011 vs 0 iphlpapi.c:360: Test failed: 6: got 7a797877 iphlpapi.c:363: Test failed: 6: got 1111556096 iphlpapi.c:364: Test failed: 6: got 1178944579 iphlpapi.c:365: Test failed: 6: got 1246316615 iphlpapi.c:366: Test failed: 6: got 1313688651 iphlpapi.c:332: Test failed: 7: got 5251504f vs 00000000 iphlpapi.c:335: Test failed: 7: got 56555453 vs 00000000 iphlpapi.c:336: Test failed: 7: got 1515804759 iphlpapi.c:354: Test failed: 7: got 0 iphlpapi.c:335: Test failed: 8: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 8: got 00000000 vs 005f0050 iphlpapi.c:356: Test failed: 8: got 0 iphlpapi.c:357: Test failed: 8: got 1650524160 vs 2949168 iphlpapi.c:358: Test failed: 8: got 1717920867 vs 3145776 iphlpapi.c:360: Test failed: 8: got 6a696867 iphlpapi.c:363: Test failed: 8: got 1920036975 iphlpapi.c:364: Test failed: 8: got 1987409011 iphlpapi.c:365: Test failed: 8: got 2054781047 iphlpapi.c:332: Test failed: 9: got 42410000 vs 00370035 iphlpapi.c:335: Test failed: 9: got 46454443 vs 00000000 iphlpapi.c:336: Test failed: 9: got 1246316615 iphlpapi.c:350: Test failed: 9: got 4e4d4c4b vs 00000000 iphlpapi.c:352: Test failed: 9: got 1381060687 vs 3407924 iphlpapi.c:354: Test failed: 9: got 1448432723 iphlpapi.c:357: Test failed: 9: got 1515804759 vs 0 iphlpapi.c:360: Test failed: 9: got 00b404c8 iphlpapi.c:363: Test failed: 9: got 1398079488 iphlpapi.c:364: Test failed: 9: got 2 iphlpapi.c:365: Test failed: 9: got 1252 iphlpapi.c:332: Test failed: 10: got 00000409 vs 00000000 iphlpapi.c:354: Test failed: 10: got 0 iphlpapi.c:354: Test failed: 11: got 0 iphlpapi.c:357: Test failed: 11: got 269484032 vs 0 iphlpapi.c:358: Test failed: 11: got 269488144 vs 0 iphlpapi.c:360: Test failed: 11: got 10101010 iphlpapi.c:363: Test failed: 11: got 269488144 iphlpapi.c:364: Test failed: 11: got 269488144 iphlpapi.c:365: Test failed: 11: got 269488144 iphlpapi.c:332: Test failed: 12: got 20200000 vs 00000000 iphlpapi.c:335: Test failed: 12: got 20202020 vs 00000000 iphlpapi.c:336: Test failed: 12: got 538976288 iphlpapi.c:350: Test failed: 12: got 20202020 vs 00000000 iphlpapi.c:352: Test failed: 12: got 538976288 vs 0 iphlpapi.c:354: Test failed: 12: got 538976288 iphlpapi.c:357: Test failed: 12: got 538976288 vs 0 iphlpapi.c:363: Test failed: 12: got 268435456 iphlpapi.c:364: Test failed: 12: got 268439552 iphlpapi.c:332: Test failed: 13: got 20000000 vs 00000002 iphlpapi.c:335: Test failed: 13: got 20002000 vs ffffffff iphlpapi.c:336: Test failed: 13: got 16 iphlpapi.c:350: Test failed: 13: got 00000000 vs 00000005 iphlpapi.c:352: Test failed: 13: got 536870912 vs 0 iphlpapi.c:356: Test failed: 13: got 0 iphlpapi.c:358: Test failed: 13: got 2097152 vs 0 iphlpapi.c:360: Test failed: 13: got 20000000 iphlpapi.c:363: Test failed: 13: got 269488128 iphlpapi.c:364: Test failed: 13: got 269488144 iphlpapi.c:365: Test failed: 13: got 269488144 iphlpapi.c:366: Test failed: 13: got 269488144 iphlpapi.c:332: Test failed: 14: got 10101010 vs 00000000 iphlpapi.c:335: Test failed: 14: got 10101010 vs 00000000 iphlpapi.c:336: Test failed: 14: got 269488128 iphlpapi.c:350: Test failed: 14: got 10101010 vs 00000000 iphlpapi.c:352: Test failed: 14: got 538976288 vs 0 iphlpapi.c:354: Test failed: 14: got 538976288 iphlpapi.c:357: Test failed: 14: got 538976288 vs 0 iphlpapi.c:358: Test failed: 14: got 538976288 vs 0 iphlpapi.c:360: Test failed: 14: got 20202020 iphlpapi.c:363: Test failed: 14: got 538976256 iphlpapi.c:364: Test failed: 14: got 538976288 iphlpapi.c:365: Test failed: 14: got 32 iphlpapi.c:332: Test failed: 15: got 00000000 vs 4401dcba iphlpapi.c:352: Test failed: 15: got 0 vs 1140972730 iphlpapi.c:354: Test failed: 15: got 0 iphlpapi.c:332: Test failed: 16: got 62610000 vs 00000000 iphlpapi.c:335: Test failed: 16: got 66656463 vs 00000000 iphlpapi.c:336: Test failed: 16: got 1785292903 iphlpapi.c:350: Test failed: 16: got 6e6d6c6b vs 00000000 iphlpapi.c:352: Test failed: 16: got 1920036975 vs 0 iphlpapi.c:354: Test failed: 16: got 1987409011 iphlpapi.c:357: Test failed: 16: got 2054781047 vs 1 iphlpapi.c:358: Test failed: 16: got 0 vs 8 iphlpapi.c:360: Test failed: 16: got 42410000 iphlpapi.c:362: Test failed: 16: got 1178944579 vs -1134987516 iphlpapi.c:363: Test failed: 16: got 1246316615 iphlpapi.c:364: Test failed: 16: got 1313688651 iphlpapi.c:365: Test failed: 16: got 1381060687 iphlpapi.c:366: Test failed: 16: got 1448432723 iphlpapi.c:332: Test failed: 17: got 5a595857 vs 00010076 iphlpapi.c:350: Test failed: 17: got 00000083 vs 00000000 iphlpapi.c:352: Test failed: 17: got -1711276032 vs 33554432 iphlpapi.c:354: Test failed: 17: got -1644127232 iphlpapi.c:360: Test failed: 17: got 8a000000 iphlpapi.c:363: Test failed: 17: got 255 iphlpapi.c:365: Test failed: 17: got -1442840576 iphlpapi.c:335: Test failed: 18: got 00b50000 vs 00000000 iphlpapi.c:336: Test failed: 18: got -1174405120 iphlpapi.c:352: Test failed: 18: got -488513536 vs 0 iphlpapi.c:354: Test failed: 18: got -421141277 iphlpapi.c:357: Test failed: 18: got -353769241 vs 1 iphlpapi.c:358: Test failed: 18: got -286397205 vs 0 iphlpapi.c:360: Test failed: 18: got f2f1f0ef iphlpapi.c:363: Test failed: 18: got -84281344 iphlpapi.c:364: Test failed: 18: got -16909061 iphlpapi.c:365: Test failed: 18: got -1027489569 iphlpapi.c:366: Test failed: 18: got -960117565 iphlpapi.c:332: Test failed: 19: got cac9c8c7 vs 00000000 iphlpapi.c:335: Test failed: 19: got cecdcccb vs 00000080 iphlpapi.c:336: Test failed: 19: got -758001457 iphlpapi.c:350: Test failed: 19: got d6d5d4d3 vs 00000000 iphlpapi.c:352: Test failed: 19: got -623257600 vs 67130450 iphlpapi.c:354: Test failed: 19: got -555885349 iphlpapi.c:357: Test failed: 19: got 159 vs 5242949 iphlpapi.c:358: Test failed: 19: got 145 vs 6226004 iphlpapi.c:360: Test failed: 19: got 53550000 iphlpapi.c:362: Test failed: 19: got 8 vs 5374047 iphlpapi.c:363: Test failed: 19: got 168430273 iphlpapi.c:364: Test failed: 19: got 4 iphlpapi.c:365: Test failed: 19: got 1326344 iphlpapi.c:366: Test failed: 19: got -1 iphlpapi.c:332: Test failed: 20: got 00000000 vs 00000002 iphlpapi.c:335: Test failed: 20: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 20: got 00000000 vs 01000000 iphlpapi.c:352: Test failed: 20: got 120 vs 2 iphlpapi.c:356: Test failed: 20: got 168430209 iphlpapi.c:357: Test failed: 20: got 4 vs 1140972730 iphlpapi.c:358: Test failed: 20: got 1326384 vs 2 iphlpapi.c:360: Test failed: 20: got ffffffff iphlpapi.c:366: Test failed: 20: got 120 iphlpapi.c:332: Test failed: 21: got 0a0a0a81 vs 0068005c iphlpapi.c:335: Test failed: 21: got 00000004 vs 000000e0 iphlpapi.c:336: Test failed: 21: got 1326424 iphlpapi.c:350: Test failed: 21: got ffffffff vs 0000ea60 iphlpapi.c:352: Test failed: 21: got 0 vs 6029375 iphlpapi.c:356: Test failed: 21: got 0 iphlpapi.c:357: Test failed: 21: got 0 vs -352302575 iphlpapi.c:358: Test failed: 21: got 0 vs 1342186385 iphlpapi.c:360: Test failed: 21: got ffffffff iphlpapi.c:362: Test failed: 21: got 0 vs 1311352 iphlpapi.c:335: Test failed: 22: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 22: got ffffffff vs 005c0065 iphlpapi.c:352: Test failed: 22: got 0 vs 8 iphlpapi.c:356: Test failed: 22: got 0 iphlpapi.c:357: Test failed: 22: got 0 vs 6422644 iphlpapi.c:358: Test failed: 22: got 0 vs 7733340 iphlpapi.c:362: Test failed: 22: got 0 vs 7536741 iphlpapi.c:365: Test failed: 22: got -1 iphlpapi.c:332: Test failed: 23: got 00000000 vs 00690066 iphlpapi.c:335: Test failed: 23: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 23: got 00000000 vs 00440041 iphlpapi.c:352: Test failed: 23: got 0 vs 7340133 iphlpapi.c:356: Test failed: 23: got 0 iphlpapi.c:357: Test failed: 23: got 0 vs 7274612 iphlpapi.c:358: Test failed: 23: got -1 vs 3080307 iphlpapi.c:362: Test failed: 23: got 0 vs 3080308 iphlpapi.c:332: Test failed: 24: got 00000000 vs 002f0072 iphlpapi.c:335: Test failed: 24: got 00000000 vs ffffffff iphlpapi.c:336: Test failed: 24: got -1 iphlpapi.c:350: Test failed: 24: got 00000000 vs 00650064 iphlpapi.c:352: Test failed: 24: got 0 vs 3080308 iphlpapi.c:356: Test failed: 24: got 0 iphlpapi.c:357: Test failed: 24: got 0 vs 3997765 iphlpapi.c:358: Test failed: 24: got 0 vs 6619246 iphlpapi.c:362: Test failed: 24: got 0 vs 105 iphlpapi.c:364: Test failed: 24: got -1 iphlpapi.c:332: Test failed: 25: got 00000000 vs 00450053 iphlpapi.c:335: Test failed: 25: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 25: got 00000000 vs 00790053 iphlpapi.c:352: Test failed: 25: got 0 vs 1311096 iphlpapi.c:356: Test failed: 25: got 0 iphlpapi.c:357: Test failed: 25: got -1 vs 5374061 iphlpapi.c:358: Test failed: 25: got 0 vs 3997812 iphlpapi.c:362: Test failed: 25: got 0 vs 6619252 iphlpapi.c:335: Test failed: 26: got ffffffff vs 0000ffff iphlpapi.c:350: Test failed: 26: got 00000000 vs 00149282 iphlpapi.c:352: Test failed: 26: got 0 vs 7274596 iphlpapi.c:356: Test failed: 26: got 0 iphlpapi.c:357: Test failed: 26: got 0 vs 1348776 iphlpapi.c:358: Test failed: 26: got 0 vs 1349098 iphlpapi.c:362: Test failed: 26: got 0 vs 1348748 iphlpapi.c:363: Test failed: 26: got -1 iphlpapi.c:332: Test failed: 27: got 00000000 vs 0014975e iphlpapi.c:335: Test failed: 27: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 27: got 00000000 vs 00149920 iphlpapi.c:352: Test failed: 27: got 0 vs 1349374 iphlpapi.c:356: Test failed: 27: got -1 iphlpapi.c:357: Test failed: 27: got 0 vs 1350472 iphlpapi.c:358: Test failed: 27: got 0 vs 1350564 iphlpapi.c:362: Test failed: 27: got 0 vs 1350422 iphlpapi.c:332: Test failed: 28: got ffffffff vs 00149dd6 iphlpapi.c:335: Test failed: 28: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 28: got 00000000 vs 00740065 iphlpapi.c:352: Test failed: 28: got 0 vs 1350948 iphlpapi.c:356: Test failed: 28: got 0 iphlpapi.c:357: Test failed: 28: got 0 vs 3997768 iphlpapi.c:358: Test failed: 28: got 0 vs 7143535 iphlpapi.c:332: Test failed: 29: got 00000000 vs 0074002f iphlpapi.c:335: Test failed: 29: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 29: got 00000000 vs 00720061 iphlpapi.c:352: Test failed: 29: got -1 vs 6619252 iphlpapi.c:356: Test failed: 29: got 0 iphlpapi.c:357: Test failed: 29: got 0 vs 7209065 iphlpapi.c:358: Test failed: 29: got 0 vs 4980815 iphlpapi.c:362: Test failed: 29: got 0 vs 7798831 iphlpapi.c:366: Test failed: 29: got -1 iphlpapi.c:332: Test failed: 30: got 00000000 vs 0077002f iphlpapi.c:335: Test failed: 30: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 30: got 00000000 vs 00650074 iphlpapi.c:352: Test failed: 30: got 0 vs 7274600 iphlpapi.c:356: Test failed: 30: got 0 iphlpapi.c:357: Test failed: 30: got 0 vs 6881399 iphlpapi.c:358: Test failed: 30: got 0 vs 6619252 iphlpapi.c:360: Test failed: 30: got ffffffff iphlpapi.c:362: Test failed: 30: got 0 vs 3997765 iphlpapi.c:332: Test failed: 31: got 00000000 vs 0053005f iphlpapi.c:335: Test failed: 31: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 31: got ffffffff vs 00490057 iphlpapi.c:352: Test failed: 31: got 0 vs 5111890 iphlpapi.c:356: Test failed: 31: got 0 iphlpapi.c:357: Test failed: 31: got 0 vs 5242949 iphlpapi.c:358: Test failed: 31: got 0 vs 4784198 iphlpapi.c:362: Test failed: 31: got 0 vs 5111881 iphlpapi.c:365: Test failed: 31: got -1 iphlpapi.c:332: Test failed: 32: got 00000000 vs 0065006e iphlpapi.c:335: Test failed: 32: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 32: got 00000000 vs 00620074 iphlpapi.c:352: Test failed: 32: got 0 vs 3080293 iphlpapi.c:356: Test failed: 32: got 0 iphlpapi.c:357: Test failed: 32: got 0 vs 7471216 iphlpapi.c:358: Test failed: 32: got -1 vs 7864425 iphlpapi.c:362: Test failed: 32: got 0 vs 6619246 iphlpapi.c:332: Test failed: 33: got 00000000 vs 0043004f iphlpapi.c:335: Test failed: 33: got 00000000 vs ffffffff iphlpapi.c:336: Test failed: 33: got -1 iphlpapi.c:350: Test failed: 33: got 00000000 vs 00660033 iphlpapi.c:352: Test failed: 33: got 0 vs 4784128 iphlpapi.c:356: Test failed: 33: got 0 iphlpapi.c:357: Test failed: 33: got 0 vs 3276854 iphlpapi.c:358: Test failed: 33: got 0 vs 3145777 iphlpapi.c:362: Test failed: 33: got 0 vs 3407926 iphlpapi.c:364: Test failed: 33: got -1 iphlpapi.c:332: Test failed: 34: got 00000000 vs 0030003a iphlpapi.c:335: Test failed: 34: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 34: got 00000000 vs 00540055 iphlpapi.c:352: Test failed: 34: got 0 vs 4259916 iphlpapi.c:356: Test failed: 34: got 0 iphlpapi.c:357: Test failed: 34: got -1 vs 104 iphlpapi.c:358: Test failed: 34: got 0 vs 5439597 iphlpapi.c:362: Test failed: 34: got 0 vs 7536737 iphlpapi.c:332: Test failed: 35: got 00000000 vs 006f0064 iphlpapi.c:350: Test failed: 35: got 00000000 vs 002e0064 iphlpapi.c:352: Test failed: 35: got 0 vs 7798876 iphlpapi.c:356: Test failed: 35: got 0 iphlpapi.c:357: Test failed: 35: got 0 vs 5439557 iphlpapi.c:358: Test failed: 35: got 0 vs 5439570 iphlpapi.c:362: Test failed: 35: got 0 vs 4390991 iphlpapi.c:363: Test failed: 35: got -1 iphlpapi.c:332: Test failed: 36: got 00000000 vs 006f0064 iphlpapi.c:335: Test failed: 36: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 36: got 00000000 vs 00690077 iphlpapi.c:352: Test failed: 36: got 0 vs 5701693 iphlpapi.c:356: Test failed: 36: got -1 iphlpapi.c:357: Test failed: 36: got 0 vs 6881399 iphlpapi.c:358: Test failed: 36: got 0 vs 7798895 iphlpapi.c:362: Test failed: 36: got 0 vs 6029370 iphlpapi.c:332: Test failed: 37: got ffffffff vs 00730077 iphlpapi.c:335: Test failed: 37: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 37: got 00000000 vs 0043003b iphlpapi.c:352: Test failed: 37: got 0 vs 7209065 iphlpapi.c:356: Test failed: 37: got 0 iphlpapi.c:357: Test failed: 37: got 0 vs 5701724 iphlpapi.c:358: Test failed: 37: got 0 vs 7274596 iphlpapi.c:332: Test failed: 38: got 00000000 vs 006c006c iphlpapi.c:335: Test failed: 38: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 38: got 00000000 vs 0063002e iphlpapi.c:352: Test failed: 38: got -1 vs 7536754 iphlpapi.c:356: Test failed: 38: got 0 iphlpapi.c:357: Test failed: 38: got 0 vs 7733294 iphlpapi.c:358: Test failed: 38: got 0 vs 3014715 iphlpapi.c:362: Test failed: 38: got 0 vs 3866724 iphlpapi.c:366: Test failed: 38: got -1 iphlpapi.c:332: Test failed: 39: got 00000000 vs 00650073 iphlpapi.c:350: Test failed: 39: got 00000000 vs 00450043 iphlpapi.c:352: Test failed: 39: got 0 vs 3866739 iphlpapi.c:356: Test failed: 39: got 0 iphlpapi.c:357: Test failed: 39: got 0 vs 3670136 iphlpapi.c:358: Test failed: 39: got 0 vs 5374032 iphlpapi.c:360: Test failed: 39: got ffffffff iphlpapi.c:362: Test failed: 39: got 0 vs 3997765 iphlpapi.c:332: Test failed: 40: got 00000000 vs 004e0045 iphlpapi.c:335: Test failed: 40: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 40: got 02000008 vs 006c0069 iphlpapi.c:352: Test failed: 40: got 1398079488 vs 6226002 iphlpapi.c:356: Test failed: 40: got 1968978499 iphlpapi.c:357: Test failed: 40: got 1936876915 vs 7209065 iphlpapi.c:358: Test failed: 40: got 1852405596 vs 3145777 iphlpapi.c:360: Test failed: 40: got 73657465 iphlpapi.c:363: Test failed: 40: got 2002546797 iphlpapi.c:364: Test failed: 40: got 1767666787 iphlpapi.c:365: Test failed: 40: got 1886152816 iphlpapi.c:366: Test failed: 40: got 1600745569 iphlpapi.c:332: Test failed: 41: got 74736574 vs 0074006e iphlpapi.c:335: Test failed: 41: got 6578652e vs ffffffff iphlpapi.c:336: Test failed: 41: got 1752197408 iphlpapi.c:350: Test failed: 41: got 7061706c vs 00560045 iphlpapi.c:352: Test failed: 41: got 105 vs 7209065 iphlpapi.c:356: Test failed: 41: got 67108879 iphlpapi.c:357: Test failed: 41: got 1398079488 vs 5439561 iphlpapi.c:358: Test failed: 41: got 3801155 vs 3997774 iphlpapi.c:360: Test failed: 41: got 0075005c iphlpapi.c:363: Test failed: 41: got 7536754 iphlpapi.c:364: Test failed: 41: got 7798876 iphlpapi.c:365: Test failed: 41: got 7209065 iphlpapi.c:366: Test failed: 41: got 7602277 iphlpapi.c:332: Test failed: 42: got 00730065 vs 003d0072 iphlpapi.c:335: Test failed: 42: got 005c0074 vs 00000000 iphlpapi.c:336: Test failed: 42: got 6619220 iphlpapi.c:350: Test failed: 42: got 0070006d vs 00790073 iphlpapi.c:352: Test failed: 42: got 7798876 vs 7209065 iphlpapi.c:356: Test failed: 42: got 7602275 iphlpapi.c:357: Test failed: 42: got 6881372 vs 7602291 iphlpapi.c:358: Test failed: 42: got 6815856 vs 3276851 iphlpapi.c:360: Test failed: 42: got 0070006c iphlpapi.c:362: Test failed: 42: got 7340129 vs 7929971 iphlpapi.c:363: Test failed: 42: got 6226025 iphlpapi.c:364: Test failed: 42: got 6619252 iphlpapi.c:365: Test failed: 42: got 7602291 iphlpapi.c:366: Test failed: 42: got 6619182 iphlpapi.c:332: Test failed: 43: got 00650078 vs 00650073 iphlpapi.c:335: Test failed: 43: got 00690020 vs ffffffff iphlpapi.c:336: Test failed: 43: got 6815856 iphlpapi.c:350: Test failed: 43: got 0070006c vs 0070006d iphlpapi.c:352: Test failed: 43: got 7340129 vs 3801155 iphlpapi.c:356: Test failed: 43: got 105 iphlpapi.c:357: Test failed: 43: got 0 vs 6619252 iphlpapi.c:358: Test failed: 43: got 184549379 vs 5505116 iphlpapi.c:360: Test failed: 43: got 53550000 iphlpapi.c:363: Test failed: 43: got 11796992 iphlpapi.c:366: Test failed: 43: got 50462261 iphlpapi.c:332: Test failed: 44: got 52460000 vs 003d0041 iphlpapi.c:335: Test failed: 44: got 00b40098 vs ffffffff iphlpapi.c:336: Test failed: 44: got 11797160 iphlpapi.c:350: Test failed: 44: got 00000000 vs 00730065 iphlpapi.c:352: Test failed: 44: got 0 vs 4456528 iphlpapi.c:356: Test failed: 44: got 0 iphlpapi.c:357: Test failed: 44: got 0 vs 4980803 iphlpapi.c:358: Test failed: 44: got 0 vs 5505102 iphlpapi.c:362: Test failed: 44: got 0 vs 103 iphlpapi.c:332: Test failed: 45: got 00000000 vs 0065006c iphlpapi.c:335: Test failed: 45: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 45: got 00000000 vs 004f0048 iphlpapi.c:352: Test failed: 45: got 0 vs 7209071 iphlpapi.c:356: Test failed: 45: got 0 iphlpapi.c:357: Test failed: 45: got 0 vs 6619252 iphlpapi.c:358: Test failed: 45: got 0 vs 4980736 iphlpapi.c:362: Test failed: 45: got 0 vs 6619246 iphlpapi.c:332: Test failed: 46: got 00000000 vs 003d0041 iphlpapi.c:335: Test failed: 46: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 46: got 00000000 vs 00730065 iphlpapi.c:352: Test failed: 46: got 0 vs 4456528 iphlpapi.c:356: Test failed: 46: got 0 iphlpapi.c:357: Test failed: 46: got 0 vs 5177415 iphlpapi.c:358: Test failed: 46: got 0 vs 5374021 iphlpapi.c:362: Test failed: 46: got 0 vs 5177420 iphlpapi.c:332: Test failed: 47: got 00000000 vs 00420045 iphlpapi.c:335: Test failed: 47: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 47: got 00000000 vs 004d0041 iphlpapi.c:352: Test failed: 47: got 0 vs 5505111 iphlpapi.c:356: Test failed: 47: got 0 iphlpapi.c:357: Test failed: 47: got 0 vs 5111881 iphlpapi.c:358: Test failed: 47: got 0 vs 4325460 iphlpapi.c:362: Test failed: 47: got 0 vs 4259917 iphlpapi.c:332: Test failed: 48: got 00000000 vs 00450053 iphlpapi.c:335: Test failed: 48: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 48: got 00000000 vs 00550000 iphlpapi.c:352: Test failed: 48: got 0 vs 3211313 iphlpapi.c:356: Test failed: 48: got 0 iphlpapi.c:357: Test failed: 48: got 0 vs 6029427 iphlpapi.c:358: Test failed: 48: got 0 vs 6619246 iphlpapi.c:362: Test failed: 48: got 0 vs 7471205 iphlpapi.c:332: Test failed: 49: got 00000000 vs 00520045 iphlpapi.c:335: Test failed: 49: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 49: got 00000000 vs 0067006f iphlpapi.c:352: Test failed: 49: got 0 vs 4980812 iphlpapi.c:356: Test failed: 49: got 0 iphlpapi.c:357: Test failed: 49: got 0 vs 3997793 iphlpapi.c:358: Test failed: 49: got 0 vs 5242972 iphlpapi.c:362: Test failed: 49: got 0 vs 7602273 iphlpapi.c:332: Test failed: 50: got 00000000 vs 00500000 iphlpapi.c:335: Test failed: 50: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 50: got 00000000 vs 0050005c iphlpapi.c:352: Test failed: 50: got 0 vs 6357060 iphlpapi.c:356: Test failed: 50: got 0 iphlpapi.c:357: Test failed: 50: got 0 vs 4390973 iphlpapi.c:358: Test failed: 50: got 0 vs 7471184 iphlpapi.c:362: Test failed: 50: got 0 vs 7536741 iphlpapi.c:332: Test failed: 51: got 00000000 vs 00000073 iphlpapi.c:335: Test failed: 51: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 51: got 00000000 vs 006c0069 iphlpapi.c:352: Test failed: 51: got 0 vs 6881350 iphlpapi.c:356: Test failed: 51: got 0 iphlpapi.c:357: Test failed: 51: got 0 vs 6029427 iphlpapi.c:358: Test failed: 51: got 0 vs 7143533 iphlpapi.c:362: Test failed: 51: got 0 vs 6619244 iphlpapi.c:332: Test failed: 52: got 00000000 vs 004d004f iphlpapi.c:335: Test failed: 52: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 52: got 00000000 vs 00420045 iphlpapi.c:352: Test failed: 52: got 0 vs 7536741 iphlpapi.c:356: Test failed: 52: got 0 iphlpapi.c:357: Test failed: 52: got 0 vs 4587604 iphlpapi.c:358: Test failed: 52: got 0 vs 3997773 iphlpapi.c:362: Test failed: 52: got 0 vs 4259916 iphlpapi.c:332: Test failed: 53: got 00000000 vs 00530045 iphlpapi.c:335: Test failed: 53: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 53: got 00000000 vs 00000030 iphlpapi.c:352: Test failed: 53: got 0 vs 5111881 iphlpapi.c:356: Test failed: 53: got 0 iphlpapi.c:357: Test failed: 53: got 0 vs 4390979 iphlpapi.c:358: Test failed: 53: got 0 vs 3997779 iphlpapi.c:362: Test failed: 53: got 0 vs 5570643 iphlpapi.c:332: Test failed: 54: got 00000000 vs 00490044 iphlpapi.c:335: Test failed: 54: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 54: got 00000000 vs 00690077 iphlpapi.c:352: Test failed: 54: got 0 vs 5177416 iphlpapi.c:356: Test failed: 54: got 0 iphlpapi.c:357: Test failed: 54: got 0 vs 3997778 iphlpapi.c:358: Test failed: 54: got 0 vs 6029375 iphlpapi.c:362: Test failed: 54: got 0 vs 4784196 iphlpapi.c:332: Test failed: 55: got 00000000 vs 0065006e iphlpapi.c:335: Test failed: 55: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 55: got 00000000 vs 00620074 iphlpapi.c:352: Test failed: 55: got 0 vs 6029413 iphlpapi.c:356: Test failed: 55: got 0 iphlpapi.c:357: Test failed: 55: got 0 vs 4784215 iphlpapi.c:358: Test failed: 55: got 0 vs 5177411 iphlpapi.c:362: Test failed: 55: got 0 vs 50 iphlpapi.c:332: Test failed: 56: got 00000000 vs 005c003f iphlpapi.c:335: Test failed: 56: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 56: got 00000000 vs 00740073 iphlpapi.c:352: Test failed: 56: got 0 vs 3997778 iphlpapi.c:356: Test failed: 56: got 0 iphlpapi.c:357: Test failed: 56: got 0 vs 7798876 iphlpapi.c:358: Test failed: 56: got 0 vs 7340133 iphlpapi.c:362: Test failed: 56: got 0 vs 7471201 iphlpapi.c:332: Test failed: 57: got 00000000 vs 00000032 iphlpapi.c:335: Test failed: 57: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 57: got 00000000 vs 0065006d iphlpapi.c:352: Test failed: 57: got 0 vs 6881399 iphlpapi.c:356: Test failed: 57: got 0 iphlpapi.c:357: Test failed: 57: got 0 vs 7602291 iphlpapi.c:358: Test failed: 57: got 0 vs 3080308 iphlpapi.c:362: Test failed: 57: got 0 vs 6619252 iphlpapi.c:332: Test failed: 58: got 00000000 vs 006e0069 iphlpapi.c:335: Test failed: 58: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 58: got 00000000 vs 00570000 iphlpapi.c:352: Test failed: 58: got 0 vs 6619246 iphlpapi.c:356: Test failed: 58: got 0 iphlpapi.c:357: Test failed: 58: got 0 vs 7602291 iphlpapi.c:358: Test failed: 58: got 0 vs 5111881 iphlpapi.c:362: Test failed: 58: got 0 vs 6619252 iphlpapi.c:332: Test failed: 59: got 00000000 vs 003d0045 iphlpapi.c:335: Test failed: 59: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 59: got 00000000 vs 00760069 iphlpapi.c:352: Test failed: 59: got 0 vs 4390991 iphlpapi.c:356: Test failed: 59: got 0 iphlpapi.c:357: Test failed: 59: got 0 vs 7798876 iphlpapi.c:358: Test failed: 59: got 0 vs 7274596 iphlpapi.c:362: Test failed: 59: got 0 vs 3801155 iphlpapi.c:332: Test failed: 60: got 00000000 vs 004151c0 iphlpapi.c:335: Test failed: 60: got 00000000 vs ffffffff iphlpapi.c:352: Test failed: 60: got 0 vs 383 iphlpapi.c:354: Test failed: 60: got 0 iphlpapi.c:354: Test failed: 61: got 0 iphlpapi.c:354: Test failed: 62: got 0 iphlpapi.c:354: Test failed: 63: got 0 iphlpapi.c:354: Test failed: 64: got 0 iphlpapi.c:354: Test failed: 65: got 0 iphlpapi.c:354: Test failed: 66: got 0 iphlpapi.c:354: Test failed: 67: got 0 iphlpapi.c:354: Test failed: 68: got 0 iphlpapi.c:354: Test failed: 69: got 0 iphlpapi.c:354: Test failed: 70: got 0 iphlpapi.c:354: Test failed: 71: got 0 iphlpapi.c:354: Test failed: 72: got 0 iphlpapi.c:354: Test failed: 73: got 0 iphlpapi.c:354: Test failed: 74: got 0 iphlpapi.c:354: Test failed: 75: got 0 iphlpapi.c:354: Test failed: 76: got 0 iphlpapi.c:354: Test failed: 77: got 0 iphlpapi.c:354: Test failed: 78: got 0 iphlpapi.c:354: Test failed: 79: got 0 iphlpapi.c:354: Test failed: 80: got 0 iphlpapi.c:354: Test failed: 81: got 0 iphlpapi.c:354: Test failed: 82: got 0 iphlpapi.c:354: Test failed: 83: got 0 iphlpapi.c:354: Test failed: 84: got 0 iphlpapi.c:354: Test failed: 85: got 0 iphlpapi.c:354: Test failed: 86: got 0 iphlpapi.c:354: Test failed: 87: got 0 iphlpapi.c:354: Test failed: 88: got 0 iphlpapi.c:354: Test failed: 89: got 0 iphlpapi.c:358: Test failed: 89: got 0 vs 60000 iphlpapi.c:354: Test failed: 90: got 0 iphlpapi.c:354: Test failed: 91: got 0 iphlpapi.c:354: Test failed: 92: got 0 iphlpapi.c:354: Test failed: 93: got 0 iphlpapi.c:354: Test failed: 94: got 0 iphlpapi.c:362: Test failed: 94: got 0 vs -747437056 iphlpapi.c:354: Test failed: 95: got 0 iphlpapi.c:354: Test failed: 96: got 0 iphlpapi.c:354: Test failed: 97: got 0 iphlpapi.c:354: Test failed: 98: got 0 iphlpapi.c:354: Test failed: 99: got 0 iphlpapi.c:354: Test failed: 100: got 0 iphlpapi.c:354: Test failed: 101: got 0 iphlpapi.c:354: Test failed: 102: got 0 iphlpapi.c:354: Test failed: 103: got 0 iphlpapi.c:354: Test failed: 104: got 0 iphlpapi.c:354: Test failed: 105: got 0 iphlpapi.c:354: Test failed: 106: got 0 iphlpapi.c:357: Test failed: 106: got 0 vs 50457046 iphlpapi.c:358: Test failed: 106: got 0 vs 1310872 iphlpapi.c:332: Test failed: 107: got 00000000 vs 00060000 iphlpapi.c:335: Test failed: 107: got 00000000 vs 000000ff iphlpapi.c:354: Test failed: 107: got 0 iphlpapi.c:354: Test failed: 108: got 0 iphlpapi.c:354: Test failed: 109: got 0 iphlpapi.c:354: Test failed: 110: got 0 iphlpapi.c:354: Test failed: 111: got 0 iphlpapi.c:358: Test failed: 111: got 0 vs 7077892 iphlpapi.c:354: Test failed: 112: got 0 iphlpapi.c:354: Test failed: 113: got 0 iphlpapi.c:354: Test failed: 114: got 0 iphlpapi.c:354: Test failed: 115: got 0 iphlpapi.c:354: Test failed: 116: got 0 iphlpapi.c:357: Test failed: 116: got 0 vs 60000 iphlpapi.c:362: Test failed: 116: got 0 vs 60000 iphlpapi.c:332: Test failed: 117: got 00000000 vs 00000003 iphlpapi.c:352: Test failed: 117: got 0 vs 60000 iphlpapi.c:354: Test failed: 117: got 0 iphlpapi.c:354: Test failed: 118: got 0 iphlpapi.c:354: Test failed: 119: got 0 iphlpapi.c:354: Test failed: 120: got 0 iphlpapi.c:354: Test failed: 121: got 0 iphlpapi.c:354: Test failed: 122: got 0 iphlpapi.c:358: Test failed: 122: got 0 vs 1986348148 iphlpapi.c:362: Test failed: 122: got 0 vs 2 iphlpapi.c:354: Test failed: 123: got 0 iphlpapi.c:354: Test failed: 124: got 0 iphlpapi.c:354: Test failed: 125: got 0 iphlpapi.c:354: Test failed: 126: got 0 iphlpapi.c:354: Test failed: 127: got 0 iphlpapi.c:354: Test failed: 128: got 0 iphlpapi.c:354: Test failed: 129: got 0 iphlpapi.c:354: Test failed: 130: got 0 iphlpapi.c:354: Test failed: 131: got 0 iphlpapi.c:354: Test failed: 132: got 0 iphlpapi.c:354: Test failed: 133: got 0 iphlpapi.c:332: Test failed: 134: got 00000000 vs 00000004 iphlpapi.c:352: Test failed: 134: got 0 vs 4 iphlpapi.c:354: Test failed: 134: got 0 iphlpapi.c:354: Test failed: 135: got 0 iphlpapi.c:354: Test failed: 136: got 0 iphlpapi.c:354: Test failed: 137: got 0 iphlpapi.c:354: Test failed: 138: got 0 iphlpapi.c:352: Test failed: 139: got 0 vs 31013645 iphlpapi.c:354: Test failed: 139: got 0 iphlpapi.c:354: Test failed: 140: got 0 iphlpapi.c:354: Test failed: 141: got 0 iphlpapi.c:354: Test failed: 142: got 0 iphlpapi.c:354: Test failed: 143: got 0 iphlpapi.c:358: Test failed: 143: got 0 vs 50456564 iphlpapi.c:354: Test failed: 144: got 0 iphlpapi.c:354: Test failed: 145: got 0 iphlpapi.c:354: Test failed: 146: got 0 iphlpapi.c:354: Test failed: 147: got 0 iphlpapi.c:354: Test failed: 148: got 0 iphlpapi.c:354: Test failed: 149: got 0 iphlpapi.c:354: Test failed: 150: got 0 iphlpapi.c:354: Test failed: 151: got 0 iphlpapi.c:354: Test failed: 152: got 0 iphlpapi.c:354: Test failed: 153: got 0 iphlpapi.c:354: Test failed: 154: got 0 iphlpapi.c:354: Test failed: 155: got 0 iphlpapi.c:354: Test failed: 156: got 0 iphlpapi.c:354: Test failed: 157: got 0 iphlpapi.c:354: Test failed: 158: got 0 iphlpapi.c:354: Test failed: 159: got 0 iphlpapi.c:354: Test failed: 160: got 0 iphlpapi.c:354: Test failed: 161: got 0 iphlpapi.c:354: Test failed: 162: got 0 iphlpapi.c:354: Test failed: 163: got 0 iphlpapi.c:354: Test failed: 164: got 0 iphlpapi.c:354: Test failed: 165: got 0 iphlpapi.c:354: Test failed: 166: got 0 iphlpapi.c:354: Test failed: 167: got 0 iphlpapi.c:354: Test failed: 168: got 0 iphlpapi.c:354: Test failed: 169: got 0 iphlpapi.c:354: Test failed: 170: got 0 iphlpapi.c:354: Test failed: 171: got 0 iphlpapi.c:354: Test failed: 172: got 0 iphlpapi.c:354: Test failed: 173: got 0 iphlpapi.c:354: Test failed: 174: got 0 iphlpapi.c:354: Test failed: 175: got 0 iphlpapi.c:354: Test failed: 176: got 0 iphlpapi.c:354: Test failed: 177: got 0 iphlpapi.c:354: Test failed: 178: got 0 iphlpapi.c:354: Test failed: 179: got 0 iphlpapi.c:354: Test failed: 180: got 0 iphlpapi.c:354: Test failed: 181: got 0 iphlpapi.c:354: Test failed: 182: got 0 iphlpapi.c:354: Test failed: 183: got 0 iphlpapi.c:354: Test failed: 184: got 0 iphlpapi.c:354: Test failed: 185: got 0 iphlpapi.c:357: Test failed: 185: got 0 vs 1310872 iphlpapi.c:362: Test failed: 185: got 0 vs 1380319232 iphlpapi.c:354: Test failed: 186: got 0 iphlpapi.c:354: Test failed: 187: got 0 iphlpapi.c:354: Test failed: 188: got 0 iphlpapi.c:354: Test failed: 189: got 0 iphlpapi.c:354: Test failed: 190: got 0 iphlpapi.c:354: Test failed: 191: got 0 iphlpapi.c:354: Test failed: 192: got 0 iphlpapi.c:354: Test failed: 193: got 0 iphlpapi.c:354: Test failed: 194: got 0 iphlpapi.c:354: Test failed: 195: got 0 iphlpapi.c:354: Test failed: 196: got 0 iphlpapi.c:354: Test failed: 197: got 0 iphlpapi.c:354: Test failed: 198: got 0 iphlpapi.c:354: Test failed: 199: got 0 iphlpapi.c:354: Test failed: 200: got 0 iphlpapi.c:354: Test failed: 201: got 0 iphlpapi.c:354: Test failed: 202: got 0 iphlpapi.c:354: Test failed: 203: got 0 iphlpapi.c:354: Test failed: 204: got 0 iphlpapi.c:354: Test failed: 205: got 0 iphlpapi.c:354: Test failed: 206: got 0 iphlpapi.c:354: Test failed: 207: got 0 iphlpapi.c:354: Test failed: 208: got 0 iphlpapi.c:354: Test failed: 209: got 0 iphlpapi.c:354: Test failed: 210: got 0 iphlpapi.c:354: Test failed: 211: got 0 iphlpapi.c:354: Test failed: 212: got 0 iphlpapi.c:354: Test failed: 213: got 0 iphlpapi.c:354: Test failed: 214: got 0 iphlpapi.c:354: Test failed: 215: got 0 iphlpapi.c:354: Test failed: 216: got 0 iphlpapi.c:354: Test failed: 217: got 0 iphlpapi.c:354: Test failed: 218: got 0 iphlpapi.c:354: Test failed: 219: got 0 iphlpapi.c:354: Test failed: 220: got 0 iphlpapi.c:354: Test failed: 221: got 0 iphlpapi.c:354: Test failed: 222: got 0 iphlpapi.c:354: Test failed: 223: got 0 iphlpapi.c:354: Test failed: 224: got 0 iphlpapi.c:354: Test failed: 225: got 0 iphlpapi.c:354: Test failed: 226: got 0 iphlpapi.c:354: Test failed: 227: got 0 iphlpapi.c:354: Test failed: 228: got 0 iphlpapi.c:354: Test failed: 229: got 0 iphlpapi.c:354: Test failed: 230: got 0 iphlpapi.c:354: Test failed: 231: got 0 iphlpapi.c:354: Test failed: 232: got 0 iphlpapi.c:354: Test failed: 233: got 0 iphlpapi.c:354: Test failed: 234: got 0 iphlpapi.c:354: Test failed: 235: got 0 iphlpapi.c:354: Test failed: 236: got 0 iphlpapi.c:354: Test failed: 237: got 0 iphlpapi.c:354: Test failed: 238: got 0 iphlpapi.c:354: Test failed: 239: got 0 iphlpapi.c:354: Test failed: 240: got 0 iphlpapi.c:354: Test failed: 241: got 0 iphlpapi.c:354: Test failed: 242: got 0 iphlpapi.c:354: Test failed: 243: got 0 iphlpapi.c:354: Test failed: 244: got 0 iphlpapi.c:354: Test failed: 245: got 0 iphlpapi.c:354: Test failed: 246: got 0 iphlpapi.c:354: Test failed: 247: got 0 iphlpapi.c:354: Test failed: 248: got 0 iphlpapi.c:354: Test failed: 249: got 0 iphlpapi.c:354: Test failed: 250: got 0 iphlpapi.c:354: Test failed: 251: got 0 iphlpapi.c:354: Test failed: 252: got 0 iphlpapi.c:354: Test failed: 253: got 0 iphlpapi.c:354: Test failed: 254: got 0 iphlpapi.c:354: Test failed: 255: got 0 iphlpapi.c:354: Test failed: 256: got 0 iphlpapi.c:354: Test failed: 257: got 0 iphlpapi.c:354: Test failed: 258: got 0 iphlpapi.c:354: Test failed: 259: got 0 iphlpapi.c:354: Test failed: 260: got 0 iphlpapi.c:354: Test failed: 261: got 0 iphlpapi.c:354: Test failed: 262: got 0 iphlpapi.c:354: Test failed: 263: got 0 iphlpapi.c:354: Test failed: 264: got 0 iphlpapi.c:354: Test failed: 265: got 0 iphlpapi.c:354: Test failed: 266: got 0 iphlpapi.c:354: Test failed: 267: got 0 iphlpapi.c:354: Test failed: 268: got 0 iphlpapi.c:354: Test failed: 269: got 0 iphlpapi.c:354: Test failed: 270: got 0 iphlpapi.c:354: Test failed: 271: got 0 iphlpapi.c:354: Test failed: 272: got 0 iphlpapi.c:354: Test failed: 273: got 0 iphlpapi.c:354: Test failed: 274: got 0 iphlpapi.c:354: Test failed: 275: got 0 iphlpapi.c:354: Test failed: 276: got 0 iphlpapi.c:354: Test failed: 277: got 0 iphlpapi.c:354: Test failed: 278: got 0 iphlpapi.c:354: Test failed: 279: got 0 iphlpapi.c:354: Test failed: 280: got 0 iphlpapi.c:354: Test failed: 281: got 0 iphlpapi.c:354: Test failed: 282: got 0 iphlpapi.c:354: Test failed: 283: got 0 iphlpapi.c:354: Test failed: 284: got 0 iphlpapi.c:354: Test failed: 285: got 0 iphlpapi.c:354: Test failed: 286: got 0 iphlpapi.c:354: Test failed: 287: got 0 iphlpapi.c:354: Test failed: 288: got 0 iphlpapi.c:354: Test failed: 289: got 0 iphlpapi.c:354: Test failed: 290: got 0 iphlpapi.c:354: Test failed: 291: got 0 iphlpapi.c:354: Test failed: 292: got 0 iphlpapi.c:354: Test failed: 293: got 0 iphlpapi.c:354: Test failed: 294: got 0 iphlpapi.c:354: Test failed: 295: got 0 iphlpapi.c:354: Test failed: 296: got 0 iphlpapi.c:354: Test failed: 297: got 0 iphlpapi.c:354: Test failed: 298: got 0 iphlpapi.c:354: Test failed: 299: got 0 iphlpapi.c:354: Test failed: 300: got 0 iphlpapi.c:354: Test failed: 301: got 0 iphlpapi.c:354: Test failed: 302: got 0 iphlpapi.c:354: Test failed: 303: got 0 iphlpapi.c:354: Test failed: 304: got 0 iphlpapi.c:354: Test failed: 305: got 0 iphlpapi.c:354: Test failed: 306: got 0 iphlpapi.c:354: Test failed: 307: got 0 iphlpapi.c:354: Test failed: 308: got 0 iphlpapi.c:354: Test failed: 309: got 0 iphlpapi.c:354: Test failed: 310: got 0 iphlpapi.c:354: Test failed: 311: got 0 iphlpapi.c:354: Test failed: 312: got 0 iphlpapi.c:354: Test failed: 313: got 0 iphlpapi.c:354: Test failed: 314: got 0 iphlpapi.c:354: Test failed: 315: got 0 iphlpapi.c:354: Test failed: 316: got 0 iphlpapi.c:354: Test failed: 317: got 0 iphlpapi.c:354: Test failed: 318: got 0 iphlpapi.c:354: Test failed: 319: got 0 iphlpapi.c:354: Test failed: 320: got 0 iphlpapi.c:354: Test failed: 321: got 0 iphlpapi.c:354: Test failed: 322: got 0 iphlpapi.c:354: Test failed: 323: got 0 iphlpapi.c:354: Test failed: 324: got 0 iphlpapi.c:354: Test failed: 325: got 0 iphlpapi.c:354: Test failed: 326: got 0 iphlpapi.c:354: Test failed: 327: got 0 iphlpapi.c:354: Test failed: 328: got 0 iphlpapi.c:354: Test failed: 329: got 0 iphlpapi.c:354: Test failed: 330: got 0 iphlpapi.c:354: Test failed: 331: got 0 iphlpapi.c:354: Test failed: 332: got 0 iphlpapi.c:354: Test failed: 333: got 0 iphlpapi.c:354: Test failed: 334: got 0 iphlpapi.c:354: Test failed: 335: got 0 iphlpapi.c:354: Test failed: 336: got 0 iphlpapi.c:354: Test failed: 337: got 0 iphlpapi.c:354: Test failed: 338: got 0 iphlpapi.c:354: Test failed: 339: got 0 iphlpapi.c:354: Test failed: 340: got 0 iphlpapi.c:354: Test failed: 341: got 0 iphlpapi.c:354: Test failed: 342: got 0 iphlpapi.c:354: Test failed: 343: got 0 iphlpapi.c:354: Test failed: 344: got 0 iphlpapi.c:354: Test failed: 345: got 0 iphlpapi.c:354: Test failed: 346: got 0 iphlpapi.c:354: Test failed: 347: got 0 iphlpapi.c:354: Test failed: 348: got 0 iphlpapi.c:354: Test failed: 349: got 0 iphlpapi.c:354: Test failed: 350: got 0 iphlpapi.c:354: Test failed: 351: got 0 iphlpapi.c:354: Test failed: 352: got 0 iphlpapi.c:354: Test failed: 353: got 0 iphlpapi.c:354: Test failed: 354: got 0 iphlpapi.c:354: Test failed: 355: got 0 iphlpapi.c:354: Test failed: 356: got 0 iphlpapi.c:354: Test failed: 357: got 0 iphlpapi.c:354: Test failed: 358: got 0 iphlpapi.c:354: Test failed: 359: got 0 iphlpapi.c:354: Test failed: 360: got 0 iphlpapi.c:354: Test failed: 361: got 0 iphlpapi.c:354: Test failed: 362: got 0 iphlpapi.c:354: Test failed: 363: got 0 iphlpapi.c:354: Test failed: 364: got 0 iphlpapi.c:354: Test failed: 365: got 0 iphlpapi.c:354: Test failed: 366: got 0 iphlpapi.c:354: Test failed: 367: got 0 iphlpapi.c:354: Test failed: 368: got 0 iphlpapi.c:354: Test failed: 369: got 0 iphlpapi.c:354: Test failed: 370: got 0 iphlpapi.c:354: Test failed: 371: got 0 iphlpapi.c:354: Test failed: 372: got 0 iphlpapi.c:354: Test failed: 373: got 0 iphlpapi.c:354: Test failed: 374: got 0 iphlpapi.c:354: Test failed: 375: got 0 iphlpapi.c:354: Test failed: 376: got 0 iphlpapi.c:354: Test failed: 377: got 0 iphlpapi.c:354: Test failed: 378: got 0 iphlpapi.c:354: Test failed: 379: got 0 iphlpapi.c:354: Test failed: 380: got 0 iphlpapi.c:354: Test failed: 381: got 0 iphlpapi.c:354: Test failed: 382: got 0 iphlpapi.c:354: Test failed: 383: got 0 iphlpapi.c:354: Test failed: 384: got 0 iphlpapi.c:354: Test failed: 385: got 0 iphlpapi.c:354: Test failed: 386: got 0 iphlpapi.c:354: Test failed: 387: got 0 iphlpapi.c:354: Test failed: 388: got 0 iphlpapi.c:354: Test failed: 389: got 0 iphlpapi.c:354: Test failed: 390: got 0 iphlpapi.c:354: Test failed: 391: got 0 iphlpapi.c:354: Test failed: 392: got 0 iphlpapi.c:354: Test failed: 393: got 0 iphlpapi.c:354: Test failed: 394: got 0 iphlpapi.c:354: Test failed: 395: got 0 iphlpapi.c:354: Test failed: 396: got 0 iphlpapi.c:354: Test failed: 397: got 0 iphlpapi.c:354: Test failed: 398: got 0 iphlpapi.c:354: Test failed: 399: got 0 iphlpapi.c:354: Test failed: 400: got 0 iphlpapi.c:354: Test failed: 401: got 0 iphlpapi.c:354: Test failed: 402: got 0 iphlpapi.c:354: Test failed: 403: got 0 iphlpapi.c:354: Test failed: 404: got 0 iphlpapi.c:354: Test failed: 405: got 0 iphlpapi.c:354: Test failed: 406: got 0 iphlpapi.c:354: Test failed: 407: got 0 iphlpapi.c:354: Test failed: 408: got 0 iphlpapi.c:354: Test failed: 409: got 0 iphlpapi.c:354: Test failed: 410: got 0 iphlpapi.c:354: Test failed: 411: got 0 iphlpapi.c:354: Test failed: 412: got 0 iphlpapi.c:354: Test failed: 413: got 0 iphlpapi.c:354: Test failed: 414: got 0 iphlpapi.c:354: Test failed: 415: got 0 iphlpapi.c:354: Test failed: 416: got 0 iphlpapi.c:354: Test failed: 417: got 0 iphlpapi.c:354: Test failed: 418: got 0 iphlpapi.c:354: Test failed: 419: got 0 iphlpapi.c:354: Test failed: 420: got 0 iphlpapi.c:354: Test failed: 421: got 0 iphlpapi.c:354: Test failed: 422: got 0 iphlpapi.c:354: Test failed: 423: got 0 iphlpapi.c:354: Test failed: 424: got 0 iphlpapi.c:354: Test failed: 425: got 0 iphlpapi.c:354: Test failed: 426: got 0 iphlpapi.c:354: Test failed: 427: got 0 iphlpapi.c:354: Test failed: 428: got 0 iphlpapi.c:354: Test failed: 429: got 0 iphlpapi.c:354: Test failed: 430: got 0 iphlpapi.c:354: Test failed: 431: got 0 iphlpapi.c:354: Test failed: 432: got 0 iphlpapi.c:354: Test failed: 433: got 0 iphlpapi.c:354: Test failed: 434: got 0 iphlpapi.c:354: Test failed: 435: got 0 iphlpapi.c:354: Test failed: 436: got 0 iphlpapi.c:354: Test failed: 437: got 0 iphlpapi.c:354: Test failed: 438: got 0 iphlpapi.c:354: Test failed: 439: got 0 iphlpapi.c:354: Test failed: 440: got 0 iphlpapi.c:354: Test failed: 441: got 0 iphlpapi.c:354: Test failed: 442: got 0 iphlpapi.c:354: Test failed: 443: got 0 iphlpapi.c:354: Test failed: 444: got 0 iphlpapi.c:354: Test failed: 445: got 0 iphlpapi.c:354: Test failed: 446: got 0 iphlpapi.c:354: Test failed: 447: got 0 iphlpapi.c:354: Test failed: 448: got 0 iphlpapi.c:354: Test failed: 449: got 0 iphlpapi.c:354: Test failed: 450: got 0 iphlpapi.c:354: Test failed: 451: got 0 iphlpapi.c:354: Test failed: 452: got 0 iphlpapi.c:354: Test failed: 453: got 0 iphlpapi.c:354: Test failed: 454: got 0 iphlpapi.c:354: Test failed: 455: got 0 iphlpapi.c:354: Test failed: 456: got 0 iphlpapi.c:354: Test failed: 457: got 0 iphlpapi.c:354: Test failed: 458: got 0 iphlpapi.c:357: Test failed: 458: got 0 vs 50452470 iphlpapi.c:358: Test failed: 458: got 0 vs 1310872 iphlpapi.c:332: Test failed: 459: got 00000000 vs 00000001 iphlpapi.c:335: Test failed: 459: got 00000000 vs ffffffff iphlpapi.c:352: Test failed: 459: got 0 vs 393216 iphlpapi.c:354: Test failed: 459: got 0 iphlpapi.c:354: Test failed: 460: got 0 iphlpapi.c:354: Test failed: 461: got 0 iphlpapi.c:354: Test failed: 462: got 0 iphlpapi.c:354: Test failed: 463: got 0 iphlpapi.c:358: Test failed: 463: got 0 vs 7077892 iphlpapi.c:354: Test failed: 464: got 0 iphlpapi.c:354: Test failed: 465: got 0 iphlpapi.c:354: Test failed: 466: got 0 iphlpapi.c:354: Test failed: 467: got 0 iphlpapi.c:354: Test failed: 468: got 0 iphlpapi.c:332: Test failed: 469: got 00000000 vs 76654474 iphlpapi.c:354: Test failed: 469: got 0 iphlpapi.c:354: Test failed: 470: got 0 iphlpapi.c:354: Test failed: 471: got 0 iphlpapi.c:354: Test failed: 472: got 0 iphlpapi.c:354: Test failed: 473: got 0 iphlpapi.c:354: Test failed: 474: got 0 iphlpapi.c:358: Test failed: 474: got 0 vs 1986348148 iphlpapi.c:362: Test failed: 474: got 0 vs 2 iphlpapi.c:354: Test failed: 475: got 0 iphlpapi.c:354: Test failed: 476: got 0 iphlpapi.c:354: Test failed: 477: got 0 iphlpapi.c:354: Test failed: 478: got 0 iphlpapi.c:354: Test failed: 479: got 0 iphlpapi.c:354: Test failed: 480: got 0 iphlpapi.c:354: Test failed: 481: got 0 iphlpapi.c:354: Test failed: 482: got 0 iphlpapi.c:354: Test failed: 483: got 0 iphlpapi.c:354: Test failed: 484: got 0 iphlpapi.c:354: Test failed: 485: got 0 iphlpapi.c:332: Test failed: 486: got 00000000 vs 00000004 iphlpapi.c:352: Test failed: 486: got 0 vs 4 iphlpapi.c:354: Test failed: 486: got 0 iphlpapi.c:354: Test failed: 487: got 0 iphlpapi.c:354: Test failed: 488: got 0 iphlpapi.c:354: Test failed: 489: got 0 iphlpapi.c:354: Test failed: 490: got 0 iphlpapi.c:352: Test failed: 491: got 0 vs 31013645 iphlpapi.c:354: Test failed: 491: got 0 iphlpapi.c:354: Test failed: 492: got 0 iphlpapi.c:354: Test failed: 493: got 0 iphlpapi.c:354: Test failed: 494: got 0 iphlpapi.c:354: Test failed: 495: got 0 iphlpapi.c:358: Test failed: 495: got 0 vs 131585 iphlpapi.c:354: Test failed: 496: got 0 iphlpapi.c:354: Test failed: 497: got 0 iphlpapi.c:335: Test failed: 498: got 00000000 vs ffffffff iphlpapi.c:354: Test failed: 498: got 0 iphlpapi.c:354: Test failed: 499: got 0 iphlpapi.c:354: Test failed: 500: got 0 iphlpapi.c:357: Test failed: 500: got 0 vs 131585 iphlpapi.c:358: Test failed: 500: got 0 vs 1310872 iphlpapi.c:362: Test failed: 500: got 0 vs 1620328 iphlpapi.c:354: Test failed: 501: got 0 iphlpapi.c:354: Test failed: 502: got 0 iphlpapi.c:335: Test failed: 503: got 00000000 vs ffffffff iphlpapi.c:354: Test failed: 503: got 0 iphlpapi.c:354: Test failed: 504: got 0 iphlpapi.c:354: Test failed: 505: got 0 iphlpapi.c:354: Test failed: 506: got 0 iphlpapi.c:354: Test failed: 507: got 0 iphlpapi.c:354: Test failed: 508: got 0 iphlpapi.c:354: Test failed: 509: got 0 iphlpapi.c:354: Test failed: 510: got 0 iphlpapi.c:354: Test failed: 511: got 0 iphlpapi.c:354: Test failed: 512: got 0 iphlpapi.c:354: Test failed: 513: got 0 iphlpapi.c:354: Test failed: 514: got 0 iphlpapi.c:354: Test failed: 515: got 0 iphlpapi.c:354: Test failed: 516: got 0 iphlpapi.c:354: Test failed: 517: got 0 iphlpapi.c:354: Test failed: 518: got 0 iphlpapi.c:354: Test failed: 519: got 0 iphlpapi.c:354: Test failed: 520: got 0 iphlpapi.c:354: Test failed: 521: got 0 iphlpapi.c:354: Test failed: 522: got 0 iphlpapi.c:354: Test failed: 523: got 0 iphlpapi.c:354: Test failed: 524: got 0 iphlpapi.c:350: Test failed: 525: got 00000000 vs 00020201 iphlpapi.c:356: Test failed: 525: got 0 iphlpapi.c:354: Test failed: 526: got 0 iphlpapi.c:354: Test failed: 527: got 0 iphlpapi.c:352: Test failed: 528: got 0 vs 1310872 iphlpapi.c:354: Test failed: 528: got 0 iphlpapi.c:354: Test failed: 529: got 0 iphlpapi.c:354: Test failed: 530: got 0 iphlpapi.c:354: Test failed: 531: got 0 iphlpapi.c:354: Test failed: 532: got 0 iphlpapi.c:354: Test failed: 533: got 0 iphlpapi.c:354: Test failed: 534: got 0 iphlpapi.c:335: Test failed: 535: got 00000000 vs ffffffff iphlpapi.c:350: Test failed: 535: got 00000000 vs 00140098 iphlpapi.c:356: Test failed: 535: got 0 iphlpapi.c:354: Test failed: 536: got 0 iphlpapi.c:354: Test failed: 537: got 0 iphlpapi.c:354: Test failed: 538: got 0 iphlpapi.c:354: Test failed: 539: got 0 iphlpapi.c:335: Test failed: 540: got 00000000 vs ffffffff iphlpapi.c:354: Test failed: 540: got 0 iphlpapi.c:354: Test failed: 541: got 0 iphlpapi.c:354: Test failed: 542: got 0 iphlpapi.c:357: Test failed: 542: got 0 vs 1310872 iphlpapi.c:362: Test failed: 542: got 0 vs 1380319236 iphlpapi.c:354: Test failed: 543: got 0 iphlpapi.c:354: Test failed: 544: got 0 iphlpapi.c:354: Test failed: 545: got 0 iphlpapi.c:354: Test failed: 546: got 0 iphlpapi.c:354: Test failed: 547: got 0 iphlpapi.c:354: Test failed: 548: got 0 iphlpapi.c:354: Test failed: 549: got 0 iphlpapi.c:354: Test failed: 550: got 0 iphlpapi.c:354: Test failed: 551: got 0 iphlpapi.c:354: Test failed: 552: got 0 iphlpapi.c:354: Test failed: 553: got 0 iphlpapi.c:354: Test failed: 554: got 0 iphlpapi.c:354: Test failed: 555: got 0 iphlpapi.c:354: Test failed: 556: got 0 iphlpapi.c:354: Test failed: 557: got 0 iphlpapi.c:354: Test failed: 558: got 0 iphlpapi.c:354: Test failed: 559: got 0 iphlpapi.c:354: Test failed: 560: got 0 iphlpapi.c:354: Test failed: 561: got 0 iphlpapi.c:354: Test failed: 562: got 0 iphlpapi.c:354: Test failed: 563: got 0 iphlpapi.c:354: Test failed: 564: got 0 iphlpapi.c:358: Test failed: 564: got 0 vs 50422640 iphlpapi.c:354: Test failed: 565: got 0 iphlpapi.c:354: Test failed: 566: got 0 iphlpapi.c:354: Test failed: 567: got 0 iphlpapi.c:354: Test failed: 568: got 0 iphlpapi.c:354: Test failed: 569: got 0 iphlpapi.c:354: Test failed: 570: got 0 iphlpapi.c:354: Test failed: 571: got 0 iphlpapi.c:354: Test failed: 572: got 0 iphlpapi.c:354: Test failed: 573: got 0 iphlpapi.c:354: Test failed: 574: got 0 iphlpapi.c:354: Test failed: 575: got 0 iphlpapi.c:354: Test failed: 576: got 0 iphlpapi.c:354: Test failed: 577: got 0 iphlpapi.c:354: Test failed: 578: got 0 iphlpapi.c:354: Test failed: 579: got 0 iphlpapi.c:354: Test failed: 580: got 0 iphlpapi.c:354: Test failed: 581: got 0 iphlpapi.c:354: Test failed: 582: got 0 iphlpapi.c:354: Test failed: 583: got 0 iphlpapi.c:354: Test failed: 584: got 0 iphlpapi.c:354: Test failed: 585: got 0 iphlpapi.c:354: Test failed: 586: got 0 iphlpapi.c:354: Test failed: 587: got 0 iphlpapi.c:354: Test failed: 588: got 0 iphlpapi.c:354: Test failed: 589: got 0 iphlpapi.c:354: Test failed: 590: got 0 iphlpapi.c:354: Test failed: 591: got 0 iphlpapi.c:354: Test failed: 592: got 0 iphlpapi.c:354: Test failed: 593: got 0 iphlpapi.c:354: Test failed: 594: got 0 iphlpapi.c:354: Test failed: 595: got 0 iphlpapi.c:354: Test failed: 596: got 0 iphlpapi.c:354: Test failed: 597: got 0 iphlpapi.c:354: Test failed: 598: got 0 iphlpapi.c:354: Test failed: 599: got 0 iphlpapi.c:354: Test failed: 600: got 0 iphlpapi.c:354: Test failed: 601: got 0 iphlpapi.c:354: Test failed: 602: got 0 iphlpapi.c:354: Test failed: 603: got 0 iphlpapi.c:354: Test failed: 604: got 0 iphlpapi.c:354: Test failed: 605: got 0 iphlpapi.c:354: Test failed: 606: got 0 iphlpapi.c:354: Test failed: 607: got 0 iphlpapi.c:354: Test failed: 608: got 0 iphlpapi.c:354: Test failed: 609: got 0 iphlpapi.c:354: Test failed: 610: got 0 iphlpapi.c:354: Test failed: 611: got 0 iphlpapi.c:354: Test failed: 612: got 0 iphlpapi.c:354: Test failed: 613: got 0 iphlpapi.c:354: Test failed: 614: got 0 iphlpapi.c:354: Test failed: 615: got 0 iphlpapi.c:354: Test failed: 616: got 0 iphlpapi.c:354: Test failed: 617: got 0 iphlpapi.c:354: Test failed: 618: got 0 iphlpapi.c:354: Test failed: 619: got 0 iphlpapi.c:354: Test failed: 620: got 0 iphlpapi.c:354: Test failed: 621: got 0 iphlpapi.c:354: Test failed: 622: got 0 iphlpapi.c:354: Test failed: 623: got 0 iphlpapi.c:354: Test failed: 624: got 0 iphlpapi.c:354: Test failed: 625: got 0 iphlpapi.c:354: Test failed: 626: got 0 iphlpapi.c:354: Test failed: 627: got 0 iphlpapi.c:354: Test failed: 628: got 0 iphlpapi.c:354: Test failed: 629: got 0 iphlpapi.c:354: Test failed: 630: got 0 iphlpapi.c:354: Test failed: 631: got 0 iphlpapi.c:354: Test failed: 632: got 0 iphlpapi.c:354: Test failed: 633: got 0 iphlpapi.c:354: Test failed: 634: got 0 iphlpapi.c:354: Test failed: 635: got 0 iphlpapi.c:354: Test failed: 636: got 0 iphlpapi.c:354: Test failed: 637: got 0 iphlpapi.c:354: Test failed: 638: got 0 iphlpapi.c:354: Test failed: 639: got 0 iphlpapi.c:354: Test failed: 640: got 0 iphlpapi.c:354: Test failed: 641: got 0 iphlpapi.c:354: Test failed: 642: got 0 iphlpapi.c:354: Test failed: 643: got 0 iphlpapi.c:354: Test failed: 644: got 0 iphlpapi.c:354: Test failed: 645: got 0 iphlpapi.c:354: Test failed: 646: got 0 iphlpapi.c:354: Test failed: 647: got 0 iphlpapi.c:354: Test failed: 648: got 0 iphlpapi.c:354: Test failed: 649: got 0 iphlpapi.c:354: Test failed: 650: got 0 iphlpapi.c:354: Test failed: 651: got 0 iphlpapi.c:354: Test failed: 652: got 0 iphlpapi.c:354: Test failed: 653: got 0 iphlpapi.c:354: Test failed: 654: got 0 iphlpapi.c:354: Test failed: 655: got 0 iphlpapi.c:354: Test failed: 656: got 0 iphlpapi.c:354: Test failed: 657: got 0 iphlpapi.c:354: Test failed: 658: got 0 iphlpapi.c:354: Test failed: 659: got 0 iphlpapi.c:354: Test failed: 660: got 0 iphlpapi.c:354: Test failed: 661: got 0 iphlpapi.c:354: Test failed: 662: got 0 iphlpapi.c:354: Test failed: 663: got 0 iphlpapi.c:354: Test failed: 664: got 0 iphlpapi.c:354: Test failed: 665: got 0 iphlpapi.c:354: Test failed: 666: got 0 iphlpapi.c:354: Test failed: 667: got 0 iphlpapi.c:354: Test failed: 668: got 0 iphlpapi.c:354: Test failed: 669: got 0 iphlpapi.c:354: Test failed: 670: got 0 iphlpapi.c:354: Test failed: 671: got 0 iphlpapi.c:354: Test failed: 672: got 0 iphlpapi.c:354: Test failed: 673: got 0 iphlpapi.c:354: Test failed: 674: got 0 iphlpapi.c:354: Test failed: 675: got 0 iphlpapi.c:354: Test failed: 676: got 0 iphlpapi.c:354: Test failed: 677: got 0 iphlpapi.c:354: Test failed: 678: got 0 iphlpapi.c:354: Test failed: 679: got 0 iphlpapi.c:354: Test failed: 680: got 0 iphlpapi.c:354: Test failed: 681: got 0 iphlpapi.c:354: Test failed: 682: got 0 iphlpapi.c:354: Test failed: 683: got 0 iphlpapi.c:354: Test failed: 684: got 0 iphlpapi.c:354: Test failed: 685: got 0 iphlpapi.c:354: Test failed: 686: got 0 iphlpapi.c:354: Test failed: 687: got 0 iphlpapi.c:354: Test failed: 688: got 0 iphlpapi.c:354: Test failed: 689: got 0 iphlpapi.c:354: Test failed: 690: got 0 iphlpapi.c:354: Test failed: 691: got 0 iphlpapi.c:354: Test failed: 692: got 0 iphlpapi.c:354: Test failed: 693: got 0 iphlpapi.c:354: Test failed: 694: got 0 iphlpapi.c:354: Test failed: 695: got 0 iphlpapi.c:354: Test failed: 696: got 0 iphlpapi.c:354: Test failed: 697: got 0 iphlpapi.c:354: Test failed: 698: got 0 iphlpapi.c:354: Test failed: 699: got 0 iphlpapi.c:354: Test failed: 700: got 0 iphlpapi.c:354: Test failed: 701: got 0 iphlpapi.c:354: Test failed: 702: got 0 iphlpapi.c:354: Test failed: 703: got 0 iphlpapi.c:354: Test failed: 704: got 0 iphlpapi.c:354: Test failed: 705: got 0 iphlpapi.c:354: Test failed: 706: got 0 iphlpapi.c:354: Test failed: 707: got 0 iphlpapi.c:354: Test failed: 708: got 0 iphlpapi.c:354: Test failed: 709: got 0 iphlpapi.c:354: Test failed: 710: got 0 iphlpapi.c:354: Test failed: 711: got 0 iphlpapi.c:354: Test failed: 712: got 0 iphlpapi.c:354: Test failed: 713: got 0 iphlpapi.c:354: Test failed: 714: got 0 iphlpapi.c:354: Test failed: 715: got 0 iphlpapi.c:354: Test failed: 716: got 0 iphlpapi.c:354: Test failed: 717: got 0 iphlpapi.c:354: Test failed: 718: got 0 iphlpapi.c:354: Test failed: 719: got 0 iphlpapi.c:354: Test failed: 720: got 0 iphlpapi.c:354: Test failed: 721: got 0 iphlpapi.c:354: Test failed: 722: got 0 iphlpapi.c:354: Test failed: 723: got 0 iphlpapi.c:354: Test failed: 724: got 0 iphlpapi.c:354: Test failed: 725: got 0 iphlpapi.c:354: Test failed: 726: got 0 iphlpapi.c:354: Test failed: 727: got 0 iphlpapi.c:354: Test failed: 728: got 0 iphlpapi.c:354: Test failed: 729: got 0 iphlpapi.c:354: Test failed: 730: got 0 iphlpapi.c:354: Test failed: 731: got 0 iphlpapi.c:354: Test failed: 732: got 0 iphlpapi.c:354: Test failed: 733: got 0 iphlpapi.c:354: Test failed: 734: got 0 iphlpapi.c:354: Test failed: 735: got 0 iphlpapi.c:354: Test failed: 736: got 0 iphlpapi.c:354: Test failed: 737: got 0 iphlpapi.c:354: Test failed: 738: got 0 iphlpapi.c:354: Test failed: 739: got 0 iphlpapi.c:354: Test failed: 740: got 0 iphlpapi.c:354: Test failed: 741: got 0 iphlpapi.c:354: Test failed: 742: got 0 iphlpapi.c:354: Test failed: 743: got 0 iphlpapi.c:354: Test failed: 744: got 0 iphlpapi.c:354: Test failed: 745: got 0 iphlpapi.c:354: Test failed: 746: got 0 iphlpapi.c:354: Test failed: 747: got 0 iphlpapi.c:354: Test failed: 748: got 0 iphlpapi.c:354: Test failed: 749: got 0 iphlpapi.c:354: Test failed: 750: got 0 iphlpapi.c:354: Test failed: 751: got 0 iphlpapi.c:354: Test failed: 752: got 0 iphlpapi.c:354: Test failed: 753: got 0 iphlpapi.c:354: Test failed: 754: got 0 iphlpapi.c:354: Test failed: 755: got 0 iphlpapi.c:354: Test failed: 756: got 0 iphlpapi.c:354: Test failed: 757: got 0 iphlpapi.c:354: Test failed: 758: got 0 iphlpapi.c:354: Test failed: 759: got 0 iphlpapi.c:354: Test failed: 760: got 0 iphlpapi.c:354: Test failed: 761: got 0 iphlpapi.c:354: Test failed: 762: got 0 iphlpapi.c:354: Test failed: 763: got 0 iphlpapi.c:354: Test failed: 764: got 0 iphlpapi.c:354: Test failed: 765: got 0 iphlpapi.c:354: Test failed: 766: got 0 iphlpapi.c:354: Test failed: 767: got 0 iphlpapi.c:354: Test failed: 768: got 0 iphlpapi.c:354: Test failed: 769: got 0 iphlpapi.c:354: Test failed: 770: got 0 iphlpapi.c:354: Test failed: 771: got 0 iphlpapi.c:354: Test failed: 772: got 0 iphlpapi.c:354: Test failed: 773: got 0 iphlpapi.c:354: Test failed: 774: got 0 iphlpapi.c:354: Test failed: 775: got 0 iphlpapi.c:354: Test failed: 776: got 0 iphlpapi.c:354: Test failed: 777: got 0 iphlpapi.c:354: Test failed: 778: got 0 iphlpapi.c:354: Test failed: 779: got 0 iphlpapi.c:354: Test failed: 780: got 0 iphlpapi.c:354: Test failed: 781: got 0 iphlpapi.c:354: Test failed: 782: got 0 iphlpapi.c:354: Test failed: 783: got 0 iphlpapi.c:354: Test failed: 784: got 0 iphlpapi.c:354: Test failed: 785: got 0 iphlpapi.c:354: Test failed: 786: got 0 iphlpapi.c:354: Test failed: 787: got 0 iphlpapi.c:354: Test failed: 788: got 0 iphlpapi.c:354: Test failed: 789: got 0 iphlpapi.c:354: Test failed: 790: got 0 iphlpapi.c:354: Test failed: 791: got 0 iphlpapi.c:354: Test failed: 792: got 0 iphlpapi.c:354: Test failed: 793: got 0 iphlpapi.c:354: Test failed: 794: got 0 iphlpapi.c:354: Test failed: 795: got 0 iphlpapi.c:354: Test failed: 796: got 0 iphlpapi.c:354: Test failed: 797: got 0 iphlpapi.c:354: Test failed: 798: got 0 iphlpapi.c:354: Test failed: 799: got 0 iphlpapi.c:354: Test failed: 800: got 0 iphlpapi.c:354: Test failed: 801: got 0 iphlpapi.c:354: Test failed: 802: got 0 iphlpapi.c:354: Test failed: 803: got 0 iphlpapi.c:354: Test failed: 804: got 0 iphlpapi.c:354: Test failed: 805: got 0 iphlpapi.c:354: Test failed: 806: got 0 iphlpapi.c:354: Test failed: 807: got 0 iphlpapi.c:354: Test failed: 808: got 0 iphlpapi.c:354: Test failed: 809: got 0 iphlpapi.c:354: Test failed: 810: got 0 iphlpapi.c:354: Test failed: 811: got 0 iphlpapi.c:354: Test failed: 812: got 0 iphlpapi.c:354: Test failed: 813: got 0 iphlpapi.c:354: Test failed: 814: got 0 iphlpapi.c:354: Test failed: 815: got 0 iphlpapi.c:354: Test failed: 816: got 0 iphlpapi.c:354: Test failed: 817: got 0 iphlpapi.c:354: Test failed: 818: got 0 iphlpapi.c:354: Test failed: 819: got 0 iphlpapi.c:354: Test failed: 820: got 0 iphlpapi.c:354: Test failed: 821: got 0 iphlpapi.c:354: Test failed: 822: got 0 iphlpapi.c:354: Test failed: 823: got 0 iphlpapi.c:354: Test failed: 824: got 0 iphlpapi.c:354: Test failed: 825: got 0 iphlpapi.c:354: Test failed: 826: got 0 iphlpapi.c:354: Test failed: 827: got 0 iphlpapi.c:354: Test failed: 828: got 0 iphlpapi.c:354: Test failed: 829: got 0 iphlpapi.c:354: Test failed: 830: got 0 iphlpapi.c:354: Test failed: 831: got 0 iphlpapi.c:354: Test failed: 832: got 0 iphlpapi.c:332: Test failed: 833: got 00000000 vs 0301c4f4 iphlpapi.c:354: Test failed: 833: got 0 iphlpapi.c:354: Test failed: 834: got 0 iphlpapi.c:354: Test failed: 835: got 0 iphlpapi.c:354: Test failed: 836: got 0 iphlpapi.c:354: Test failed: 837: got 0 iphlpapi.c:354: Test failed: 838: got 0 iphlpapi.c:354: Test failed: 839: got 0 iphlpapi.c:354: Test failed: 840: got 0 iphlpapi.c:354: Test failed: 841: got 0 iphlpapi.c:354: Test failed: 842: got 0 iphlpapi.c:354: Test failed: 843: got 0 iphlpapi.c:354: Test failed: 844: got 0 iphlpapi.c:354: Test failed: 845: got 0 iphlpapi.c:354: Test failed: 846: got 0 iphlpapi.c:354: Test failed: 847: got 0 iphlpapi.c:354: Test failed: 848: got 0 iphlpapi.c:354: Test failed: 849: got 0 iphlpapi.c:354: Test failed: 850: got 0 iphlpapi.c:354: Test failed: 851: got 0 iphlpapi.c:354: Test failed: 852: got 0 iphlpapi.c:354: Test failed: 853: got 0 iphlpapi.c:354: Test failed: 854: got 0 iphlpapi.c:354: Test failed: 855: got 0 iphlpapi.c:354: Test failed: 856: got 0 iphlpapi.c:354: Test failed: 857: got 0 iphlpapi.c:354: Test failed: 858: got 0 iphlpapi.c:354: Test failed: 859: got 0 iphlpapi.c:354: Test failed: 860: got 0 iphlpapi.c:354: Test failed: 861: got 0 iphlpapi.c:354: Test failed: 862: got 0 iphlpapi.c:354: Test failed: 863: got 0 iphlpapi.c:354: Test failed: 864: got 0 iphlpapi.c:354: Test failed: 865: got 0 iphlpapi.c:354: Test failed: 866: got 0 iphlpapi.c:354: Test failed: 867: got 0 iphlpapi.c:354: Test failed: 868: got 0 iphlpapi.c:354: Test failed: 869: got 0 iphlpapi.c:354: Test failed: 870: got 0 iphlpapi.c:354: Test failed: 871: got 0 iphlpapi.c:354: Test failed: 872: got 0 iphlpapi.c:354: Test failed: 873: got 0 iphlpapi.c:354: Test failed: 874: got 0 iphlpapi.c:354: Test failed: 875: got 0 iphlpapi.c:354: Test failed: 876: got 0 iphlpapi.c:354: Test failed: 877: got 0 iphlpapi.c:354: Test failed: 878: got 0 iphlpapi.c:354: Test failed: 879: got 0 iphlpapi.c:354: Test failed: 880: got 0 iphlpapi.c:354: Test failed: 881: got 0 iphlpapi.c:354: Test failed: 882: got 0 iphlpapi.c:354: Test failed: 883: got 0 iphlpapi.c:354: Test failed: 884: got 0 iphlpapi.c:354: Test failed: 885: got 0 iphlpapi.c:354: Test failed: 886: got 0 iphlpapi.c:354: Test failed: 887: got 0 iphlpapi.c:354: Test failed: 888: got 0 iphlpapi.c:354: Test failed: 889: got 0 iphlpapi.c:354: Test failed: 890: got 0 iphlpapi.c:354: Test failed: 891: got 0 iphlpapi.c:354: Test failed: 892: got 0 iphlpapi.c:354: Test failed: 893: got 0 iphlpapi.c:354: Test failed: 894: got 0 iphlpapi.c:354: Test failed: 895: got 0 iphlpapi.c:354: Test failed: 896: got 0 iphlpapi.c:354: Test failed: 897: got 0 iphlpapi.c:354: Test failed: 898: got 0 iphlpapi.c:354: Test failed: 899: got 0 iphlpapi.c:357: Test failed: 899: got 0 vs 1 iphlpapi.c:358: Test failed: 899: got 0 vs 1699610624 iphlpapi.c:362: Test failed: 899: got 0 vs 1 iphlpapi.c:350: Test failed: 900: got 00000000 vs 00000002 iphlpapi.c:356: Test failed: 900: got 0 iphlpapi.c:354: Test failed: 901: got 0 iphlpapi.c:354: Test failed: 902: got 0 iphlpapi.c:354: Test failed: 903: got 0 iphlpapi.c:354: Test failed: 904: got 0 iphlpapi.c:350: Test failed: 905: got 00000000 vs 00000006 iphlpapi.c:356: Test failed: 905: got 0 iphlpapi.c:357: Test failed: 905: got 0 vs 54131 iphlpapi.c:362: Test failed: 905: got 0 vs 67130450 iphlpapi.c:354: Test failed: 906: got 0 iphlpapi.c:354: Test failed: 907: got 0 iphlpapi.c:354: Test failed: 908: got 0 iphlpapi.c:354: Test failed: 909: got 0 iphlpapi.c:354: Test failed: 910: got 0 iphlpapi.c:354: Test failed: 911: got 0 iphlpapi.c:354: Test failed: 912: got 0 iphlpapi.c:354: Test failed: 913: got 0 iphlpapi.c:354: Test failed: 914: got 0 iphlpapi.c:354: Test failed: 915: got 0 iphlpapi.c:354: Test failed: 916: got 0 iphlpapi.c:354: Test failed: 917: got 0 iphlpapi.c:354: Test failed: 918: got 0 iphlpapi.c:354: Test failed: 919: got 0 iphlpapi.c:354: Test failed: 920: got 0 iphlpapi.c:354: Test failed: 921: got 0 iphlpapi.c:354: Test failed: 922: got 0 iphlpapi.c:354: Test failed: 923: got 0 iphlpapi.c:354: Test failed: 924: got 0 iphlpapi.c:354: Test failed: 925: got 0 iphlpapi.c:354: Test failed: 926: got 0 iphlpapi.c:354: Test failed: 927: got 0 iphlpapi.c:354: Test failed: 928: got 0 iphlpapi.c:354: Test failed: 929: got 0 iphlpapi.c:354: Test failed: 930: got 0 Unhandled exception: page fault on read access to 0x00160010 in 32-bit code (0x00405d18).
nsi: nsi.c:446: Test failed: AF_INET: got 50 nsi.c:446: Test failed: AF_INET6: got 50 nsi.c:469: Test failed: AF_INET: got 50 nsi.c:469: Test failed: AF_INET6: got 50 nsi.c:508: Test failed: AF_INET: got 32 nsi.c:508: Test failed: AF_INET6: got 32 nsi.c:635: Test failed: AF_INET: got 32 nsi.c:719: Test failed: AF_INET: got 50 nsi.c:814: Test failed: AF_INET: got 32 nsi.c:817: Test failed: AF_INET: got 50 nsi.c:821: Test failed: AF_INET: got 32 nsi.c:823: Test failed: AF_INET: 0 vs 2070080016 nsi.c:824: Test failed: AF_INET: 0 vs 2147229696 nsi.c:825: Test failed: AF_INET: 0 vs 6487128 nsi.c:826: Test failed: AF_INET: 0 vs 1869355242 nsi.c:830: Test failed: AF_INET: dwAttemptFails: 0 not in [6487152 32] nsi.c:833: Test failed: AF_INET: dwInSegs: 0 not in [18188787073088616 0] nsi.c:834: Test failed: AF_INET: dwOutSegs: 0 not in [6487296 23] nsi.c:835: Test failed: AF_INET: dwRetransSegs: 0 not in [6487336 0] nsi.c:836: Test failed: AF_INET: dwInErrs: 0 not in [1351176 24] nsi.c:837: Test failed: AF_INET: dwOutRsts: 0 not in [4209094 20] nsi.c:814: Test failed: AF_INET6: got 32 nsi.c:817: Test failed: AF_INET6: got 50 nsi.c:821: Test failed: AF_INET6: got 32 nsi.c:823: Test failed: AF_INET6: 0 vs 2070080016 nsi.c:824: Test failed: AF_INET6: 0 vs 2147229696 nsi.c:825: Test failed: AF_INET6: 0 vs 6487128 nsi.c:826: Test failed: AF_INET6: 0 vs 1869355242 nsi.c:830: Test failed: AF_INET6: dwAttemptFails: 0 not in [6487152 32] nsi.c:833: Test failed: AF_INET6: dwInSegs: 0 not in [18188787073088616 0] nsi.c:834: Test failed: AF_INET6: dwOutSegs: 0 not in [6487296 23] nsi.c:835: Test failed: AF_INET6: dwRetransSegs: 0 not in [6487336 0] nsi.c:836: Test failed: AF_INET6: dwInErrs: 0 not in [1351176 24] nsi.c:837: Test failed: AF_INET6: dwOutRsts: 0 not in [4209094 20] Unhandled exception: page fault on read access to 0x00180000 in 32-bit code (0x6ab29736).
ntdll: info.c:1830: Test failed: Expected a WorkingSetSize > 0 info.c:1831: Test failed: Expected a PagefileUsage > 0 info.c:1852: Test failed: Expected a WorkingSetSize > 0 info.c:1853: Test failed: Expected a PagefileUsage > 0
psapi: psapi_main.c:778: Test failed: exe expected Valid=1 but got 0 psapi_main.c:782: Test failed: exe expected Win32Protection=2 but got 0 psapi_main.c:790: Test failed: exe expected Shared=1 but got 0 psapi_main.c:790: Test failed: exe,noaccess expected Shared=1 but got 0 psapi_main.c:778: Test succeeded inside todo block: exe,readonly1 expected Valid=0 but got 0 psapi_main.c:782: Test succeeded inside todo block: exe,readonly1 expected Win32Protection=0 but got 0 psapi_main.c:790: Test failed: exe,readonly1 expected Shared=1 but got 0 psapi_main.c:778: Test failed: exe,readonly2 expected Valid=1 but got 0 psapi_main.c:782: Test failed: exe,readonly2 expected Win32Protection=2 but got 0 psapi_main.c:790: Test failed: exe,readonly2 expected Shared=1 but got 0 psapi_main.c:778: Test failed: valloc,read expected Valid=1 but got 0 psapi_main.c:782: Test failed: valloc,read expected Win32Protection=4 but got 0 psapi_main.c:778: Test failed: valloc,write expected Valid=1 but got 0 psapi_main.c:782: Test failed: valloc,write expected Win32Protection=4 but got 0 psapi_main.c:778: Test succeeded inside todo block: valloc,readwrite1 expected Valid=0 but got 0 psapi_main.c:782: Test succeeded inside todo block: valloc,readwrite1 expected Win32Protection=0 but got 0 psapi_main.c:778: Test failed: valloc,readwrite2 expected Valid=1 but got 0 psapi_main.c:782: Test failed: valloc,readwrite2 expected Win32Protection=4 but got 0
wbemprox: query.c:171: Test failed: got 0x80041001 Unhandled exception: page fault on read access to 0x00000000 in 32-bit code (0x004013df).
wininet: internet.c:1638: Test failed: Missing RAS flag internet.c:1640: Test failed: InternetGetConnectedStateExA tests require a valid connection internet.c:1740: Test failed: Missing RAS flag internet.c:1743: Test failed: Last error = 0x32 internet.c:1744: Test failed: Expected empty connection name, got L"wine"
ws2_32: protocol.c:2590: Test failed: GetIpForwardTable failed with a different error: 50 protocol.c:2596: Test failed: GetAdaptersInfo failed, error: 50 protocol.c:2598: Test failed: GetIpForwardTable failed, error: 50 protocol: Timeout sock.c:11248: Test failed: Got unexpected error 10022. sock.c:11249: Test failed: Got unexpected size 0. sock.c:11254: Test failed: Got unexpected ret -1. sock.c:11255: Test failed: Got unexpected error 10022. Unhandled exception: page fault on read access to 0x007b1000 in 32-bit code (0x00439778).
Report validation errors: iphlpapi:iphlpapi prints too much data (74828 bytes)
=== debian11 (32 bit zh:CN report) ===
ntdll: info.c:1830: Test failed: Expected a WorkingSetSize > 0 info.c:1831: Test failed: Expected a PagefileUsage > 0 info.c:1852: Test failed: Expected a WorkingSetSize > 0 info.c:1853: Test failed: Expected a PagefileUsage > 0
=== debian11b (64 bit WoW report) ===
ntdll: info.c:1830: Test failed: Expected a WorkingSetSize > 0 info.c:1831: Test failed: Expected a PagefileUsage > 0 info.c:1852: Test failed: Expected a WorkingSetSize > 0 info.c:1853: Test failed: Expected a PagefileUsage > 0
On Tue Feb 7 15:25:35 2023 +0000, Giovanni Mascellani wrote:
All these hardcoded offsets feel quite fragile to me. Maybe it would be better to use [some technique like this](https://gitlab.winehq.org/giomasce/wine/-/blob/1501bca0da02980a5fa76b3c6c882...) to have the compiler copy around offsets for us. Just a comment, though, it's definitely out of scope for this MR.
Yeah I think that would be nice too, though it may be hard to make it portable.
The `ntdll:info` test failure actually seems to be coming from the `pthread_join` removal, I'll have a look.