http://bugs.winehq.org/show_bug.cgi?id=58333
Bug ID: 58333 Summary: Lotus Freelance Graphics 2.1 reports a C runtime error and exits Product: Wine Version: 10.9 Hardware: x86-64 URL: https://archive.org/download/lotussmartsuiterelease3.1 forwindows/Lotus%20SmartSuite%20Release%203.1%20for%20 Windows.zip OS: Linux Status: NEW Keywords: download, win16 Severity: normal Priority: P2 Component: -unknown Assignee: wine-bugs@winehq.org Reporter: imwellcushtymelike@gmail.com Distribution: Ubuntu
Created attachment 78706 --> http://bugs.winehq.org/attachment.cgi?id=78706 Screenshot
Lotus Freelance Graphics 2.1 reports a C runtime error and either exits or hangs.
Installed with an earlier version of Wine to work around Bug 58329. Tested with many version of Wine up to latest git (wine-10.9-62-g68bd146ae55).
$ wine 'c:\LOTSUITE\FLW\FLW.EXE' 0134:err:local:LOCAL_GetBlock not enough space in local heap 0b07 for 124 bytes
After many hours messing around I discovered that this was due to me adding a single environment variable, such as WINEDEBUG=+server for example. Apparently this was just enough to "break the donkey's back".
However, my environment variables aren't particularly large.
$ true | xargs --show-limits Your environment variables take up 2260 bytes POSIX upper limit on argument length (this system): 2092844 POSIX smallest allowable upper limit on argument length (all systems): 4096 Maximum length of command we could actually use: 2090584 Size of command buffer we are actually using: 131072
An +all trace (because I didn't know where to start) shows that Wine's environment variables only come to around 3K, which also doesn't seem a lot.
I wanted to trace get_startup_info() but setting WINEDEBUG=+ntdll or +server simply triggers the bug.
To prove... nothing I added 100 large variables and winevdm sat churning away for five minutes before I got bored and stopped it. 0130:err:sync:RtlpWaitForCriticalSection section 78F049E0 "dlls/krnl386.exe16/syslevel.c: Win16Mutex" wait timed out in thread 0130, blocked by 0134, retrying (60 sec)
0134:trace:local:LOCAL_PrintHeap Local Heap ds=0b07 first=f2c0 last=fff4 items=5 0134:trace:local:LOCAL_PrintHeap f2c0: prev=f2c0 next=f2cc type=1 0134:trace:local:LOCAL_PrintHeap size=12 free_prev=f2c0 free_next=ff80 0134:trace:local:LOCAL_PrintHeap f2cc: prev=f2c0 next=f2fc type=1 0134:trace:local:LOCAL_PrintHeap f2fc: prev=f2cc next=ff80 type=1 0134:trace:local:LOCAL_PrintHeap ff80: prev=f2fc next=fff4 type=0 0134:trace:local:LOCAL_PrintHeap size=116 free_prev=f2c0 free_next=fff4 0134:trace:local:LOCAL_PrintHeap fff4: prev=ff80 next=fff4 type=0 0134:trace:local:LOCAL_PrintHeap size=12 free_prev=ff80 free_next=fff4 0134:err:local:LOCAL_GetBlock not enough space in local heap 0b07 for 124 bytes
“Does this mirror the behaviour seen on Windows?” I'll have to come back to that.