[OLE #48] Restructure Unmarshaling Code

Alexandre Julliard julliard at wine.dyndns.org
Fri Jan 21 04:34:52 CST 2005

Robert Shearman <rob at 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-
=>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)

Alexandre Julliard
julliard at winehq.org

More information about the wine-devel mailing list