Clozure / ccl

Clozure Common Lisp
http://ccl.clozure.com
Apache License 2.0
850 stars 103 forks source link

regression: restoring image referencing shared library #424

Open vibs29 opened 1 year ago

vibs29 commented 1 year ago

There was a working technique that allowed saving an image containing cl+ssl on a machine with one version of libssl and restoring that image on machines having another version of libssl. After this one line commit was made to CCL, that save/restore technique no longer works. Reverting the commit makes the technique work again: 82f5f8d3a758ebcd42bbea69d4c5cf265f027759 Has this commit therefore introduced a bug into CCL?


The technique was to do this just before saving the image, e.g. on a Linux machine containing libssl.so.1.0.0: (cffi:close-foreign-library 'cl+ssl::libssl) (cffi:close-foreign-library 'cl+ssl::libcrypto) and this upon restoring the image, e.g. on a machine containing libssl.so.3: (cl+ssl:reload) This technique no longer works.


There are more details here, but they needn't be read: https://github.com/cl-plus-ssl/cl-plus-ssl/issues/167#issuecomment-1287954622 In short, it seems like CCL hasn't fully forgotten the library from the original machine, indicating that CCL's close-shared-library function may not be doing its job. As I said, reverting the one line CCL commit above makes the technique work again. Is reversion the correct solution?