Memory problem in winelib apps?

Chris Morgan cmorgan at alum.wpi.edu
Tue Jun 21 21:39:12 CDT 2005


This should have been fixed in jack around 20040325 with a jack to the jack 
variable, JACK_THREAD_STACK_TOUCH.  The value was changed from 1048576
(#define BIG_ENOUGH_STACK in client.c:jack_activate():1033 or so) and moved 
into configure.in.

The change was made in this rev of configure.in:
----------------------------
revision 1.253
date: 2004/03/26 04:41:57;  author: joq;  state: Exp;  lines: +17 -4
[0.96.1] config fixes for shm; stack touch
----------------------------

The reason jack does this is to ensure that all pages of the shared memory for 
all jack clients is mapped so there are no delays during excution.  The value 
was reduced because wine was taking up a bunch of the stack and jack/wine 
were crashing.

Which version of jack are you using?  Which version of wine?

The last time I tried jack under wine it didn't work but I wasn't able to 
figure out why this time and haven't gone back to it in a few months.

Chris




On Tuesday 21 June 2005 10:02 pm, Alex Villací­s Lasso wrote:
> 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