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