Robert Shearman rob@codeweavers.com writes:
Changelog:
- Add a new flag SORFP_NOLIFETIMEMGMT to tell the proxy manager not to
pass an outer unknown to IRpcProxyBuffer_CreateProxy.
- Move the low-level unmarshaling code into a new function,
unmarshal_object, so that it can be easily reused for unmarshaling IRemUnknown.
This causes the test to crash:
../../../tools/runtest -q -P wine -M ole32.dll -T ../../.. -p ole32_test.exe.so marshal.c && touch marshal.ok marshal.c:329: Test failed: Number of locks should be 0, but actually is 2 wine: Unhandled exception (thread 0009), starting debugger... WineDbg starting on pid 0x8 Unhandled exception: page fault on read access to 0x00000002 in 32-bit code (0x00000002). In 32 bit mode. Register dump: CS:0023 SS:002b DS:002b ES:002b FS:1007 GS:0000 EIP:00000002 ESP:4067fdcc EBP:4067fdd8 EFLAGS:00010216( - 00 -RIAP1) EAX:00000002 EBX:40776bf0 ECX:40031000 EDX:40340074 ESI:403c924c EDI:403c92a0 Stack dump: 0x4067fdcc: 407479d2 403c92e4 40776bf0 4067fdf4 0x4067fddc: 40747ff6 403c92a0 40776bf0 403c9230 0x4067fdec: 40378828 403c9258 4067fe0c 407481ba 0x4067fdfc: 403c9228 40776bf0 403787e0 403787c0 0x4067fe0c: 4067fe2c 40738c0c 403787e0 40776bf0 0x4067fe1c: 40776acf 403787c0 40573c81 00000000 0200: sel=1007 base=40031000 limit=00001f97 32-bit rw- Backtrace: =>1 0x00000002 (0x4067fdd8) 2 0x40747ff6 proxy_manager_disconnect+0x9e(This=0x403c9228) [/home/julliard/wine/wine/dlls/ole32/marshal.c:455] in ole32 (0x4067fdf4) 3 0x407481ba MARSHAL_Disconnect_Proxies+0x36(apt=0x403787e0) [/home/julliard/wine/wine/dlls/ole32/marshal.c:536] in ole32 (0x4067fe0c) 4 0x40738c0c COM_ApartmentRelease+0xe0(apt=0x403787e0) [/home/julliard/wine/wine/dlls/ole32/compobj.c:310] in ole32 (0x4067fe2c) 5 0x407392b5 CoUninitialize+0xad [/home/julliard/wine/wine/dlls/ole32/compobj.c:639] in ole32 (0x4067fe44) 6 0x4056ff2e test_marshal_proxy_apartment_shutdown+0x15e [/home/julliard/wine/wine/dlls/ole32/tests/marshal.c:393] in ole32_test (0x4067fe70) 7 0x40571979 func_marshal+0x59 [/home/julliard/wine/wine/dlls/ole32/tests/marshal.c:1063] in ole32_test (0x4067fe80) 8 0x40573ee5 run_test+0x81(name=0x40340a76) [/home/julliard/wine/wine/dlls/ole32/tests/../../../include/wine/test.h:287] in ole32_test (0x4067fe94) 9 0x405740da main+0xf2(argc=0x2, argv=0x40340a58) [/home/julliard/wine/wine/dlls/ole32/tests/../../../include/wine/test.h:327] in ole32_test (0x4067feac) 10 0x4056f190 __wine_exe_main+0x190 in ole32_test (0x4067ff2c) 11 0x405088a2 start_process+0x8a(arg=0x0) [/home/julliard/wine/wine/dlls/kernel/process.c:1046] in kernel32 (0x4067fff4) 12 0x4001ccd5 wine_pthread_abort_thread+0x29(status=0x0) [/home/julliard/wine/wine/libs/wine/port.c:85] in libwine.so.1 (0x00000000)