Hang in user32/tests/dde.c:test_msg_client()

Dan Kegel dank at kegel.com
Tue Jul 29 06:51:49 CDT 2008

I'm running the tests on a slowish uniprocessor (Athlon XP 2100+, not dual
as I mistakenly said in last post), and I'm running into a hang in
user32/tests/dde.c.  This is a two process test.  One process is hung in
  8  test_ddeml_server+0x1ad(hproc=0x4c) [dlls/user32/tests/dde.c:797]
in user32_test (0x7f21fc68)
in a reasonable looking "wait for requests", and the
other is hung in
  5  X11DRV_MsgWaitForMultipleObjectsEx+0x77(count=0x1,
handles=0x7f22fa0c, timeout=0xffffffff, mask=0x40, flags=0x0)
[dlls/winex11.drv/event.c:402] in winex11 (0x7f22f968)
  6  wait_message_reply+0x11f(flags=0x0) [dlls/user32/message.c:2274]
in user32 (0x7f22fa28)
  7  send_inter_thread_message+0xf9(info=0x7f22faec,
res_ptr=0x7f22fab0) dlls/user32/message.c:2418] in user32 (0x7f22fa78)
  8  send_message+0x252(info=0x7f22faec, res_ptr=0x0, unicode=0x0)
[dlls/user32/message.c:2480] in user32 (0x7f22fac8)
  9  SendMessageTimeoutA+0x52(hwnd=0x84002c, msg=0x3e0,
wparam=0xb005c, lparam=0xc09fc09c, flags=0x0, timeout=0x0,
res_ptr=0x0) [dlls/user32/message.c:2567] in user32 (0x7f22fb18)
  10  broadcast_message_callback+0xfa(hwnd=0x84002c,
lparam=0x7f22fc08) [dlls/user32/message.c:363] in user32 (0x7f22fb68)
  11  EnumWindows+0x7d(lpEnumFunc=0x4b3d5ba, lParam=0x7f22fc08)
[dlls/user32/win.c:2979] in user32 (0x7f22fb98)
  12  send_message+0x3b(info=0x7f22fc08, res_ptr=0x7f22fc34,
unicode=0x0) [dls/user32/message.c:2450] in user32 (0x7f22fbe8)
  13  SendMessageA+0x5b(hwnd=0xffff, msg=0x3e0, wparam=0xb005c,
lparam=0xc09fc09c) [dlls/user32/message.c:2609] in user32 (0x7f22fc38)
  14  test_msg_client+0x111() [dlls/user32/tests/dde.c:1026] in
user32_test (0x7f22fc68)
That last frame is on the line
    SendMessageA(HWND_BROADCAST, WM_DDE_INITIATE, (WPARAM)client_hwnd,
MAKELONG(server, topic));

Looking at the code, it seems the client is spawned before the server
is started.
What happens if the client gets all the way to that SendMessageA(...
before the server is active?  Would that cause the observed hang?

The code in question seems to have been added back in October by:

commit 9cf7f8c3e21931b52e3da6c5feb701aa9ba4a1f8
Author: James Hawkins <truiken at gmail.com>
Date:   Mon Oct 8 04:06:45 2007 -0500

    user32: Test the ddeml server interface.

- Dan

More information about the wine-devel mailing list