commit a0e8d02d093e01fdadf8a16bc86fe18b0c4e82c3 from: rsc date: Sun Jan 23 16:02:04 2005 UTC Apparently SuSE 9.1's X distribution uses even bigger buffers than the standard ones. 64kB appears to be enough for a stack in that case, but let's just go nuts and make the stacks enormous, so that it takes a few more doublings of X's stack needs before we run into this problem again. The VM system should take care of not actually using most of the memory anyway. commit - 8327d419814d5ccfa9c005b371267d783f585177 commit + a0e8d02d093e01fdadf8a16bc86fe18b0c4e82c3 blob - f1c72ee9387de2895143c206b6870fea4eb73366 blob + 8b1c1376a85aed16c9850199ed262bd550354327 --- src/libdraw/x11-itrans.c +++ src/libdraw/x11-itrans.c @@ -21,7 +21,8 @@ __xtoplan9kbd(XEvent *e) if(e->xany.type != KeyPress) return -1; - needstack(20*1024); /* X has some *huge* buffers in openobject */ + needstack(64*1024); /* X has some *huge* buffers in openobject */ + /* and they're even bigger on SuSE */ XLookupString((XKeyEvent*)e,NULL,0,&k,NULL); if(k == XK_Multi_key || k == NoSymbol) return -1; blob - 1a4d0a3bdc5934302d3cdd3a917238816352c2cb blob + 77fa78ba106ca1d40345ce482d81302d5813d662 --- src/libdraw/x11-keyboard.c +++ src/libdraw/x11-keyboard.c @@ -72,7 +72,7 @@ initkeyboard(char *file) return nil; kc->c = chancreate(sizeof(Rune), 20); chansetname(kc->c, "kbdc"); - proccreate(_ioproc, kc, 32768); + proccreate(_ioproc, kc, 256*1024); return kc; } blob - 936b562863aaac99de3876cabae3d0d48e20ee17 blob + 1e7757582a55416225074829911c77ef2a87eb18 --- src/libdraw/x11-mouse.c +++ src/libdraw/x11-mouse.c @@ -141,7 +141,7 @@ initmouse(char *file, Image *i) chansetname(mc->c, "mousec"); mc->resizec = chancreate(sizeof(int), 2); chansetname(mc->resizec, "resizec"); - proccreate(_ioproc, mc, 32768); + proccreate(_ioproc, mc, 256*1024); return mc; } blob - ff22bbaa89a940009c4b32ff8d61363e8a8ba698 blob + 646d26598669a58dedcd8e5dc6efa591879007ff --- src/libthread/thread.c +++ src/libthread/thread.c @@ -578,7 +578,7 @@ main(int argc, char **argv) p = procalloc(); _threadsetproc(p); if(mainstacksize == 0) - mainstacksize = 65536; + mainstacksize = 256*1024; _threadcreate(p, threadmainstart, nil, mainstacksize); scheduler(p); _threaddaemonize();