ole32: Add support for main-threaded apartments

Alexandre Julliard julliard at winehq.org
Sat Aug 26 12:35:00 CDT 2006


Robert Shearman <rob at 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];

-- 
Alexandre Julliard
julliard at winehq.org



More information about the wine-devel mailing list