Robert Shearman rob@codeweavers.com writes:
A main-threaded apartment is the first single-threaded apartment in the process. It was designed to be used for legacy applications that don't want to think about threading at all, even if they are always called from the same context, as is the case for regular STAs.
That one crashes the tests:
../../../tools/runtest -q -P wine -M ole32.dll -T ../../.. -p ole32_test.exe.so compobj.c && touch compobj.ok wine: Unhandled page fault on read access to 0x00000017 at address 0x7bc27699 (thread 000e), starting debugger... WineDbg starting on pid 0xd Unhandled exception: page fault on read access to 0x00000017 in 32-bit code (0x7bc27699). fixme:dbghelp:elf_load_debug_info_from_map Alpha-support for Dwarf2 information for ntdll<elf> Register dump: CS:0073 SS:007b DS:007b ES:007b FS:003b GS:0033 EIP:7bc27699 ESP:0033f970 EBP:0033fa28 EFLAGS:00010286( - 00 -RISP1) EAX:ffffffff EBX:7bc76420 ECX:00000000 EDX:0015e284 ESI:0033f9f8 EDI:0015e294 Stack dump: 0x0033f970: 00000040 0033fa5c 0000002e 0033f9cc 0x0033f980: 00000040 0033fa6c 0000002c 000004b8 0x0033f990: 00000002 7b8a9280 7bc53b4b 00000000 0x0033f9a0: 7bc7dca0 0033f9fc 7bc53b4b 6056b6dc 0x0033f9b0: 0033f9cc 0033fa0c 0033fa48 60526ff8 0x0033f9c0: 0033f9cc 03c00001 00000000 00000000 fixme:ntdll:RtlNtStatusToDosErrorNoTeb no mapping for c0000119 Backtrace: =>1 0x7bc27699 RtlpWaitForCriticalSection+0xb9(crit=0x15e284) [/home/julliard/wine/wine/dlls/ntdll/critsection.c:398] in ntdll (0x7bc27699) 2 0x7bc27c37 RtlEnterCriticalSection+0x67(crit=0x15e284) [/home/julliard/wine/wine/dlls/ntdll/critsection.c:508] in ntdll (0x7bc27c37) 3 0x60420ee5 start_apartment_remote_unknown+0x45 [/home/julliard/wine/wine/dlls/ole32/stubmanager.c:749] in ole32 (0x60420ee5) 4 0x6040d6a1 RPC_StartRemoting+0x31(apt=0x15e260) [/home/julliard/wine/wine/dlls/ole32/rpc.c:706] in ole32 (0x6040d6a1) 5 0x603fd2cb StdMarshalImpl_MarshalInterface+0xab(iface=0x15e388, pStm=0x15e360, riid=0x603124f0, pv=0x6031a48c, dwDestContext=0x3, pvDestContext=0x0, mshlflags=0x0) [/home/julliard/wine/wine/dlls/ole32/marshal.c:1081] in ole32 (0x603fd2cb) 6 0x603fef58 CoMarshalInterface+0x528(pStream=0x15e360, riid=0x603124f0, pUnk=0x6031a48c, dwDestContext=0x3, pvDestContext=0x0, mshlFlags=0x0) [/home/julliard/wine/wine/dlls/ole32/marshal.c:1623] in ole32 (0x603fef58) 7 0x602ff177 func_compobj+0xcb7 [/home/julliard/wine/wine/dlls/ole32/tests/compobj.c:411] in ole32_test (0x602ff177) 8 0x603111d0 run_test+0x120(name=0x11039e) [/home/julliard/wine/wine/dlls/ole32/tests/../../../include/wine/test.h:365] in ole32_test (0x603111d0) 9 0x603117d1 main+0x141(argv=0x6031189b) [/home/julliard/wine/wine/dlls/ole32/tests/../../../include/wine/test.h:412] in ole32_test (0x603117d1) 10 0x6031189b __wine_spec_exe_entry+0x5b(peb=0x7ffdf000) [/home/julliard/wine/wine/dlls/winecrt0/exe_entry.c:36] in ole32_test (0x6031189b) 11 0x7b86f84b start_process+0xeb(arg=0x0) [/home/julliard/wine/wine/dlls/kernel/process.c:822] in kernel32 (0x7b86f84b) 12 0x6001f777 wine_switch_to_stack+0x17 in libwine.so.1 (0x6001f777) 0x7bc27699 RtlpWaitForCriticalSection+0xb9 [/home/julliard/wine/wine/dlls/ntdll/critsection.c:398] in ntdll: movl 0x18(%eax),%eax 398 if (crit->DebugInfo) name = (char *)crit->DebugInfo->Spare[0];