gh-138004: Fix setting a thread name on OpenIndiana (GH-138017)

Encode Solaris/Illumos thread names to ASCII, since
OpenIndiana does not support non-ASCII names.

Add tests for setting non-ASCII name for the main thread.

Co-authored-by: Serhiy Storchaka <storchaka@gmail.com>
This commit is contained in:
jadonduff 2025-09-02 11:26:25 -04:00 committed by GitHub
parent 8d5c3341c5
commit c19db1d2b8
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
4 changed files with 19 additions and 6 deletions

View file

@ -2523,7 +2523,9 @@ _thread__get_name_impl(PyObject *module)
}
#ifdef __sun
return PyUnicode_DecodeUTF8(name, strlen(name), "surrogateescape");
// gh-138004: Decode Solaris/Illumos (e.g. OpenIndiana) thread names
// from ASCII, since OpenIndiana only supports ASCII names.
return PyUnicode_DecodeASCII(name, strlen(name), "surrogateescape");
#else
return PyUnicode_DecodeFSDefault(name);
#endif
@ -2561,8 +2563,9 @@ _thread_set_name_impl(PyObject *module, PyObject *name_obj)
{
#ifndef MS_WINDOWS
#ifdef __sun
// Solaris always uses UTF-8
const char *encoding = "utf-8";
// gh-138004: Encode Solaris/Illumos thread names to ASCII,
// since OpenIndiana does not support non-ASCII names.
const char *encoding = "ascii";
#else
// Encode the thread name to the filesystem encoding using the "replace"
// error handler