Signed-off-by: Paul Gofman pgofman@codeweavers.com --- dlls/ntdll/signal_x86_64.c | 28 ++++++++++++++--- dlls/ntdll/tests/exception.c | 60 ++++++++++++++++++++++++++++++++++-- 2 files changed, 81 insertions(+), 7 deletions(-)
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index 36a7b03380c..3ed89526893 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -792,6 +792,7 @@ PVOID WINAPI RtlVirtualUnwind( ULONG type, ULONG64 base, ULONG64 pc, ULONG64 frame, off; struct UNWIND_INFO *info; unsigned int i, prolog_offset; + BOOL mach_frame = FALSE;
TRACE( "type %x rip %lx rsp %lx\n", type, pc, context->Rsp ); if (TRACE_ON(seh)) dump_unwind_info( base, function ); @@ -864,7 +865,23 @@ PVOID WINAPI RtlVirtualUnwind( ULONG type, ULONG64 base, ULONG64 pc, set_float_reg( context, ctx_ptr, info->opcodes[i].info, (M128A *)off ); break; case UWOP_PUSH_MACHFRAME: - FIXME( "PUSH_MACHFRAME %u\n", info->opcodes[i].info ); + if (info->flags & UNW_FLAG_CHAININFO) + { + FIXME("PUSH_MACHFRAME with chained unwind info.\n"); + break; + } + if (i + get_opcode_size(info->opcodes[i]) < info->count ) + { + FIXME("PUSH_MACHFRAME is not the last opcode.\n"); + break; + } + + if (info->opcodes[i].info) + context->Rsp += 0x8; + + context->Rip = *(ULONG64 *)context->Rsp; + context->Rsp = *(ULONG64 *)(context->Rsp + 24); + mach_frame = TRUE; break; case UWOP_EPILOG: if (info->version == 2) @@ -879,9 +896,12 @@ PVOID WINAPI RtlVirtualUnwind( ULONG type, ULONG64 base, ULONG64 pc, function = &handler_data->chain; /* restart with the chained info */ }
- /* now pop return address */ - context->Rip = *(ULONG64 *)context->Rsp; - context->Rsp += sizeof(ULONG64); + if (!mach_frame) + { + /* now pop return address */ + context->Rip = *(ULONG64 *)context->Rsp; + context->Rsp += sizeof(ULONG64); + }
if (!(info->flags & type)) return NULL; /* no matching handler */ if (prolog_offset != ~0) return NULL; /* inside prolog */ diff --git a/dlls/ntdll/tests/exception.c b/dlls/ntdll/tests/exception.c index 3ced3d04b71..879e3228a9b 100644 --- a/dlls/ntdll/tests/exception.c +++ b/dlls/ntdll/tests/exception.c @@ -2017,11 +2017,15 @@ static void call_virtual_unwind( int testnum, const struct unwind_test *test )
if (j == rsp) /* rsp is special */ { + ULONG64 expected_rsp; + ok( !ctx_ptr.IntegerContext[j], "%u/%u: rsp should not be set in ctx_ptr\n", testnum, i ); - ok( context.Rsp == (ULONG64)fake_stack + test->results[i].regs[k][1], + expected_rsp = test->results[i].regs[k][1] < 0 + ? -test->results[i].regs[k][1] : (ULONG64)fake_stack + test->results[i].regs[k][1]; + ok( context.Rsp == expected_rsp, "%u/%u: register rsp wrong %p/%p\n", - testnum, i, (void *)context.Rsp, (char *)fake_stack + test->results[i].regs[k][1] ); + testnum, i, (void *)context.Rsp, (void *)expected_rsp ); continue; }
@@ -2155,10 +2159,60 @@ static void test_virtual_unwind(void) { 0x16, 0x50, FALSE, 0x000, 0x000, { {rsp,0x008}, {-1,-1} }}, };
+ static const BYTE function_2[] = + { + 0x55, /* 00: push %rbp */ + 0x90, 0x90, /* 01: nop; nop */ + 0x5d, /* 03: pop %rbp */ + 0xc3 /* 04: ret */ + }; + + static const BYTE unwind_info_2[] = + { + 1 | (UNW_FLAG_EHANDLER << 3), /* version + flags */ + 0x0, /* prolog size */ + 2, /* opcode count */ + 0, /* frame reg */ + + 0x01, UWOP(PUSH_NONVOL, rbp), /* 02: push %rbp */ + 0x00, UWOP(PUSH_MACHFRAME, 0), /* 00 */ + + 0x00, 0x02, 0x00, 0x00, /* handler */ + 0x05, 0x06, 0x07, 0x08, /* data */ + }; + + static const struct results results_2[] = + { + /* offset rbp handler rip frame registers */ + { 0x01, 0x50, TRUE, 0x008, 0x000, { {rsp,-0x020}, {rbp,0x000}, {-1,-1} }}, + }; + + static const BYTE unwind_info_3[] = + { + 1 | (UNW_FLAG_EHANDLER << 3), /* version + flags */ + 0x0, /* prolog size */ + 2, /* opcode count */ + 0, /* frame reg */ + + 0x01, UWOP(PUSH_NONVOL, rbp), /* 02: push %rbp */ + 0x00, UWOP(PUSH_MACHFRAME, 1), /* 00 */ + + 0x00, 0x02, 0x00, 0x00, /* handler */ + 0x05, 0x06, 0x07, 0x08, /* data */ + }; + + static const struct results results_3[] = + { + /* offset rbp handler rip frame registers */ + { 0x01, 0x50, TRUE, 0x010, 0x000, { {rsp,-0x028}, {rbp,0x000}, {-1,-1} }}, + }; + static const struct unwind_test tests[] = { { function_0, sizeof(function_0), unwind_info_0, results_0, ARRAY_SIZE(results_0) }, - { function_1, sizeof(function_1), unwind_info_1, results_1, ARRAY_SIZE(results_1) } + { function_1, sizeof(function_1), unwind_info_1, results_1, ARRAY_SIZE(results_1) }, + { function_2, sizeof(function_2), unwind_info_2, results_2, ARRAY_SIZE(results_2) }, + { function_2, sizeof(function_2), unwind_info_3, results_3, ARRAY_SIZE(results_3) }, }; unsigned int i;
Wine-Bug: https://bugs.winehq.org/show_bug.cgi?id=49698 Signed-off-by: Paul Gofman pgofman@codeweavers.com --- dlls/ntdll/signal_x86_64.c | 71 ++++++++++++++++++++++++++++++++++---- 1 file changed, 65 insertions(+), 6 deletions(-)
diff --git a/dlls/ntdll/signal_x86_64.c b/dlls/ntdll/signal_x86_64.c index 3ed89526893..28e4ec8ca6c 100644 --- a/dlls/ntdll/signal_x86_64.c +++ b/dlls/ntdll/signal_x86_64.c @@ -1011,8 +1011,8 @@ static DWORD call_teb_unwind_handler( EXCEPTION_RECORD *rec, DISPATCHER_CONTEXT * Wrapper function to call a consolidate callback from a fake frame. * If the callback executes RtlUnwindEx (like for example done in C++ handlers), * we have to skip all frames which were already processed. To do that we - * trick the unwinding functions into thinking the call came from somewhere - * else. All CFI instructions are either DW_CFA_def_cfa_expression or + * trick the unwinding functions into thinking the call came from the specified + * context. All CFI instructions are either DW_CFA_def_cfa_expression or * DW_CFA_expression, and the expressions have the following format: * * DW_OP_breg6; sleb128 0x10 | Load %rbp + 0x10 @@ -1025,15 +1025,26 @@ extern void * WINAPI call_consolidate_callback( CONTEXT *context, EXCEPTION_RECORD *rec ); __ASM_GLOBAL_FUNC( call_consolidate_callback, "pushq %rbp\n\t" - __ASM_SEH(".seh_pushreg %rbp\n\t") __ASM_CFI(".cfi_adjust_cfa_offset 8\n\t") __ASM_CFI(".cfi_rel_offset %rbp,0\n\t") "movq %rsp,%rbp\n\t" - __ASM_SEH(".seh_setframe %rbp,0\n\t") __ASM_CFI(".cfi_def_cfa_register %rbp\n\t") - "subq $0x20,%rsp\n\t" - __ASM_SEH(".seh_stackalloc 0x20\n\t") + + /* Setup SEH machine frame. */ + "subq $0x28,%rsp\n\t" + __ASM_CFI(".cfi_adjust_cfa_offset 0x28\n\t") + "movq 0xf8(%rcx),%rax\n\t" /* Context->Rip */ + "movq %rax,(%rsp)\n\t" + "movq 0x98(%rcx),%rax\n\t" /* context->Rsp */ + "movq %rax,0x18(%rsp)\n\t" + __ASM_SEH(".seh_pushframe\n\t") __ASM_SEH(".seh_endprologue\n\t") + + "subq $0xf8,%rsp\n\t" /* 10*16 (float regs) + 7*8 (int regs) + 32 (shadow store). */ + __ASM_SEH(".seh_stackalloc 0xf8\n\t") + __ASM_CFI(".cfi_adjust_cfa_offset 0xf8\n\t") + + /* Setup CFI unwind to context. */ "movq %rcx,0x10(%rbp)\n\t" __ASM_CFI(".cfi_remember_state\n\t") __ASM_CFI(".cfi_escape 0x0f,0x07,0x76,0x10,0x06,0x23,0x98,0x01,0x06\n\t") /* CFA */ @@ -1056,9 +1067,57 @@ __ASM_GLOBAL_FUNC( call_consolidate_callback, __ASM_CFI(".cfi_escape 0x10,0x1e,0x06,0x76,0x10,0x06,0x23,0xf0,0x04\n\t") /* %xmm13 */ __ASM_CFI(".cfi_escape 0x10,0x1f,0x06,0x76,0x10,0x06,0x23,0x80,0x05\n\t") /* %xmm14 */ __ASM_CFI(".cfi_escape 0x10,0x20,0x06,0x76,0x10,0x06,0x23,0x90,0x05\n\t") /* %xmm15 */ + + /* Setup SEH unwind registers restore. */ + "movq 0x90(%rcx),%rax\n\t" /* context->Rbx */ + "movq %rax,0x20(%rsp)\n\t" + __ASM_SEH(".seh_savereg %rbx, 0x20\n\t") + "movq 0xa8(%rcx),%rax\n\t" /* context->Rsi */ + "movq %rax,0x28(%rsp)\n\t" + __ASM_SEH(".seh_savereg %rsi, 0x28\n\t") + "movq 0xb0(%rcx),%rax\n\t" /* context->Rdi */ + "movq %rax,0x30(%rsp)\n\t" + __ASM_SEH(".seh_savereg %rdi, 0x30\n\t") + + "movq 0xd8(%rcx),%rax\n\t" /* context->R12 */ + "movq %rax,0x38(%rsp)\n\t" + __ASM_SEH(".seh_savereg %r12, 0x38\n\t") + "movq 0xe0(%rcx),%rax\n\t" /* context->R13 */ + "movq %rax,0x40(%rsp)\n\t" + __ASM_SEH(".seh_savereg %r13, 0x40\n\t") + "movq 0xe8(%rcx),%rax\n\t" /* context->R14 */ + "movq %rax,0x48(%rsp)\n\t" + __ASM_SEH(".seh_savereg %r14, 0x48\n\t") + "movq 0xf0(%rcx),%rax\n\t" /* context->R15 */ + "movq %rax,0x50(%rsp)\n\t" + __ASM_SEH(".seh_savereg %r15, 0x50\n\t") + "pushq %rsi\n\t" + "pushq %rdi\n\t" + "leaq 0x200(%rcx),%rsi\n\t" + "leaq 0x60(%rsp),%rdi\n\t" + "movq $0x14,%rcx\n\t" + "cld\n\t" + "rep; movsq\n\t" + "popq %rdi\n\t" + "popq %rsi\n\t" + __ASM_SEH(".seh_savexmm %xmm6, 0x60\n\t") + __ASM_SEH(".seh_savexmm %xmm7, 0x70\n\t") + __ASM_SEH(".seh_savexmm %xmm8, 0x80\n\t") + __ASM_SEH(".seh_savexmm %xmm9, 0x90\n\t") + __ASM_SEH(".seh_savexmm %xmm10, 0xa0\n\t") + __ASM_SEH(".seh_savexmm %xmm11, 0xb0\n\t") + __ASM_SEH(".seh_savexmm %xmm12, 0xc0\n\t") + __ASM_SEH(".seh_savexmm %xmm13, 0xd0\n\t") + __ASM_SEH(".seh_savexmm %xmm14, 0xe0\n\t") + __ASM_SEH(".seh_savexmm %xmm15, 0xf0\n\t") + + /* call the callback. */ "movq %r8,%rcx\n\t" "callq *%rdx\n\t" __ASM_CFI(".cfi_restore_state\n\t") + "nop\n\t" /* Otherwise RtlVirtualUnwind() will think we are inside epilogue and + * interpret / execute the rest of opcodes here instead of unwind through + * machine frame. */ "leaq 0(%rbp),%rsp\n\t" __ASM_CFI(".cfi_def_cfa_register %rsp\n\t") "popq %rbp\n\t"
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77009
Your paranoid android.
=== debiant (32 bit report) ===
ntdll: change.c:241: Test failed: should be ready change.c:247: Test failed: action wrong change.c:277: Test failed: should be ready change.c:280: Test failed: info not set change.c:293: Test failed: status set too soon change.c:294: Test failed: info set too soon
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77008
Your paranoid android.
=== w2008s64 (32 bit report) ===
ntdll: exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:420: Test failed: Eip at 12345 instead of 35000b
=== w864 (64 bit report) ===
ntdll: exception.c:3290: Test failed: wrong FltSave
These are pre-existing failures, I verified that by submitting a dummy patch to Testbot: https://testbot.winehq.org/JobDetails.pl?Key=77007 On 8/12/20 23:28, Marvin wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77008
Your paranoid android.
=== w2008s64 (32 bit report) ===
ntdll: exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B
On 2020-08-12 22:48, Paul Gofman wrote:
These are pre-existing failures, I verified that by submitting a dummy patch to Testbot: https://testbot.winehq.org/JobDetails.pl?Key=77007 On 8/12/20 23:28, Marvin wrote:
Hi,
While running your changed tests, I think I found new failures. Being a bot and all I'm not very good at pattern recognition, so I might be wrong, but could you please double-check?
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77008
Your paranoid android.
=== w2008s64 (32 bit report) ===
ntdll: exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B exception.c:363: Test failed: ExceptionAddress at 00012345 instead of 0035000B exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:400: Test failed: ExceptionAddress at 00012345 instead of 0035000B
Yes, they should be fixed upstream now.
On Wed, 12 Aug 2020, Paul Gofman wrote:
These are pre-existing failures, I verified that by submitting a dummy patch to Testbot: https://testbot.winehq.org/JobDetails.pl?Key=77007
[...]
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77008
[...]
exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B
Right. These got fixed by Rémi so they should be gone now:
commit f804d1ac70f0f113ddd0295dcb83707776cdbd2f Author: Rémi Bernon rbernon@codeweavers.com Date: Wed Aug 12 10:15:00 2020 +0200
ntdll/tests: Fix w2008 debugger test results.
Changing Eip has an effect there, so offset it just a little bit so that it still falls within code.
Signed-off-by: Rémi Bernon rbernon@codeweavers.com Signed-off-by: Alexandre Julliard julliard@winehq.org
We still have a bunch of quite new failures on 2003 though: https://test.winehq.org/data/tests/ntdll:exception.html
Francois Gouget fgouget@codeweavers.com writes:
On Wed, 12 Aug 2020, Paul Gofman wrote:
These are pre-existing failures, I verified that by submitting a dummy patch to Testbot: https://testbot.winehq.org/JobDetails.pl?Key=77007
[...]
Full results can be found at: https://testbot.winehq.org/JobDetails.pl?Key=77008
[...]
exception.c:385: Test failed: Eip at 12345 instead of 35000b exception.c:420: Test failed: Eip at 12345 instead of 35000b exception.c:1045: Test failed: Eip at 12345 instead of 0035000B
Right. These got fixed by Rémi so they should be gone now:
commit f804d1ac70f0f113ddd0295dcb83707776cdbd2f Author: Rémi Bernon rbernon@codeweavers.com Date: Wed Aug 12 10:15:00 2020 +0200
ntdll/tests: Fix w2008 debugger test results. Changing Eip has an effect there, so offset it just a little bit so that it still falls within code. Signed-off-by: Rémi Bernon <rbernon@codeweavers.com> Signed-off-by: Alexandre Julliard <julliard@winehq.org>
We still have a bunch of quite new failures on 2003 though: https://test.winehq.org/data/tests/ntdll:exception.html
2003 is basically the same as XP, I don't think we care anymore.
On Thu, 13 Aug 2020, Alexandre Julliard wrote: [...]
2003 is basically the same as XP, I don't think we care anymore.
Right.
I marked w2003std as extra so people can still run tests if they want to but it won't be running tests nor WineTest anymore (same as wxppro*).
On 8/13/20 12:15, Francois Gouget wrote:
On Thu, 13 Aug 2020, Alexandre Julliard wrote: [...]
2003 is basically the same as XP, I don't think we care anymore.
Right.
I marked w2003std as extra so people can still run tests if they want to but it won't be running tests nor WineTest anymore (same as wxppro*).
IIRC I was running those tests on Win 2003 when making the tests which are now failing. I think I am curious enough what can be wrong there so still going to take a look, maybe it indicates some problem which is latent on the newer Win.