Article ID: 814116 - View products that this article applies to.
This article has been archived. It is offered "as is" and will no longer be updated.
If you move the system time ahead during transaction processing, Microsoft Message Queuing, also known as MSMQ, 2.0 may stop sending and receiving messages.
This problem occurs because the Message Queuing 2.0 scheduler wakes up to perform tasks according to the most urgent task. If the system clock is moved ahead after the wake up, the queue manager does not adjust the wake up. The wake up is never reached, because it is earlier than the current time.
Service Pack InformationTo resolve this problem, obtain the latest service pack for Microsoft Windows 2000. For additional information, click the following article number to view the article in the Microsoft Knowledge Base:
(http://support.microsoft.com/kb/260910/EN-US/ )How to Obtain the Latest Windows 2000 Service Pack
Hotfix InformationA supported fix is now available from Microsoft, but it is only intended to correct the problem that is described in this article. Apply it only to computers that are experiencing this specific problem. This fix may receive additional testing. Therefore, if you are not severely affected by this problem, Microsoft recommends that you wait for the next Windows 2000 service pack that contains this hotfix.
To resolve this problem immediately, contact Microsoft Product Support Services to obtain the fix. For a complete list of Microsoft Product Support Services phone numbers and information about support costs, visit the following Microsoft Web site:
The English version of this fix has the file attributes (or later) that are listed in the following table. The dates and times for these files are listed in coordinated universal time (UTC). When you view the file information, it is converted to local time. To find the difference between UTC and local time, use the Time Zone tab in the Date and Time tool in Control Panel.
Date Time Version Size File Name ---------------------------------------------------------- 05-Feb-2003 23:58 188.8.131.526 281,360 Mq1repl.dll 04-Feb-2003 15:51 184.108.40.2066 14,096 Mq1sync.exe 19-Dec-2002 21:37 220.127.116.114 75,408 Mqac.sys 05-Feb-2003 23:58 18.104.22.1680 217,360 Mqads.dll 30-Oct-2002 16:43 22.214.171.1241 25,360 Mqbkup.exe 05-Feb-2003 23:58 126.96.36.1990 76,560 Mqdscli.dll 05-Feb-2003 23:58 188.8.131.525 41,744 Mqdssrv.dll 21-Oct-2002 20:31 184.108.40.2069 98,064 Mqmig.exe 05-Feb-2003 23:58 220.127.116.119 265,488 Mqmigrat.dll 05-Feb-2003 23:58 18.104.22.1680 222,480 Mqoa.dll 05-Feb-2003 23:58 22.214.171.1242 8,464 Mqperf.dll 05-Feb-2003 23:58 126.96.36.1997 425,744 Mqqm.dll 05-Feb-2003 23:58 188.8.131.525 102,672 Mqrt.dll 05-Feb-2003 23:58 184.108.40.2069 70,928 Mqsec.dll 05-Feb-2003 23:58 220.127.116.112 23,824 Mqupgrd.dll 05-Feb-2003 23:58 18.104.22.1687 110,352 Mqutil.dll 05-Feb-2003 23:58 22.214.171.1248 64,784 Msmq.cpl
Microsoft has confirmed that this is a problem in the Microsoft products that are listed at the beginning of this article. This problem was first corrected in Microsoft Windows 2000 Service Pack 4.
For additional information about how to obtain a hotfix for Windows 2000 Datacenter Server, click the article number below to view the article in the Microsoft Knowledge Base:
(http://support.microsoft.com/kb/265173/EN-US/ )The Datacenter Program and Windows 2000 Datacenter Server Product
The Message Queuing 2.0 Scheduler saves the next wake up time. A new task determines the latest time that the wake up can be performed (timeout). If the timeout is earlier than the wake up time, the system adjusts the wake up accordingly. However, if the system clock is moved ahead after the wake up time is set, the queue manager does not adjust the wake up time. The wake up is never reached, because it is earlier than current time.
The following is the Message Queuing 2.0 wake up algorithm:
0:026> kb ChildEBP RetAddr Args to Child 012ef854 77f5166a 77e4c4d1 000002a4 00000000 SharedUserData!SystemCallStub+0x4 012ef858 77e4c4d1 000002a4 00000000 012ef89c ntdll!ZwWaitForSingleObject+0xc 012ef8c8 77e4c352 000002a4 01499700 00000000 kernel32!WaitForSingleObjectEx+0xac 012ef8d8 61adb222 000002a4 01499700 61b4a9a8 kernel32!WaitForSingleObject+0xf 012ef8fc 61ae63bd 00dd46ac 012efae8 61b4a9a8 MQQM!CTransaction::InternalCommit+0x57 012ef91c 61abc447 00daa690 61aa28c2 00daa690 MQQM!QMDoCommitTransaction+0xc0 012ef924 61aa28c2 00daa690 61aa28b3 77d0ec9e MQQM!qmcomm_v1_0_S_QMCommitTransaction+0x9 012ef930 77d0ec9e 012ef968 00daac88 00000000 MQQM!qmcomm_R_QMCommitTransaction_Thunk+0xf555] 012efd04 77d0d377 00000000 00000000 00dd46ac RPCRT4!NdrStubCall2+0x1a4 012efd20 77c983bd 00dd46ac 00daac88 00dd46ac RPCRT4!NdrServerCall2+0x17 012efd54 77c98942 61af4864 00dd46ac 012efdf8 RPCRT4!DispatchToStubInCNoAvrf+0x38 012efda8 77c989ee 00000011 00000000 61b3f32c RPCRT4!RPC_INTERFACE::DispatchToStubWorker+0x112 012efdcc 77c9cc1c 00dd46ac 00000000 61b3f32c RPCRT4!RPC_INTERFACE::DispatchToStub+0xa1 012efe04 77c9c7ff 000c1f60 00d97cf0 00dafdc0 RPCRT4!LRPC_SCALL::DealWithRequestMessage+0x2e1 012efe28 77c91734 00d97d28 012efe40 000c1f60 RPCRT4!LRPC_ADDRESS::DealWithLRPCRequest+0x16b 012eff8c 77c97858 77c97688 00d97cf0 00000000 RPCRT4!LRPC_ADDRESS::ReceiveLotsaCalls+0x423 012eff90 77c97688 00d97cf0 00000000 00000000 RPCRT4!RecvLotsaCallsWrapper+0x9 012effb0 77c97f23 0008dbb0 77e556d0 000b0048 RPCRT4!BaseCachedThreadRoutine+0x9c 012effb8 77e556d0 000b0048 00000000 00000000 RPCRT4!ThreadStartRoutine+0x17 012effec 00000000 77c97f0c 000b0048 00000000 kernel32!BaseThreadStart+0x34