GNU bug report logs -
#30261
segfault on simultaneous initialization
Previous Next
Full log
View this message in rfc822 format
Sheheryar Parvaz <skipper308 <at> 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 <mhw <at> 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 <skipper308 <at> 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
This bug report was last modified 7 years and 139 days ago.
Previous Next
GNU bug tracking system
Copyright (C) 1999 Darren O. Benham,
1997,2003 nCipher Corporation Ltd,
1994-97 Ian Jackson.