Hi,

[EMAIL PROTECTED] (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  <[EMAIL PROTECTED]>
+
+	* 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  <[EMAIL PROTECTED]>
 
 	* 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



_______________________________________________
Guile-devel mailing list
Guile-devel@gnu.org
http://lists.gnu.org/mailman/listinfo/guile-devel

Reply via email to