http://bugs.winehq.org/show_bug.cgi?id=8314
Summary: WinBoard using ICS crashes because of extra WM_INITDIALOG Product: Wine Version: 0.9.36. Platform: PC URL: //http://ftp.gnu.org/gnu/winboard/winboard-4_2_7a.exe OS/Version: Linux Status: UNCONFIRMED Severity: major Priority: P2 Component: wine-gui AssignedTo: wine-bugs@winehq.org ReportedBy: emullins0x20@earthlink.net
To duplicate the problem, install and run winboard from a fresh wine config.
Choose "Use an Internet Chess Server". I use freechess.org, however the default one at chessclub works here too-- the console window that gets created when connecting to a chess server causes the crash:
err:seh:setup_exception stack overflow 32 bytes in thread 0009 eip 0040f77f esp 00660fe0 stack 0x661000-0x870000
I tracked the bug down. From the sources, http://ftp.gnu.org/gnu/xboard/xboard-4.2.7.tar.gz, in xboard-4.2.7/winboard/winboard.c is this function:
VOID
ConsoleCreate()
{
HWND hCons;
if (hwndConsole) return;
hCons = CreateDialog(hInst, szConsoleName, 0, NULL);
SendMessage(hCons, WM_INITDIALOG, 0, 0);
}
In windows, the CreateDialog() call issued as above, there is no WM_INITDIALOG message sent, but in wine, there is. So, in wine, two consecutive WM_INITDIALOG calls are sent, and the windowproc for this program is unable to deal with that and so it crashes. The docs for CreateDialog() that I read indicate it is supposed to send an WM_INITDIALOG message. I haven't investigated beyond what is here, but I suspect that only in a CreateDialog() like above will windows proper refuse to send WM_INITDIALOG.
This problem only affects the use of winboard on an internet chess server since that's the only time it needs the console window. And the obvious temporary fix for wine of commenting out the SendMessage() following the CreateDialog() indeed allows the console window to get created and have the app work properly.