http://bugs.winehq.org/show_bug.cgi?id=19652
--- Comment #10 from Jeremy White jwhite@codeweavers.com 2010-03-16 15:50:56 --- Maarten points out that if you look at r53273 of this file in WebKit: WebCore/platform/win/SharedTimerWin.cpp you can find a fairly clear map to a portion of the code. At the very least, you can find a clear path that explains some code around the Webkit...TimerFired message.
However, a lengthy analysis of that code doesn't reveal the problem (at least not to my admittedly flawed eyes).
It still seems as though there is some iTunes specific code in a set of Windows Hooks, and it is that code that is the culprit.
However, you have to make some fairly improbably assumptions about that code to make that make sense. The idea that the Windows hooks repost a given message if there is a WM_TIMER in the queue is pretty dicey, for starters (that should fail on Windows).
My ending hunch is that there is something going on with code paths based on timing information; that iTunes decides it has a particular sort of timers and that causes it to behave in a way it doesn't on Windows.
(And Maarten found that if he mucked with GetQueueStatus, he could also get a successful result; so that timing change also seems to help. See the SharedTimerWin.cpp code to speculate as to why that might be).