diff options
authorwm4 <wm4@nowhere>2014-10-20 00:17:11 +0200
committerwm4 <wm4@nowhere>2014-10-20 00:17:11 +0200
commit600221e723e1918a8ecdc26bcf9c966be16a4068 (patch)
parent1aae9925858c9463e166045e01ea591986a93375 (diff)
osdep: limit thread names to 16 characters
It turns out the glibc people are very clever and return an error if the thread name exceeds the maximum supported kernel length, instead of truncating the name. So everyone has to hardcode the currently allowed Linux kernel name length limit, even if it gets extended later. Also the Lua script filenames could get too long; use the client name instead. Another strange thing is that on Linux, unrelated threads "inherit" the name by the thread they were created. This leads to random thread names, because there's not necessarily a strong relation between these threads (e.g. script command leads to filter recreation -> the filter's threads are tagged with the script's thread name). Unfortunate.
2 files changed, 2 insertions, 2 deletions
diff --git a/osdep/threads.c b/osdep/threads.c
index c41007b2cb..2a5938cee5 100644
--- a/osdep/threads.c
+++ b/osdep/threads.c
@@ -46,7 +46,7 @@ int mpthread_mutex_init_recursive(pthread_mutex_t *mutex)
void mpthread_set_name(const char *name)
- char tname[90];
+ char tname[16];
snprintf(tname, sizeof(tname), "mpv %s", name);
pthread_setname_np(pthread_self(), tname);
diff --git a/player/scripting.c b/player/scripting.c
index 935bbd0490..982d64a3cd 100644
--- a/player/scripting.c
+++ b/player/scripting.c
@@ -80,7 +80,7 @@ static void *script_thread(void *p)
struct thread_arg *arg = p;
char name[90];
- snprintf(name, sizeof(name), "script (%s)", arg->fname);
+ snprintf(name, sizeof(name), "lua (%s)", mpv_client_name(arg->client));
if (arg->backend->load(arg->client, arg->fname) < 0)