Date: Thu, 1 Sep 94 15:06:15 +0200 From: gwj AT J-23 DOT p DOT lodz DOT pl (Grzegorz Jablonski) To: djgpp AT sun DOT soe DOT clarkson DOT edu Subject: 112 bugs Hello all DJGPPers I downloaded yesterday version 1.12. I've found some bugs in it. 1. Sometimes go32 generates error message about too many arguments. This is caused by comparison of uninitialized variable argc to 10000 in module ^C. This is a fix. 1091a1092,1093 > /* GWJ change 94-08-31 */ > for (argc=0; argv[argc]; argc++); 2. Compiling anything in C++ caused (as I thought) system hang. So happens only in XMS mode. VCPI works fine. This is due to buggy swapping out routine in paging.c. When our program allocates little enough memory, it is not swapped out. It has the following consequences: i) All the XMS is allocated. Child program is executed only in released base memory. Accesing XMS through paging and SMARTDRIVE is very slow method. After identyfication of the problem I used topline info and found out, that program is swapping like crazy. I lost my patience after 1/2 h and turned it off. So, if we want to keep something on exec, we should free some XMS after swapping out or relocation the pages in released area. ii)If we have little XMS in our computer, go32 uses base memory for execution of the program. We free all allocated base memory, but we have some data on pages in this area. (I am not quite sure of it - tell me if I am wrong). So after return from the child program, we can have some data or code corrupt. So, better use paging.c from 1.11m5 or set keep_on_exec to 1 and do not change it. 3. The example of obiective C doesn't work. I don't know and don't use this language, so I don't care. Grzegorz W. Jablonski gwj AT j-23 DOT p DOT lodz DOT pl