Hi,
I just bumped into subtle errors caused by the plugin resolution algorithms ioLoadModule() in sqUnixExternalPrims.c.
I was testing Etoys 4 on a machine that also had VM v3.10-5 installed. Etoys (also VM v3.10-5) was placed in $HOME/etoys/. I assumed that -plugins (from command line) or SQUEAK_PLUGINS (from env) would override internal search paths. Etoys tested fine and the code was sent into the field. It promptly bombed :-(.
The error turned out to be due to plugins missing in Etoys but present squeakvm. When a OSProcess plugin was missing in -plugins path, instead of returning an error, the algorithm continued searching in built-in paths and picked one up from /usr/local/lib/squeak/3.10-5/. Of course, the field machines did not have squeakvm installed, so the code bombed.
Plugins are an integral part of VM and cannot be shared across multiple VM builds. How do VM-ers run vms on the same machine without such mixups? How does one override built-in paths in squeakvm and force it to search only in certain paths?
I propose that squeakPlugins be set to ${SQUEAK_PLUGINS:-vmPath} while starting and then override it with -plugins arg (if provided). I am not convinced vmLibDir or LD_LIBRARY_PATH are really needed.
Subbu
vm-dev@lists.squeakfoundation.org