Sheheryar Parvaz <skipper...@hotmail.ca> wrote: > If the initial call to scm_with_guile is on a thread and in the main > thread at the same time, a segmentation fault occurs.
Mark H Weaver <m...@netris.org> wrote: > Yes, this is a known issue. At present, Guile must be fully initialized > in one thread before it can be safely used from any other thread. > Furthermore, when loading modules, you must ensure that no other thread > attempts to load or use the same module while it's being loaded. If > possible, please arrange to load all modules that your program will need > before accessing Guile from other threads. Sheheryar Parvaz <skipper...@hotmail.ca> writes: > Are there any decent workarounds for this? I considered > scm_init_guile, however according to the documentation, it is > non-portable. For modules, I have no idea how I would initialize them. The usual approach is to initialize Guile before spawning any other threads. You can do this by calling 'scm_with_guile' early in your 'main', and then moving most of the contents of your 'main' into the inner function that 'scm_with_guile' calls. If there are modules that you'll need to load from your threaded code, then load them before spawning any threads, from within the inner function that 'scm_with_guile' calls. From C, you can load modules with 'scm_c_resolve_module'. Mark