memory and VM issues

Alan Grimes alangrimes at starpower.net
Fri Jul 15 17:16:56 UTC 2005


>>The VM
>>code would not have to be touched -- ever. (Well, nobody does so anyway
>>    
>>
>>for reasons I mentioned earlier...)
>>    
>>

>Oh crap. Stop insulting the work of a small, dedicated, busy and mostly
>unrewarded gang of VM makers. We do what we can, as well as we can,
>when we can. If you don't like it, spend as much time as we have
>learning about this stuff and then get on with contributing something
>useful.
>  
>

Okay, I went a little too far here.

I'll appologise for that much.


However, I can't appologise for not doing the work myself. -- I tried.

Every time I attempted a change to anything in the VM it either -- A,
blew up. or B, failed to meet coding standards, either for being
unportable. (reasonable), incompatible with some subtle design feature
in the VM (Again, reasonable but exclusionary of people who don't have
current documentation on it), Or displeasing to Ian's inscrutable sense
of asthetics (utterly unreasonable.) -- A noteworthy build issue on my
machine went unresolved for several years because of an issue that I
still don't understand. -- Apparently some gross stupidity in the GCC
toolchain which ment that every library listed on the link line was
required wheather it contained relevant symbols or not. Resulting in the
fact that the source was written to support a subset of users who almost
certainly would be willing to configure/make a custom VM for their own
needs at the expense of forcing any normal user to wade through a dozen
thousand-line configure scripts to figure out what in blue blazes was
going on.

To emphasize my current issues, here's my build error of the week:

############################
atg at leenooks ~/source/trunk/bld $ make
gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1  -DHAVE_CONFIG_H 
-DSQUEAK_BUILTIN_PLUGIN -I/home/atg/source/trunk/bld
-I/home/atg/source/trunk/platforms/unix/vm
-I/home/atg/source/trunk/platforms/Cross/vm -I/h
/atg/source/trunk/src/vm -I/home/atg/source/trunk/platforms/Cross/vm
-I/home/atg/source/trunk/platforms/unix/vm
-I/home/atg/source/trunk/src/vm
-I/home/atg/source/trunk/platforms/Cross/plugins/FilePlugin -I/h
/atg/source/trunk/platforms/unix/plugins/B3DAcceleratorPlugin
-I/home/atg/source/trunk/bld -I/home/atg/source/trunk/platforms/unix/vm
-I/home/atg/source/trunk/platforms/Cross/vm -I/home/atg/source/trunk/src/v
 -c -o gnu-interp.o gnu-interp.c
In file included from /home/atg/source/trunk/platforms/Cross/vm/sq.h:19,
                 from /home/atg/source/trunk/platforms/unix/vm/sqGnu.h:45,
                 from gnu-interp.c:8:
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:25:3:
warning: #warning
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:26:3:
warning: #warning ***************************************************
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:27:3:
warning: #warning *
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:28:3:
warning: #warning * interp.h not found -- defaulting to a 32-bit VM
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:29:3:
warning: #warning *
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:30:3:
warning: #warning * update your image-side VM sources to the latest
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:31:3:
warning: #warning * version to avoid this message
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:32:3:
warning: #warning *
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:33:3:
warning: #warning ***************************************************
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:34:3:
warning: #warning
gnu-interp.c:12:1: warning: "byteAt" redefined
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:122:1:
warning: this is the location of the previous definition
gnu-interp.c:13:1: warning: "byteAtput" redefined
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:123:1:
warning: this is the location of the previous definition
gnu-interp.c:14:1: warning: "longAt" redefined
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:129:1:
warning: this is the location of the previous definition
gnu-interp.c:15:1: warning: "longAtput" redefined
/home/atg/source/trunk/platforms/Cross/vm/sqMemoryAccess.h:130:1:
warning: this is the location of the previous definition
gnu-interp.c:1318: error: syntax error before "const"
gnu-interp.c:1319: warning: initialization makes integer from pointer
without a cast
gnu-interp.c:1320: warning: initialization makes integer from pointer
without a cast

[repeats hundreds of times]

