1
Fork 0
mirror of https://git.savannah.gnu.org/git/guile.git synced 2025-05-28 16:00:22 +02:00
guile/libguile
Neil Jerram d2a510879b Fix hang in srfi-18.test
* libguile/threads.h (held_mutex): New field.

	* libguile/threads.c (enqueue, remqueue, dequeue): Use critical
	section to protect access to the queue.
	(guilify_self_1): Initialize held_mutex field.
	(on_thread_exit): If held_mutex non-null, unlock it.
	(fat_mutex_unlock, fat_cond_free, scm_make_condition_variable,
	fat_cond_signal, fat_cond_broadcast): Delete now unnecessary uses
	of c->lock.
	(fat_mutex_unlock): Pass m->lock to block_self() instead of
	c->lock; move scm_i_pthread_mutex_unlock(m->lock) call from before
	block_self() to after.
	(scm_pthread_cond_wait, scm_pthread_cond_timedwait,
	scm_i_thread_sleep_for_gc): Set held_mutex before pthread call;
	reset it afterwards.

I was seeing a hang in srfi-18.test, when running make check in master,
in the "exception handler installation is thread-safe" test.  It wasn't
100% reproducible, so looked like a race.

The problem is that wait-condition-variable is not actually
atomic in the way that it is supposed to be.  It unlocks the mutex,
then starts waiting on the cond var.  So it is possible for another
thread to lock the same mutex, and signal the cond var, before the
wait-condition-variable thread starts waiting.

