Walt Ogburn wrote:
Hi developers,
I'm trying to understand why the following simple program crashes. I think this is the same problem that prevents jack_fst from running with the current version of wine. (Jack_fst allows a lot of programs called VSTs to be run, for audio work).
I compiled this with:
winemaker . make
and ran it with:
wine membug.exe.so
If BUFSIZE is 1044097, there's an error like this: err:seh:setup_exception stack overflow 12 bytes in thread 0009 eip 4057426f esp 40580ff4 stack 0x40580000-0x40680000
If BUFSIZE is 1044096 or lower, there's no error. If BUFSIZE is much higher (like 2000000), there's a segfault.
All the program does is define a character array of size BUFSIZE and scribble in it to make sure it really gets allocated. Maybe this simple example will show how to make jack_fst work.
Thanks, Walter
#include "windows.h"
#define BUFSIZE 1044096 /* #define BUFSIZE 2000000 */
int PASCAL WinMain (HINSTANCE inst, HINSTANCE prev, LPSTR cmdline, int show) { char buf[BUFSIZE]; int i;
for (i=0; i<BUFSIZE; i++) { buf[i] = (char) (i % 256); }
return 0; }
Your sample program is trying to use almost 1 megabyte (!) of stack space. No wonder it crashes. Are you sure that your program jack_fst is trying to allocate such an enormous amount of stack space? Most (sane) programs would just declare a pointer and allocate the required space via malloc() or HeapAlloc().
Where can somebody else get a copy of jack_fst? Is there a public download somewhere? Maybe jack_fst corrupts the stack in some strange way that was misdiagnosed as as request for a 1Mb stack?