gnu-interp.c:1894: warning: initialization makes integer from pointer
without a cast
gnu-interp.c: In function `copyBits':
gnu-interp.c:3527: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `copyBitsFromtoat':
gnu-interp.c:3546: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `displayBitsOfLeftTopRightBottom':
gnu-interp.c:3741: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `loadBitBltFrom':
gnu-interp.c:10290: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `primitiveCalloutToFFI':
gnu-interp.c:12326: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `primitiveExternalCall':
gnu-interp.c:13312: warning: assignment makes integer from pointer
without a cast
gnu-interp.c:13316: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `primitiveImageName':
gnu-interp.c:14140: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `primitiveObsoleteIndexedPrimitive':
gnu-interp.c:16325: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `snapshot':
gnu-interp.c:20448: warning: assignment makes integer from pointer
without a cast
gnu-interp.c: In function `writeImageFile':
gnu-interp.c:21611: warning: assignment makes integer from pointer
without a cast
make[1]: *** [gnu-interp.o] Error 1
make: *** [vm/vm.a] Error 2
atg at leenooks ~/source/trunk/bld $



## BONUS BUILD ERROR #1



atg at leenooks ~/source/Squeak-3.7-7/bld $ make    
make[1]: `vm.a' is up to date.
make[1]: `ADPCMCodecPlugin.a' is up to date.
make[1]: `AsynchFilePlugin.a' is up to date.
make[1]: `B3DAcceleratorPlugin.a' is up to date.
make[1]: `Squeak3D.a' is up to date.
make[1]: `B2DPlugin.a' is up to date.
make[1]: `BitBltPlugin.a' is up to date.
make[1]: `BMPReadWriterPlugin.a' is up to date.
make[1]: `ZipPlugin.a' is up to date.
make[1]: `DropPlugin.a' is up to date.
make[1]: `DSAPrims.a' is up to date.
make[1]: `SqueakFFIPrims.a' is up to date.
make[1]: `FFTPlugin.a' is up to date.
make[1]: `FileCopyPlugin.a' is up to date.
make[1]: `FilePlugin.a' is up to date.
make[1]: `FloatArrayPlugin.a' is up to date.
make[1]: `GeniePlugin.a' is up to date.
make[1]: `JoystickTabletPlugin.a' is up to date.
make[1]: `JPEGReaderPlugin.a' is up to date.
make[1]: `JPEGReadWriter2Plugin.a' is up to date.
make[1]: `Klatt.a' is up to date.
make[1]: `LargeIntegers.a' is up to date.
make[1]: `Matrix2x3Plugin.a' is up to date.
make[1]: `MIDIPlugin.a' is up to date.
gcc -g -O2 -fomit-frame-pointer -DLSB_FIRST=1  -DHAVE_CONFIG_H 
-DSQUEAK_BUILTIN_PLUGIN -I/home/atg/source/Squeak-3.7-7/bld
-I/home/atg/source/Squeak-3.7-7/platforms/unix/vm
-I/home/atg/source/Squeak-3.7-7/platforms/Cross/vm    -c -o
MiscPrimitivePlugin.o
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:
In function `comparewithcollated':
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:105:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:106:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:108:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:109:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:127:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:128:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:130:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:131:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:133:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:136:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:
In function `findFirstInStringinSetstartingAt':
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:198:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:201:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:206:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:207:
error: parse error before "if"
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:
In function `findSubstringinstartingAtmatchTable':
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:229:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:232:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:232:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:234:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:234:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:235:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:243:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:246:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:246:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:249:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:250:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:251:
error: parse error before "if"
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:252:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:255:
error: parse error before ')' token
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:260:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:
At top level:
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:265:
error: parse error before '}' token
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:
In function `indexOfAsciiinStringstartingAt':
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:290:
warning: passing arg 1 of pointer to function makes pointer from integer
without a cast
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:292:
error: subscripted value is neither array nor pointer
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:
In function `translatefromtotable':
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:601:
warning: useless keyword or type name in empty declaration
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:601:
warning: empty declaration
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:604:
error: parse error before '=' token
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:605:
error: parse error before "char"
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:
At top level:
/home/atg/source/Squeak-3.7-7/src/vm/intplugins/MiscPrimitivePlugin/MiscPrimitivePlugin.c:609:
error: parse error before '}' token
make[1]: *** [MiscPrimitivePlugin.o] Error 1
make: *** [MiscPrimitivePlugin/MiscPrimitivePlugin.a] Error 2
atg at leenooks ~/source/Squeak-3.7-7/bld $


#######

The 3.8a sources on the unix master page are unusable because they lack
features that are critical to how I use Squeak -- they don't support
Croquet for example...



More information about the Squeak-dev mailing list