In order for wait-condition-variable to be atomic - e.g. in a race
where thread A holds (Scheme-level) mutex M, and calls
(wait-condition-variable C M), and thread B calls (begin (lock-mutex
M) (signal-condition-variable C)) - it needs to call pthread_cond_wait
with the same underlying mutex as is involved in the `lock-mutex'
call.  In terms of the threads.c code, this means that it has to use
M->lock, not C->lock.

block_self() used its mutex arg for two purposes: for protecting
access and changes to the wait queue, and for the pthread_cond_wait
call.  But it wouldn't work reliably to use M->lock to protect C's
wait queue, because in theory two threads can call
(wait-condition-variable C M1) and (wait-condition-variable C M2)
concurrently, with M1 and M2 different.  So we either have to pass
both C->lock and M->lock into block_self(), or use some other mutex to
protect the wait queue.  For this patch, I switched to using the
critical section mutex, because that is a global and so easily
available.  (If that turns out to be a problem for performance, we
could make each queue structure have its own mutex, but there's no
reason to believe yet that it is a problem, because the critical
section mutex isn't used much overall.)

So then we call block_self() with M->lock, and move where M->lock is
unlocked to after the block_self() call, instead of before.

That solves the first hang, but introduces a new one, when a SRFI-18
thread is terminated (`thread-terminate!') between being launched
(`make-thread') and started (`thread-start!').  The problem now is
that pthread_cond_wait is a cancellation point (see man
pthread_cancel), so the pthread_cond_wait call is one of the few
places where a thread-terminate! call can take effect.  If the thread
is cancelled at that point, M->lock ends up still being locked, and
then when do_thread_exit() tries to lock M->lock again, it hangs.

The fix for that is a new `held_mutex' field in scm_i_thread, which is
set to point to the mutex just before a pthread_cond_(timed)wait call,
and set to NULL again afterwards.  If on_thread_exit() finds that
held_mutex is non-NULL, it unlocks that mutex.

A detail is that checking and unlocking held_mutex must be done before
on_thread_exit() calls scm_i_ensure_signal_delivery_thread(), because
the innards of scm_i_ensure_signal_delivery_thread() can do another
pthread_cond_wait() call and so overwrite held_mutex.  But that's OK,
because it's fine for the mutex check and unlock to happen outside
Guile mode.

Lastly, C->lock is then not needed, so I've removed it.
2008-10-24 21:51:47 +01:00
..
.gitignore More `.gitignore'. 2008-04-07 23:48:48 +02:00
__scm.h Cleanup mark-during-GC debug checks. 2008-09-09 23:08:16 -03:00
_scm.h Handle lack of struct dirent64' and readdir64_r ()' on HP-UX 11.11. 2008-07-17 00:20:31 +02:00
alist.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
alist.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
alloca.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
arbiters.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
arbiters.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
async.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
async.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
backtrace.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
backtrace.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
boolean.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
boolean.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
c-tokenize.lex Fix c-tokenize.c error: 'input' defined but not used, when compiling with GCC 4.3.0 2008-05-05 23:47:24 +01:00
ChangeLog-1996-1999
ChangeLog-2000
ChangeLog-2008 Rename ChangeLog' files to ChangeLog-2008'. 2008-09-12 21:49:58 +02:00
ChangeLog-scm
ChangeLog-threads
chars.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
chars.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
continuations.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
continuations.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
conv-integer.i.c
conv-uinteger.i.c
convert.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
convert.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
convert.i.c (scm_array_handle_release): New, changed all uses of 2005-01-06 18:56:34 +00:00
coop-pthreads.c * configure.in: New check for uca lib (needed for IA64 on HP-UX). 2006-10-25 22:37:24 +00:00
coop-pthreads.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
coop.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
cpp_cnvt.awk
cpp_err_symbols.in
cpp_errno.c
cpp_sig_symbols.in
cpp_signal.c
debug-malloc.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
debug-malloc.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
debug.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
debug.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
deprecated.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
deprecated.h merge from 1.8 2007-01-15 23:42:45 +00:00
deprecation.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
deprecation.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
discouraged.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
discouraged.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
dynl.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
dynl.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
dynwind.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
dynwind.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
environments.c Remove GH and its traces. 2008-09-28 18:42:02 -03:00
environments.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
eq.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
eq.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
error.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
error.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
eval.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
eval.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
eval.i.c Changes from arch/CVS synchronization 2007-12-08 16:00:56 +00:00
evalext.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
evalext.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
extensions.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
extensions.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
feature.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
feature.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
filesys.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
filesys.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
fluids.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
fluids.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
fports.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
fports.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
futures.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
futures.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
gc-card.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gc-freelist.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gc-malloc.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gc-mark.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gc-segment-table.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gc-segment.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gc.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gc.h Revise GC asserts. 2008-09-11 12:10:58 -03:00
gc_os_dep.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gdb_interface.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
gdbint.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gdbint.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
gen-scmconfig.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gen-scmconfig.h.in Handle lack of struct dirent64' and readdir64_r ()' on HP-UX 11.11. 2008-07-17 00:20:31 +02:00
gettext.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gettext.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
goops.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
goops.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
gsubr.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
gsubr.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
guardians.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
guardians.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
guile-doc-snarf.in merge from 1.8 branch 2006-04-17 00:05:42 +00:00
guile-func-name-check.in merge from 1.8 branch 2006-04-17 00:05:42 +00:00
guile-snarf-docs.in merge from 1.8 branch 2006-04-17 00:05:42 +00:00
guile-snarf.awk.in merge from 1.8 branch 2006-04-17 00:05:42 +00:00
guile-snarf.in guile-snarf: Honor $TMPDIR. 2008-02-12 14:26:37 +00:00
guile.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
hash.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
hash.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
hashtab.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
hashtab.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
hooks.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
hooks.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
i18n.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
i18n.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
inet_aton.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
init.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
init.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
inline.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
inline.h Cleanup mark-during-GC debug checks. 2008-09-09 23:08:16 -03:00
ioext.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
ioext.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
iselect.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
keywords.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
keywords.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
lang.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
lang.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
libgettext.h Added missing files for `(ice-9 i18n)'. 2006-11-18 18:18:23 +00:00
list.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
list.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
load.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
load.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
locale-categories.h Fix compilation of `libguile-i18n' on MinGW. 2008-09-10 11:38:23 +02:00
macros.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
macros.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
Makefile.am Avoid Stack overflow' errors when running make check' 2008-10-17 22:05:54 +01:00
mallocs.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
mallocs.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
measure-hwm.scm Avoid Stack overflow' errors when running make check' 2008-10-17 22:05:54 +01:00
memmove.c
mkstemp.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
modules.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
modules.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
net_db.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
net_db.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
null-threads.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
null-threads.h Changes from arch/CVS synchronization 2007-10-20 11:09:58 +00:00
numbers.c Fix for incorrect (gcd -2) => -2; should give 2. 2008-09-22 21:21:20 +01:00
numbers.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
objects.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
objects.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
objprop.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
objprop.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
options.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
options.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
pairs.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
pairs.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
ports.c Make multi-byte reads on unbuffered ports more efficient. 2008-09-15 18:52:51 +01:00
ports.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
posix.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
posix.h Don't declare scm_i_locale_mutex' as SCM_INTERNAL'. 2008-07-04 22:22:06 +02:00
print.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
print.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
private-gc.h Revise GC asserts. 2008-09-11 12:10:58 -03:00
private-options.h * private-options.h: idem. 2007-01-22 15:20:35 +00:00
procprop.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
procprop.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
procs.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
procs.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
properties.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
properties.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
pthread-threads.h Changes from arch/CVS synchronization 2007-10-20 11:09:58 +00:00
putenv.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
quicksort.i.c * Makefile.am (libguile_la_SOURCES, DOT_X_FILES, DOT_DOC_FILES, 2005-01-02 19:16:39 +00:00
ramap.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
ramap.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
random.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
random.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
rdelim.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
rdelim.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
read.c Revert "Make literal strings (i.e., returned by `read') read-only." 2008-10-09 22:21:33 +02:00
read.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
regex-posix.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
regex-posix.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
remaining-docs-needed
root.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
root.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
run-test
rw.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
rw.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
scmconfig.h.top merge from 1.8 branch 2006-04-17 00:05:42 +00:00
scmsigs.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
scmsigs.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
script.c Remove GH and its traces. 2008-09-28 18:42:02 -03:00
script.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
simpos.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
simpos.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
smob.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
smob.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
snarf.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
socket.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
socket.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
sort.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
sort.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
srcprop.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
srcprop.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
srfi-4.c Make multi-byte reads on unbuffered ports more efficient. 2008-09-15 18:52:51 +01:00
srfi-4.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
srfi-4.i.c (take_uvec): Make BASE pointer non-const. 2005-12-06 21:42:19 +00:00
srfi-13.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
srfi-13.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
srfi-14.c Changes from arch/CVS synchronization 2007-07-29 14:58:21 +00:00
srfi-14.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
stackchk.c Avoid Stack overflow' errors when running make check' 2008-10-17 22:05:54 +01:00
stackchk.h Avoid Stack overflow' errors when running make check' 2008-10-17 22:05:54 +01:00
stacks.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
stacks.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
stime.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
stime.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
strerror.c merge from 1.8 branch 2006-04-17 00:05:42 +00:00
strings.c Revert "Make literal strings (i.e., returned by `read') read-only." 2008-10-09 22:21:33 +02:00
strings.h Revert "Make literal strings (i.e., returned by `read') read-only." 2008-10-09 22:21:33 +02:00
strorder.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
strorder.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
strports.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
strports.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
struct.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
struct.h Use word_2 to store mark bits for freeing structs and vtables in the 2008-08-16 13:21:21 -03:00
symbols.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
symbols.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
tags.h Disable type-checking of `SCM_UNPACK' for the broken HP compilers. 2008-06-28 20:31:01 +02:00
threads.c Fix hang in srfi-18.test 2008-10-24 21:51:47 +01:00
threads.h Fix hang in srfi-18.test 2008-10-24 21:51:47 +01:00
throw.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
throw.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
unif.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
unif.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
validate.h Changes from arch/CVS synchronization 2007-12-08 16:00:56 +00:00
values.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
values.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
variable.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
variable.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
vectors.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
vectors.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
version.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
version.h.in Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
vports.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
vports.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
weaks.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
weaks.h Add `SCM_INTERNAL' macro, use it. 2008-05-31 23:21:02 +02:00
win32-dirent.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
win32-dirent.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
win32-socket.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
win32-socket.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00
win32-uname.c Include <config.h> in all C files; use #ifdef HAVE_CONFIG_H' rather than #if'. 2008-09-13 15:35:27 +02:00
win32-uname.h merge from 1.8 branch 2006-04-17 00:05:42 +00:00