Memory problem in winelib apps?
Alex Villacís Lasso
a_villacis at palosanto.com
Tue Jun 21 21:02:43 CDT 2005
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?
More information about the wine-devel
mailing list