summaryrefslogtreecommitdiffstats
path: root/source/l/libvncserver/libvncserver.d0a76539835d11c0f4723499f8be4bc9c7724eb9.patch
diff options
context:
space:
mode:
Diffstat (limited to 'source/l/libvncserver/libvncserver.d0a76539835d11c0f4723499f8be4bc9c7724eb9.patch')
-rw-r--r--source/l/libvncserver/libvncserver.d0a76539835d11c0f4723499f8be4bc9c7724eb9.patch33
1 files changed, 33 insertions, 0 deletions
diff --git a/source/l/libvncserver/libvncserver.d0a76539835d11c0f4723499f8be4bc9c7724eb9.patch b/source/l/libvncserver/libvncserver.d0a76539835d11c0f4723499f8be4bc9c7724eb9.patch
new file mode 100644
index 000000000..7ef6ec221
--- /dev/null
+++ b/source/l/libvncserver/libvncserver.d0a76539835d11c0f4723499f8be4bc9c7724eb9.patch
@@ -0,0 +1,33 @@
+From d0a76539835d11c0f4723499f8be4bc9c7724eb9 Mon Sep 17 00:00:00 2001
+From: Rajesh Sahoo <rajesh.sahoo@lge.com>
+Date: Tue, 11 Jun 2019 15:13:04 +0530
+Subject: [PATCH] avoid pthread_join if backgroundLoop is FALSE
+
+client_thread is created depending upon backgroundLoop, but joining
+without checking for same condition. so we are trying to join a garbage
+thread_id.
+---
+ libvncserver/main.c | 2 ++
+ 1 file changed, 2 insertions(+)
+
+diff --git a/libvncserver/main.c b/libvncserver/main.c
+index d3cd9b1e..772fb18f 100644
+--- a/libvncserver/main.c
++++ b/libvncserver/main.c
+@@ -1112,6 +1112,7 @@ void rfbShutdownServer(rfbScreenInfoPtr screen,rfbBool disconnectClients) {
+ }
+
+ #ifdef LIBVNCSERVER_HAVE_LIBPTHREAD
++ if(currentCl->screen->backgroundLoop) {
+ /*
+ Notify the thread. This simply writes a NULL byte to the notify pipe in order to get past the select()
+ in clientInput(), the loop in there will then break because the rfbCloseClient() above has set
+@@ -1120,6 +1121,7 @@ void rfbShutdownServer(rfbScreenInfoPtr screen,rfbBool disconnectClients) {
+ write(currentCl->pipe_notify_client_thread[1], "\x00", 1);
+ /* And wait for it to finish. */
+ pthread_join(currentCl->client_thread, NULL);
++ }
+ #else
+ rfbClientConnectionGone(currentCl);
+ #endif
+