Signed-off-by: Sven Baars sven.wine@gmail.com --- dlls/taskschd/task.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
diff --git a/dlls/taskschd/task.c b/dlls/taskschd/task.c index 54b678244b..2a1d0d42b3 100644 --- a/dlls/taskschd/task.c +++ b/dlls/taskschd/task.c @@ -3691,6 +3691,8 @@ static ULONG WINAPI TaskService_Release(ITaskService *iface) { TRACE("destroying %p\n", iface); heap_free(task_svc); + if (rpc_handle) + RpcBindingFree(&rpc_handle); }
return ref; @@ -3881,11 +3883,14 @@ static HRESULT WINAPI TaskService_Connect(ITaskService *iface, VARIANT server, V hr = start_schedsvc(); if (hr != S_OK) return hr;
- hr = RpcStringBindingComposeW(NULL, ncalrpc, NULL, NULL, NULL, &binding_str); - if (hr != RPC_S_OK) return hr; - hr = RpcBindingFromStringBindingW(binding_str, &rpc_handle); - RpcStringFreeW(&binding_str); - if (hr != RPC_S_OK) return hr; + if (!rpc_handle) + { + hr = RpcStringBindingComposeW(NULL, ncalrpc, NULL, NULL, NULL, &binding_str); + if (hr != RPC_S_OK) return hr; + hr = RpcBindingFromStringBindingW(binding_str, &rpc_handle); + RpcStringFreeW(&binding_str); + if (hr != RPC_S_OK) return hr; + }
/* Make sure that the connection works */ hr = SchRpcHighestVersion(&task_svc->version);
Sven Baars sven.wine@gmail.com writes:
Signed-off-by: Sven Baars sven.wine@gmail.com
dlls/taskschd/task.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
This breaks the tests:
../../../tools/runtest -q -P wine -T ../../.. -M schtasks.exe -p schtasks.exe_test.exe schtasks && touch schtasks.ok 0042:fixme:schtasks:wmain Print current tasks state 0009:fixme:taskschd:read_actions stub 0009:fixme:taskschd:read_task unhandled Task element L"Exec" 0009:fixme:taskschd:read_task unhandled Task element L"Command" 0009:fixme:taskschd:read_task unhandled Task node type 3 0009:fixme:taskschd:RegistrationInfo_get_SecurityDescriptor 0x1faeb0,0x66fa90: stub 0009:fixme:taskschd:write_settings stub 0044:err:rpc:I_RpcGetBuffer no binding wine: Unhandled exception 0x000006a6 in thread 44 at address 0x7b451e3c (thread 0044), starting debugger... Unhandled exception: 0x000006a6 in 32-bit code (0x7b451e3c). Register dump: CS:0023 SS:002b DS:002b ES:002b FS:0063 GS:006b EIP:7b451e3c ESP:0066f9c4 EBP:0066fa28 EFLAGS:00000212( - -- I -A- - ) EAX:0066f9d0 EBX:00000000 ECX:0066fa40 EDX:00000000 ESI:00000036 EDI:00000000 Stack dump: 0x0066f9c4: 00000002 00000028 00000000 000006a6 0x0066f9d4: 00000000 00000000 7b451e3c 00000000 0x0066f9e4: 00000000 00000000 4d430003 00000058 0x0066f9f4: 00000002 00000090 00000030 00000002 0x0066fa04: 00000040 00000000 00000000 00000000 0x0066fa14: 00000000 00000000 4d430003 0066fa40 Backtrace: =>0 0x7b451e3c RaiseException+0x7c(code=<couldn't compute location>, flags=<couldn't compute location>, nbargs=<couldn't compute location>, args=<couldn't compute location>) [/home/julliard/wine/wine/dlls/kernel32/except.c:86] in kernel32 (0x0066fa28) 1 0x7e50388e RpcRaiseException+0x1d(exception=<couldn't compute location>) [/home/julliard/wine/wine/dlls/rpcrt4/rpcrt4_main.c:192] in rpcrt4 (0x0066fa58) 2 0x7e4cefba NdrGetBuffer+0x89(stubmsg=<couldn't compute location>, buflen=<couldn't compute location>, handle=<couldn't compute location>) [/home/julliard/wine/wine/dlls/rpcrt4/ndr_clientserver.c:174] in rpcrt4 (0x0066fa98) 3 0x7db24c4c SchRpcRetrieveTask+0x10b(path=<couldn't compute location>, languages=<couldn't compute location>, n_languages=<couldn't compute location>, xml=<couldn't compute location>) [/home/julliard/wine/wine/dlls/taskschd/schrpc_c.c:414] in taskschd (0x0066fca8) 4 0x7db16c21 RegisteredTask_create+0x230() [/home/julliard/wine/wine/dlls/taskschd/regtask.c:365] in taskschd (0x0066fd08) 5 0x7db1022e TaskFolder_GetTask+0x6d(iface=<couldn't compute location>, name=<couldn't compute location>, task=<couldn't compute location>) [/home/julliard/wine/wine/dlls/taskschd/folder.c:275] in taskschd (0x0066fd68) 6 0x00401dcc wmain+0x49b(argc=0x5, argv=0x231318) [/home/julliard/wine/wine/programs/schtasks/../../include/taskschd.h:1730] in schtasks (0x0066fe38) 7 0x0040139d server+0x40139c() in schtasks (0x0066fec8) 8 0x7b47eaf2 call_process_entry+0x11() in kernel32 (0x0066fee8) 9 0x7b480a28 start_process+0x157(entry=<is not available>, peb=<is not available>) [/home/julliard/wine/wine/dlls/kernel32/process.c:1257] in kernel32 (0x0066ffd8) 10 0x7b47eafe start_process_wrapper+0x9() in kernel32 (0x0066ffec) 0x7b451e3c RaiseException+0x7c [/home/julliard/wine/wine/dlls/kernel32/except.c:86] in kernel32: addl $12,%esp 86 } Modules: Module Address Debug info Name (62 modules) PE 400000- 465000 Dwarf schtasks ELF 7b400000-7b848000 Dwarf kernel32<elf> -PE 7b430000-7b848000 \ kernel32 ELF 7bc00000-7bd35000 Deferred ntdll<elf> -PE 7bc30000-7bd35000 \ ntdll ELF 7c000000-7c005000 Deferred <wine-loader> ELF 7dabd000-7daf5000 Deferred xmllite<elf> -PE 7dad0000-7daf5000 \ xmllite ELF 7daf5000-7db4d000 Dwarf taskschd<elf> -PE 7db00000-7db4d000 \ taskschd ELF 7db6f000-7db76000 Deferred libxfixes.so.3 ELF 7db76000-7db83000 Deferred libxcursor.so.1 ELF 7db83000-7db96000 Deferred libxi.so.6 ELF 7db96000-7db9a000 Deferred libxcomposite.so.1 ELF 7db9a000-7dba7000 Deferred libxrandr.so.2 ELF 7dba7000-7dbb3000 Deferred libxrender.so.1 ELF 7dbb3000-7dbba000 Deferred libxxf86vm.so.1 ELF 7dbba000-7dbbf000 Deferred libxinerama.so.1 ELF 7dbbf000-7dbca000 Deferred librt.so.1 ELF 7dbca000-7dbe9000 Deferred libbsd.so.0 ELF 7dbe9000-7dbf0000 Deferred libxdmcp.so.6 ELF 7dbf0000-7dbf5000 Deferred libxau.so.6 ELF 7dbf5000-7dc23000 Deferred libxcb.so.1 ELF 7dc23000-7dd72000 Deferred libx11.so.6 ELF 7dd72000-7dd87000 Deferred libxext.so.6 ELF 7ddc0000-7de71000 Deferred winex11<elf> -PE 7dde0000-7de71000 \ winex11 ELF 7de71000-7de97000 Deferred imm32<elf> -PE 7de80000-7de97000 \ imm32 ELF 7e165000-7e16f000 Deferred libuuid.so.1 ELF 7e16f000-7e1aa000 Deferred libexpat.so.1 ELF 7e1aa000-7e1f7000 Deferred libfontconfig.so.1 ELF 7e1f7000-7e216000 Deferred libz.so.1 ELF 7e216000-7e255000 Deferred libpng16.so.16 ELF 7e255000-7e318000 Deferred libfreetype.so.6 ELF 7e351000-7e49d000 Deferred oleaut32<elf> -PE 7e380000-7e49d000 \ oleaut32 ELF 7e49d000-7e543000 Dwarf rpcrt4<elf> -PE 7e4c0000-7e543000 \ rpcrt4 ELF 7e543000-7e695000 Deferred gdi32<elf> -PE 7e560000-7e695000 \ gdi32 ELF 7e695000-7e8c6000 Deferred user32<elf> -PE 7e6c0000-7e8c6000 \ user32 ELF 7e8c6000-7e95f000 Deferred advapi32<elf> -PE 7e8e0000-7e95f000 \ advapi32 ELF 7e95f000-7ead9000 Deferred ole32<elf> -PE 7e990000-7ead9000 \ ole32 ELF 7ead9000-7ebae000 Deferred msvcrt<elf> -PE 7eb00000-7ebae000 \ msvcrt ELF 7ee79000-7ee8e000 Deferred libnss_files.so.2 ELF 7ee8e000-7eea9000 Deferred libnsl.so.1 ELF 7eea9000-7eeb7000 Deferred libnss_nis.so.2 ELF 7eeb7000-7eec1000 Deferred libnss_compat.so.2 ELF 7eec1000-7efc7000 Deferred libm.so.6 ELF 7efcd000-7eff9000 Deferred version<elf> -PE 7efd0000-7eff9000 \ version ELF f7b05000-f7b0b000 Deferred libdl.so.2 ELF f7b0b000-f7ce9000 Deferred libc.so.6 ELF f7ce9000-f7d0a000 Deferred libpthread.so.0 ELF f7d43000-f7efc000 Dwarf libwine.so.1 ELF f7efe000-f7f28000 Deferred ld-linux.so.2 ELF f7f2b000-f7f2d000 Deferred [vdso].so Threads: process tid prio (all id:s are in hex) 00000008 schtasks.exe_test.exe 00000009 0 0000000e services.exe 00000031 0 0000002b 0 00000022 0 0000001c 0 00000015 0 00000014 0 00000013 0 00000010 0 0000000f 0 00000011 plugplay.exe 00000017 0 00000016 0 00000012 0 00000018 svchost.exe 00000040 0 0000003f 0 0000003e 0 0000003b 0 0000003a 0 0000001f 0 0000001e 0 0000001d 0 00000019 0 0000001a explorer.exe 00000027 0 00000026 0 00000025 0 0000001b 0 00000020 winedevice.exe 00000028 0 00000024 0 00000023 0 00000021 0 00000029 winedevice.exe 0000002e 0 0000002d 0 0000002c 0 0000002a 0 0000002f rpcss.exe 00000038 0 00000037 0 00000035 0 00000034 0 00000033 0 00000032 0 00000030 0 00000043 (D) C:\windows\system32\schtasks.exe 00000044 0 <== System information: Wine build: wine-4.9-253-gf7c9ae5c47eb Platform: i386 Version: Windows 7 Host system: Linux Host version: 4.19.0-5-amd64 schtasks.c:188: Test failed: r = 1702
On 03-06-19 22:39, Alexandre Julliard wrote:
Sven Baars sven.wine@gmail.com writes:
Signed-off-by: Sven Baars sven.wine@gmail.com
dlls/taskschd/task.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-)
This breaks the tests:
Sorry for that. I'll have a better look.
Best, Sven