[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: thread assert with 1.8.2
From: |
Ludovic Courtès |
Subject: |
Re: thread assert with 1.8.2 |
Date: |
Thu, 04 Oct 2007 18:22:53 +0200 |
User-agent: |
Gnus/5.11 (Gnus v5.11) Emacs/22.1 (gnu/linux) |
Hi,
address@hidden (Ludovic Courtès) writes:
> But now, there's a similar issue in HEAD with `(ice-9 i18n)':
>
> PASS: locale objects: make-locale (2 args)
> PASS: locale objects: make-locale (2 args, list)
> PASS: locale objects: make-locale (3 args)
> guile: Error detected by libpthread: Unlocking unlocked mutex.
> Detected by file "/n0/gdt/NetBSD-4/src/lib/libpthread/pthread_mutex.c",
> line 363, function "pthread_mutex_unlock".
>
> Backtrace:
>
> #0 0xbba68fff in kill () from /usr/lib/libc.so.12
> #1 0xbb9dadb3 in pthread__errorfunc () from /usr/lib/libpthread.so.0
> #2 0xbb9d93f8 in pthread_mutex_unlock () from /usr/lib/libpthread.so.0
> #3 0xbb9cbaa0 in scm_make_locale (category_list=0x2,
> locale_name=0x80d6870, base_locale=0x204) at ../../libguile/i18n.c:436
OK, got this one too, and also a similar problem in `nl-langinfo' (see
attached patch).
HEAD now seems to work like a charm on NetBSD/i386, though it still
cannot be compiled with `-Werror' (patches welcome!).
Thanks,
Ludovic.
--- orig/libguile/ChangeLog
+++ mod/libguile/ChangeLog
@@ -1,3 +1,13 @@
+2007-10-04 Ludovic Courtès <address@hidden>
+
+ * i18n.c (scm_make_locale)[!USE_GNU_LOCALE_API]: Don't call
+ `leave_locale_section ()' on failure of
+ `enter_locale_section ()' since the mutex is not held and locale
+ settings are unchanged.
+ (scm_nl_langinfo)[!USE_GNU_LOCALE_API]: Use
+ `restore_locale_settings ()' instead of `leave_locale_section ()'
+ since the mutex is not held.
+
2007-10-02 Ludovic Courtès <address@hidden>
* threads.c (on_thread_exit): Don't call `scm_leave_guile ()'
--- orig/libguile/i18n.c
+++ mod/libguile/i18n.c
@@ -685,12 +685,14 @@
scm_t_locale_settings prev_locale;
err = enter_locale_section (c_locale, &prev_locale);
- leave_locale_section (&prev_locale);
if (err)
goto fail;
else
- SCM_NEWSMOB (locale, scm_tc16_locale_smob_type, c_locale);
+ {
+ leave_locale_section (&prev_locale);
+ SCM_NEWSMOB (locale, scm_tc16_locale_smob_type, c_locale);
+ }
}
#endif
@@ -1410,7 +1412,7 @@
{
c_result = nl_langinfo (c_item);
- leave_locale_section (&lsec_prev_locale);
+ restore_locale_settings (&lsec_prev_locale);
free_locale_settings (&lsec_prev_locale);
}
#endif