Skip to content

Conversation

furkanonder
Copy link
Contributor

@furkanonder furkanonder commented Dec 27, 2024

@ZeroIntensity ZeroIntensity removed the 3.14 bugs and security fixes label Dec 27, 2024
int rc = pthread_setname_np(name);
#elif defined(__NetBSD__)
pthread_t thread = pthread_self();
int rc = pthread_setname_np(thread, "%s", (void *)name);
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Is the cast to void* really needed?

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

diff --git a/Modules/_threadmodule.c b/Modules/_threadmodule.c
index 75b34a8df76..259c08a0991 100644
--- a/Modules/_threadmodule.c
+++ b/Modules/_threadmodule.c
@@ -2438,6 +2438,9 @@ _thread_set_name_impl(PyObject *module, PyObject *name_obj)
     const char *name = PyBytes_AS_STRING(name_encoded);
 #ifdef __APPLE__
     int rc = pthread_setname_np(name);
+#elif defined(__NetBSD__)
+    pthread_t thread = pthread_self();
+    int rc = pthread_setname_np(thread, "%s", name);
 #else
     pthread_t thread = pthread_self();
     int rc = pthread_setname_np(thread, name);
(END)

The compiler generates a warning when there is no cast to the void*.

gcc -pthread  -fno-strict-overflow -Wsign-compare -g -Og -Wall  -O2  -std=c11 -Wextra -Wno-unused-parameter -Wno-missing-field-initializers -Wstrict-prototypes -Werror=implicit-function-declaration -fvisibility=hidden  -I./Include/internal -I./Include/internal/mimalloc  -I. -I./Include    -DPy_BUILD_CORE_BUILTIN -c ./Modules/_threadmodule.c -o Modules/_threadmodule.o
./Modules/_threadmodule.c: In function '_thread_set_name_impl':
./Modules/_threadmodule.c:2443:47: warning: passing argument 3 of 'pthread_setname_np' discards 'const' qualifier from pointer target type [-Wdiscarded-qualifiers]
 2443 |     int rc = pthread_setname_np(thread, "%s", name);
      |                                               ^~~~
In file included from ./Include/cpython/pythread.h:17,
                 from ./Include/pythread.h:124,
                 from ./Include/Python.h:120,
                 from ./Modules/_threadmodule.c:4:
/usr/include/pthread.h:160:49: note: expected 'void *' but argument is of type 'const char *'
  160 | int pthread_setname_np(pthread_t, const char *, void *);
      |                                                 ^~~~~~
--- Modules/getbuildinfo.o ---

@vstinner vstinner merged commit 492b224 into python:main Dec 28, 2024
39 checks passed
@vstinner
Copy link
Member

Merged, thank you!

@furkanonder
Copy link
Contributor Author

Merged, thank you!

You're welcome.

srinivasreddy pushed a commit to srinivasreddy/cpython that referenced this pull request Jan 8, 2025
…ython#128280)

Enhance NetBSD compatibility for thread naming in _threadmodule.c.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

build The build process and cross-build skip news

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants