Closed drnovsek closed 6 years ago
Quick solution was to comment out the offending line, so far looks as if vlmcsd works, but please do review the patch:
--- vlmcsd-master/src/kms.c Tue Oct 17 11:00:20 2017
+++ patched-vlmcsd-master/src/kms.c Sun Jan 21 12:02:27 2018
@@ -182,7 +182,7 @@
# else // !__CYGWIN__
pthread_mutexattr_t mutex_attr;
pthread_mutexattr_init(&mutex_attr);
- pthread_mutexattr_setpshared(&mutex_attr, PTHREAD_PROCESS_SHARED);
+// pthread_mutexattr_setpshared(&mutex_attr, PTHREAD_PROCESS_SHARED);
pthread_mutex_init(mutex, &mutex_attr);
# endif // !__CYGWIN__
This is a known issue documented and addressed here: https://forums.mydigitallife.net/threads/emulated-kms-servers-on-non-windows-platforms.50234/page-61#post-1379280
Since this site requires registration, I’ll quote the text here:
Deleting line 185 is actually a bad idea. I use a mutex to ensure only one thread / forked process can access the client list at a time in order to avoid data corruption. The fork version of vlmcsd needs to set the mutex to PTHREAD_PROCESS_SHARED to ensure it is not per process and thus useless.
To compile the threaded version of vlmcsd, just add "THREADS=1" to the command line. See "make help" for details.
vlmcsd fails to compile with error in file './src/kms.c'on line 187: kms.c:(.text.InitializeClientLists+0xbb): undefined reference to `pthread_mutexattr_setpshared'
Tested on OpenBSD 5.9 and 6.1; got the same error.
Output: