Hi, I have a rather weird issue with guile on OSX Yosemite (10.10.5). The problem originally stems from weechat [1] which provides guile scripting through a dynamically loaded "plugin" (shared object). However, I was able to extract the problem into a smaller test program. The basic run down: When I try to unload (using dlclose() ) a shared object that is linked to libguile after calling scm_init_guile() OR scm_with_guile(), a Segfault is triggered. Here is my test case: $ cat test.c #include #include typedef int (*guile_func)(void); int main (void) { void *guile = NULL; guile_func init_func = NULL; printf("Loading Guile... "); guile = dlopen("guile.so", RTLD_GLOBAL | RTLD_NOW); if (!guile) printf("Error!\n"); else printf("Done!\n"); printf("Trying to load \"init_guile\" "); init_func = dlsym(guile, "init_guile"); if (!init_func) printf("Error!\n"); else { printf("Done!\n"); printf("Trying to run \"init_guile\"\n"); init_func(); } printf("Unloading Guile... "); fflush(stdout); dlclose(guile); printf("Done!\n"); } $ cat guile.c #include extern void init_guile(void); void init_guile(void) { scm_init_guile(); } When I compile and run the program I get the following output: $ clang -g -shared -o guile.so guile.c $(pkg-config --cflags --libs guile-2.0) $ clang -g test.c -o test $ ./test Loading Guile... Done! Trying to load "init_guile" Done! Trying to run "init_guile" Unloading Guile... [1] 41550 segmentation fault ./test The expected output: Loading Guile... Done! Trying to load "init_guile" Done! Trying to run "init_guile" Unloading Guile... Done! Here's an excerpt from the output when enabling dyld (dynamic linker) debugging information: $ DYLD_PRINT_APIS=1 ./test [...] dlopen(guile.so) ==> 0x7fbcc8e00000 Loading Guile... Done! dlsym(0x7fbcc8e00000, init_guile) Trying to load "init_guile" Done! Trying to run "init_guile" [...] Unloading Guile... dlclose(0x7fbcc8e00000) dlclose(), found unused image 0x7fbcc8e00000 guile.so dlclose(), found unused image 0x7fbcc8c00170 libguile-2.0.22.dylib dlclose(), found unused image 0x7fbcc8d04930 libgc.1.dylib dlclose(), found unused image 0x7fbcc8e00140 libffi.6.dylib dlclose(), found unused image 0x7fbcc8f00000 libunistring.2.dylib dlclose(), found unused image 0x7fbcc8f00130 libgmp.10.dylib dlclose(), found unused image 0x7fbcc8e001d0 libltdl.7.dylib dlclose(), deleting 0x7fbcc8e00000 guile.so dlclose(), deleting 0x7fbcc8c00170 libguile-2.0.22.dylib dlclose(), deleting 0x7fbcc8d04930 libgc.1.dylib dlclose(), deleting 0x7fbcc8e00140 libffi.6.dylib [1] 41585 segmentation fault DYLD_PRINT_APIS=1 ./test I have attached a lldb debugging session with backtrace. Cheers, Wilhelm Schuster.