http://bugs.winehq.org/show_bug.cgi?id=34343
--- Comment #16 from Ken Thomases ken@codeweavers.com 2013-08-25 12:44:58 CDT --- I'm guessing it has to do with the compiler's attempts to optimize the generated code. If you have a build that reproduces the problem and then you do:
cd dlls/user32 touch button.c dialog.c make CFLAGS=-O0
and then run that Wine from within the build tree, I suspect that will avoid the problem.
There are a couple of possibilities: it's a bug in the compiler such that it's producing incorrect code from the Wine sources, or it's a subtle bug in Wine that's only revealed by certain optimization strategies.