bug-gnulib
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

setlocale with NULL locale (to read current locale) segfaults on MSYS


From: Reuben Thomas
Subject: setlocale with NULL locale (to read current locale) segfaults on MSYS
Date: Fri, 29 Apr 2022 23:53:37 +0100

It works fine on mingw32 and mingw64, but on MSYS it goes wrong when calling pthread_mutex_lock. In the following gdb session, the first line is from my code; the rest is tracing through gnulib code.

(gdb) n
171         char *old_locale = setlocale(LC_ALL, NULL);
(gdb) s
rpl_setlocale (category=0, locale=0x0) at setlocale.c:72
72        if (locale == NULL)
(gdb)
73          return (char *) setlocale_null (category);
(gdb)
setlocale_null (category=0) at setlocale_null.c:302
302     {
(gdb)
317       if (category == LC_ALL)
(gdb)
325           if (setlocale_null_r (LC_ALL, buf, sizeof (buf)))
(gdb)
0x00000005e4883a3c in setlocale_null_r (bufsize=<optimized out>,
    buf=<optimized out>, category=<optimized out>) at setlocale_null.c:294
294       return setlocale_null_with_lock (category, buf, bufsize);
(gdb)
325           if (setlocale_null_r (LC_ALL, buf, sizeof (buf)))
(gdb)
setlocale_null_r (bufsize=3221, buf=0xffffbd80 "", category=0)
    at setlocale_null.c:294
294       return setlocale_null_with_lock (category, buf, bufsize);
(gdb)
setlocale_null_with_lock (category=category@entry=0, buf=buf@entry=0xffffbd80 "", bufsize=bufsize@entry=3221) at setlocale_null.c:228
228       if (pthread_in_use())
(gdb)
230           pthread_mutex_t *lock = gl_get_setlocale_null_lock ();
(gdb)
gl_get_setlocale_null_lock () at setlocale-lock.c:105
105       return &mutex;
(gdb)
setlocale_null_with_lock (category=category@entry=0, buf=buf@entry=0xffffbd80 "", bufsize=bufsize@entry=3221) at setlocale_null.c:233
233           if (pthread_mutex_lock (lock))
(gdb)
0x0000000600000000 in ?? ()
(gdb) q

I have linked with LIBTHREAD, and in any case it's empty on MSYS.

--
https://rrt.sc3d.org

reply via email to

[Prev in Thread] Current Thread [Next in Thread]