I have a scheduled task which calls WinSCP every two minutes, all day every day. It checks to see if a small file exists and if so, it transfers it.
About twice a week, WinSCP gets stuck and doesn't exit. There seems to be no consistent time of day, day of week- not sure how to reproduce other than to call up WinSCP thousands of times. I do have Process Explorer on the machine with WinSCP and can post stack trace & other interesting info, in addition to the usual logs, version number, scripts, etc. Here it goes:
WinSCP Version 4.3.3 (Build 1340) (OS 6.1.7600)
- Also happened with 4.2.9 (Build 938) (OS 6.1.7600)
Running on Windows Server 2008 R2 Standard
Transfer Protocol: SFTP (SCP) using a keypair
Using scripting, not the GUI. It's called from a scheduled task, called OvDExch, with no desktop interaction.
We have several logs, they all end like this (with different timestamps):
> 2011-06-01 17:25:08.485 Script: close
. 2011-06-01 17:25:08.485 Closing connection.
. 2011-06-01 17:25:08.485 Sending special code: 12
. 2011-06-01 17:25:08.485 Sent EOF message
. 2011-06-01 17:25:08.485 [Shell] Closing connection.
. 2011-06-01 17:25:08.485 [Shell] Sending special code: 12
. 2011-06-01 17:25:08.485 [Shell] Sent EOF message
I am emailing a zip file with full logs plus the scripts used, look for subject "Hang on June 1st".
Details on the hung process, via Process Explorer:
The "TCP/IP" tab shows that it has no connection open. (The same tab shows connections on an actively transferring WinSCP process.) It has been nearly a day between the process hang any my looking at it so I'm not sure when the connections closed.
Thread details about the hung WinSCP:
Thread 5952 - WinSCP.exe+0x1af4
State- Wait:WrUserRequest
stack- ntoskrnl.exe!SeAccessCheckWithHint+0xb4a
ntoskrnl.exe!HalPrivateDispatchTable+0x1190
wow64cpu.dll!TurboDispatchJumpAddressEnd+0x690
wow64cpu.dll!TurboDispatchJumpAddressEnd+0x649
wow64.dll!Wow64SystemServiceEx+0x1ce
wow64.dll!Wow64LdrpInitialize+0x429
ntdll.dll!RtlResetRtlTranslations+0x1b08
ntdll.dll!RtlResetRtlTranslations+0xc63
ntdll.dll!LdrInitializeThunk+0xe
USER32.dll!WaitMessage+0x15
WinSCP.exe!@Tbxtoolpals@initialization$qqrv+0x3aad4
WinSCP.exe!@@Winhelp@Finalize+0xcd9
WinSCP.exe!@@Winhelp@Finalize+0x11ef
WinSCP.exe!@@Winhelp@Finalize+0x1686
WinSCP.exe!@@Tools@Finalize+0x1678
WinSCP.exe!@@Tools@Finalize+0x1011
WinSCP.exe!__GetExceptDLLinfo+0x2f2
WinSCP.exe!@Tbxtoolpals@initialization$qqrv+0x8da6f
ntdll.dll!RtlInitializeExceptionChain+0x63
ntdll.dll!RtlInitializeExceptionChain+0x36
Thread 3016- ntdll.dll!EtwDeliverDataBlock+0x453
State- Wait:UserRequest
Stack- ntoskrnl.exe!SeAccessCheckWithHint+0xb4a
ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x7d2
ntoskrnl.exe!KeWaitForMutexObject+0x19f
ntoskrnl.exe!PsIsSystemProcess+0x94
ntoskrnl.exe!KeStackAttachProcess+0x11c1
ntoskrnl.exe!KeAcquireSpinLockAtDpcLevel+0x9dd
ntoskrnl.exe!KeWaitForMultipleObjects+0x26b
ntoskrnl.exe!MmCreateSection+0xe23
ntoskrnl.exe!NtOpenResourceManager+0x599
ntoskrnl.exe!KeSynchronizeExecution+0x3a43
wow64cpu.dll!TurboDispatchJumpAddressEnd+0x690
wow64cpu.dll!TurboDispatchJumpAddressEnd+0xe3
wow64.dll!Wow64SystemServiceEx+0x1ce
wow64.dll!Wow64LdrpInitialize+0x429
ntdll.dll!LdrGetProcedureAddress+0x24127
ntdll.dll!LdrInitializeThunk+0xe
ntdll.dll!NtWaitForMultipleObjects+0x15
kernel32.dll!BaseThreadInitThunk+0x12
ntdll.dll!RtlInitializeExceptionChain+0x63
ntdll.dll!RtlInitializeExceptionChain+0x36
Thread 5560- ntdll.dll!TpCallbackIndependent+0x238
State- Wait:WrQueue
Stack- ntoskrnl.exe!SeAccessCheckWithHint+0xb4a
ntoskrnl.exe!HalPrivateDispatchTable+0x1190
ntdll.dll!ZwWaitForWorkViaWorkerFactory+0xa
wow64.dll!Wow64EmulateAtlThunk+0x1c97f
wow64.dll!Wow64SystemServiceEx+0xd7
wow64cpu.dll!TurboDispatchJumpAddressEnd+0x24
wow64.dll!Wow64SystemServiceEx+0x1ce
wow64.dll!Wow64LdrpInitialize+0x429
ntdll.dll!LdrGetProcedureAddress+0x24127
ntdll.dll!LdrInitializeThunk+0xe
ntdll.dll!NtWaitForWorkViaWorkerFactory+0x12
kernel32.dll!BaseThreadInitThunk+0x12
ntdll.dll!RtlInitializeExceptionChain+0x63
ntdll.dll!RtlInitializeExceptionChain+0x36
I hope that the stack traces plus the logs can point you to the issue, even though the steps to reproduce are not clear.
Thanks for your time