From tyearke@buffalo.edu  Tue Nov  3 23:02:37 2020
Received: (at 1502) by bugs.x2go.org; 3 Nov 2020 22:02:46 +0000
X-Spam-Checker-Version: SpamAssassin 3.4.2 (2018-09-13) on
	ymir.das-netzwerkteam.de
X-Spam-Level: 
X-Spam-Status: No, score=-1.9 required=3.0 tests=BAYES_00,HTML_MESSAGE,
	MIME_QP_LONG_LINE,SPF_HELO_NONE,URIBL_BLOCKED autolearn=unavailable
	autolearn_force=no version=3.4.2
Received: from mtareserve25.acsu.buffalo.edu (mtareserve25.acsu.buffalo.edu [128.205.6.42])
	by ymir.das-netzwerkteam.de (Postfix) with ESMTPS id A55485DAF2;
	Tue,  3 Nov 2020 23:02:33 +0100 (CET)
Received: from appmailb.acsu.buffalo.edu (appmailb.acsu.buffalo.edu [128.205.4.58])
	by mtareserve25.acsu.buffalo.edu (Postfix) with ESMTP id 4CQkKh2Y47zC69pD;
	Tue,  3 Nov 2020 17:02:32 -0500 (EST)
Received: from appmailb.acsu.buffalo.edu (localhost [127.0.0.1])
	by localhost (Postfix) with SMTP id 547531609FF7D;
	Tue,  3 Nov 2020 17:02:32 -0500 (EST)
Received: from appmailb.acsu.buffalo.edu (localhost [127.0.0.1])
	by appmailb.acsu.buffalo.edu (Postfix) with ESMTP id 0D4991609FF76;
	Tue,  3 Nov 2020 17:02:32 -0500 (EST)
Received: from MBX-NR7.itorg.ad.buffalo.edu (mbx-nr7.acsu.buffalo.edu [128.205.7.210])
	by appmailb.acsu.buffalo.edu (Prefixe) with ESMTP id 0A5531609FF75;
	Tue,  3 Nov 2020 17:02:32 -0500 (EST)
Received: from mbx-nr8.itorg.ad.buffalo.edu (128.205.7.211) by
 MBX-NR7.itorg.ad.buffalo.edu (128.205.7.210) with Microsoft SMTP Server (TLS)
 id 15.0.1497.2; Tue, 3 Nov 2020 17:02:30 -0500
Received: from mbx-nr8.itorg.ad.buffalo.edu ([192.168.1.108]) by
 MBX-NR8.itorg.ad.buffalo.edu ([192.168.1.108]) with mapi id 15.00.1497.006;
 Tue, 3 Nov 2020 17:02:30 -0500
From: "Yearke, Thomas" <tyearke@buffalo.edu>
To: "uli42@gmx.de" <uli42@gmx.de>, "1502@bugs.x2go.org" <1502@bugs.x2go.org>
CC: "submit@bugs.x2go.org" <submit@bugs.x2go.org>
Subject: Re: [X2Go-Dev] Bug#1502: macOS X2GoClient keyboard map updates crash
 specific server applications, spike server CPU usage
Thread-Topic: [X2Go-Dev] Bug#1502: macOS X2GoClient keyboard map updates crash
 specific server applications, spike server CPU usage
Thread-Index: AQHWsXo7w0l/NEzdA02/U0PSVaStS6m2RmqAgACwrIA=
Date: Tue, 3 Nov 2020 22:02:30 +0000
Message-ID: <0BA097A7-B63A-4125-8853-8E1D4EFFDFD4@buffalo.edu>
References: <F5B32DA7-8962-4080-9BE2-31E40980B913@buffalo.edu>
 <CANVnVYJvHS+7=wLaT-dOZ5Q5g-ExPnrXp+O+vBtheJzdg=TkDw@mail.gmail.com>
In-Reply-To: <CANVnVYJvHS+7=wLaT-dOZ5Q5g-ExPnrXp+O+vBtheJzdg=TkDw@mail.gmail.com>
Accept-Language: en-US
Content-Language: en-US
X-MS-Has-Attach: yes
X-MS-TNEF-Correlator:
x-ms-exchange-messagesentrepresentingtype: 1
x-ms-exchange-transport-fromentityheader: Hosted
x-originating-ip: [10.20.21.217]
Content-Type: multipart/signed; protocol="application/pkcs7-signature";
	micalg=sha256; boundary="B_3687267749_1040077208"
MIME-Version: 1.0
X-PM-EL-Spam-Prob: X: 11%

--B_3687267749_1040077208
Content-type: multipart/alternative;
	boundary="B_3687267749_1167370133"


--B_3687267749_1167370133
Content-type: text/plain;
	charset="UTF-8"
Content-transfer-encoding: quoted-printable

In both the current and patched versions of X2GoClient, changing the X11 ke=
yboard map on the client side seems to have no immediate impact on an active=
 X2Go session. If a session is suspended, though, the session=E2=80=99s keyboard m=
ap does get updated when it=E2=80=99s resumed by either version.

=20

I believe this is the case because the client only constructs a keyboard ma=
p during the first keyboard update in ONMainWindow::slotSetModMap. This map =
is held in memory and reused by subsequent keyboard updates until it is dele=
ted during a session suspension or termination.

=20

(It=E2=80=99s worth noting that macOS uses an entirely-separate mechanism for man=
aging the keyboard layout for non-X11 programs. Changing the keyboard layout=
 in System Preferences affects the Qt components of X2GoClient, but anything=
 X11-based is not affected by those changes. Only the X11 keyboard map as re=
ported by xmodmap is used by local X11 apps and by X2GoClient=E2=80=99s keyboard m=
ap builder.)

=20

Tom

=20

From: Ulrich Sibiller <ulrich.sibiller@gmail.com>
Reply-To: "uli42@gmx.de" <uli42@gmx.de>
Date: Tuesday, November 3, 2020 at 1:30 AM
To: Tom Yearke <tyearke@buffalo.edu>, "1502@bugs.x2go.org" <1502@bugs.x2go.=
org>
Cc: "submit@bugs.x2go.org" <submit@bugs.x2go.org>
Subject: Re: [X2Go-Dev] Bug#1502: macOS X2GoClient keyboard map updates cra=
sh specific server applications, spike server CPU usage

=20

Thanks for the patch. Keyboard on MacOS is special. As I do not have/know M=
acOS I don't know why it was implemented that way. =20

=20

What happens if you change the MacOS keyboard while a session is running?

=20

Uli

=20

Yearke, Thomas <tyearke@buffalo.edu> schrieb am Di., 3. Nov. 2020, 01:45:

Package: x2goclient
Version: 4.1.2.2
Tag: patch

When the macOS version of X2GoClient is connected to a server, it updates t=
he session's keyboard map every 10 seconds. Depending on how other programs =
running on the server respond to keyboard map changes, the repeated updates =
can cause brief CPU usage spikes or (in the case of one of our applications)=
 they can cause freezes and crashes.

The attached patch modifies the macOS client to only run the keyboard map u=
pdate once on session startup. Testing done on my devices showed that this c=
hange resolved the issue without introducing noticeable side effects. Howeve=
r, I was not able to find the reason why the keyboard map is being updated r=
egularly, so this may (re)introduce a problem I'm not aware of.

Client OS: macOS 10.14.6
Client Software: X2GoClient 4.1.2.2
Server OS: CentOS 7.8
Server Desktop Environment: XFCE 4
Server x2goserver Version: 4.1.0.3
Server x2goserver-xsession Version: 4.1.0.3
Server nxagent Version: 3.5.99.24

Thank you for your consideration!

Tom Yearke
Software Engineer
Science and Engineering Node Services
University at Buffalo


_______________________________________________
x2go-dev mailing list
x2go-dev@lists.x2go.org
https://lists.x2go.org/listinfo/x2go-dev


--B_3687267749_1167370133
Content-type: text/html;
	charset="UTF-8"
Content-transfer-encoding: quoted-printable

<html xmlns:o=3D"urn:schemas-microsoft-com:office:office" xmlns:w=3D"urn:schema=
s-microsoft-com:office:word" xmlns:m=3D"http://schemas.microsoft.com/office/20=
04/12/omml" xmlns=3D"http://www.w3.org/TR/REC-html40"><head><meta http-equiv=3DC=
ontent-Type content=3D"text/html; charset=3Dutf-8"><meta name=3DGenerator content=3D=
"Microsoft Word 15 (filtered medium)"><style><!--
/* Font Definitions */
@font-face
	{font-family:Helvetica;
	panose-1:0 0 0 0 0 0 0 0 0 0;}
@font-face
	{font-family:"Cambria Math";
	panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
	{font-family:Calibri;
	panose-1:2 15 5 2 2 2 4 3 2 4;}
@font-face
	{font-family:"Times New Roman \(Body CS\)";
	panose-1:2 11 6 4 2 2 2 2 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
	{margin:0in;
	font-size:11.0pt;
	font-family:"Calibri",sans-serif;}
a:link, span.MsoHyperlink
	{mso-style-priority:99;
	color:blue;
	text-decoration:underline;}
span.EmailStyle18
	{mso-style-type:personal-reply;
	font-family:Helvetica;
	color:windowtext;}
.MsoChpDefault
	{mso-style-type:export-only;
	font-size:10.0pt;}
@page WordSection1
	{size:8.5in 11.0in;
	margin:1.0in 1.0in 1.0in 1.0in;}
div.WordSection1
	{page:WordSection1;}
--></style></head><body lang=3DEN-US link=3Dblue vlink=3Dpurple style=3D'word-wrap:=
break-word'><div class=3DWordSection1><p class=3DMsoNormal><span style=3D'font-fam=
ily:Helvetica'>In both the current and patched versions of X2GoClient, chang=
ing the X11 keyboard map on the client side seems to have no immediate impac=
t on an active X2Go session. If a session is suspended, though, the session=E2=
=80=99s keyboard map does get updated when it=E2=80=99s resumed by either version.<o:p=
></o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:Helvetica'><o:=
p>&nbsp;</o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:Helveti=
ca'>I believe this is the case because the client only constructs a keyboard=
 map during the first keyboard update in ONMainWindow::slotSetModMap. This m=
ap is held in memory and reused by subsequent keyboard updates until it is d=
eleted during a session suspension or termination.<o:p></o:p></span></p><p c=
lass=3DMsoNormal><span style=3D'font-family:Helvetica'><o:p>&nbsp;</o:p></span><=
/p><p class=3DMsoNormal><span style=3D'font-family:Helvetica'>(It=E2=80=99s worth noti=
ng that macOS uses an entirely-separate mechanism for managing the keyboard =
layout for non-X11 programs. Changing the keyboard layout in System Preferen=
ces affects the Qt components of X2GoClient, but anything X11-based is not a=
ffected by those changes. Only the X11 keyboard map as reported by xmodmap i=
s used by local X11 apps and by X2GoClient=E2=80=99s keyboard map builder.)<o:p></=
o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:Helvetica'><o:p>&=
nbsp;</o:p></span></p><p class=3DMsoNormal><span style=3D'font-family:Helvetica'=
>Tom</span><span style=3D'font-family:Helvetica'><o:p></o:p></span></p><p clas=
s=3DMsoNormal><span style=3D'font-family:Helvetica'><o:p>&nbsp;</o:p></span></p>=
<div style=3D'border:none;border-top:solid #B5C4DF 1.0pt;padding:3.0pt 0in 0in=
 0in'><p class=3DMsoNormal><b><span style=3D'font-size:12.0pt;color:black'>From:=
 </span></b><span style=3D'font-size:12.0pt;color:black'>Ulrich Sibiller &lt;u=
lrich.sibiller@gmail.com&gt;<br><b>Reply-To: </b>&quot;uli42@gmx.de&quot; &l=
t;uli42@gmx.de&gt;<br><b>Date: </b>Tuesday, November 3, 2020 at 1:30 AM<br><=
b>To: </b>Tom Yearke &lt;tyearke@buffalo.edu&gt;, &quot;1502@bugs.x2go.org&q=
uot; &lt;1502@bugs.x2go.org&gt;<br><b>Cc: </b>&quot;submit@bugs.x2go.org&quo=
t; &lt;submit@bugs.x2go.org&gt;<br><b>Subject: </b>Re: [X2Go-Dev] Bug#1502: =
macOS X2GoClient keyboard map updates crash specific server applications, sp=
ike server CPU usage<o:p></o:p></span></p></div><div><p class=3DMsoNormal><o:p=
>&nbsp;</o:p></p></div><div><p class=3DMsoNormal>Thanks for the patch. Keyboar=
d on MacOS is special. As I do not have/know MacOS I don't know why it was i=
mplemented that way.&nbsp; <o:p></o:p></p><div><p class=3DMsoNormal><o:p>&nbsp=
;</o:p></p></div><div><p class=3DMsoNormal>What happens if you change the MacO=
S keyboard while a session is running?<o:p></o:p></p></div><div><p class=3DMso=
Normal><o:p>&nbsp;</o:p></p></div><div><p class=3DMsoNormal>Uli<o:p></o:p></p>=
</div></div><p class=3DMsoNormal><o:p>&nbsp;</o:p></p><div><div><p class=3DMsoNo=
rmal>Yearke, Thomas &lt;<a href=3D"mailto:tyearke@buffalo.edu" target=3D"_blank"=
>tyearke@buffalo.edu</a>&gt; schrieb am Di., 3. Nov. 2020, 01:45:<o:p></o:p>=
</p></div><blockquote style=3D'border:none;border-left:solid #CCCCCC 1.0pt;pad=
ding:0in 0in 0in 6.0pt;margin-left:4.8pt;margin-right:0in'><p class=3DMsoNorma=
l>Package: x2goclient<br>Version: 4.1.2.2<br>Tag: patch<br><br>When the macO=
S version of X2GoClient is connected to a server, it updates the session's k=
eyboard map every 10 seconds. Depending on how other programs running on the=
 server respond to keyboard map changes, the repeated updates can cause brie=
f CPU usage spikes or (in the case of one of our applications) they can caus=
e freezes and crashes.<br><br>The attached patch modifies the macOS client t=
o only run the keyboard map update once on session startup. Testing done on =
my devices showed that this change resolved the issue without introducing no=
ticeable side effects. However, I was not able to find the reason why the ke=
yboard map is being updated regularly, so this may (re)introduce a problem I=
'm not aware of.<br><br>Client OS: macOS 10.14.6<br>Client Software: X2GoCli=
ent 4.1.2.2<br>Server OS: CentOS 7.8<br>Server Desktop Environment: XFCE 4<b=
r>Server x2goserver Version: 4.1.0.3<br>Server x2goserver-xsession Version: =
4.1.0.3<br>Server nxagent Version: 3.5.99.24<br><br>Thank you for your consi=
deration!<br><br>Tom Yearke<br>Software Engineer<br>Science and Engineering =
Node Services<br>University at Buffalo<br><br><br>__________________________=
_____________________<br>x2go-dev mailing list<br><a href=3D"mailto:x2go-dev@l=
ists.x2go.org" target=3D"_blank">x2go-dev@lists.x2go.org</a><br><a href=3D"https=
://lists.x2go.org/listinfo/x2go-dev" target=3D"_blank">https://lists.x2go.org/=
listinfo/x2go-dev</a><o:p></o:p></p></blockquote></div></div></body></html>

--B_3687267749_1167370133--

--B_3687267749_1040077208
Content-Type: application/pkcs7-signature; name="smime.p7s"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"

MIIUTQYJKoZIhvcNAQcCoIIUPjCCFDoCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0B
BwGgghHbMIIF7jCCBNagAwIBAgIRAM/LCTyCUSuLEvSt2aVjuGAwDQYJKoZIhvcNAQELBQAw
gYkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNSTESMBAGA1UEBxMJQW5uIEFyYm9yMRIwEAYD
VQQKEwlJbnRlcm5ldDIxETAPBgNVBAsTCEluQ29tbW9uMTIwMAYDVQQDEylJbkNvbW1vbiBS
U0EgU3RhbmRhcmQgQXNzdXJhbmNlIENsaWVudCBDQTAeFw0yMDAyMDUwMDAwMDBaFw0yMTAy
MDQyMzU5NTlaMIHlMQ4wDAYDVQQREwUxNDI2MDEMMAoGA1UECxMDVUJlMTAwLgYDVQQKEydT
dGF0ZSBVbml2ZXJzaXR5IG9mIE5ldyBZb3JrIGF0IEJ1ZmZhbG8xHjAcBgNVBAkTFUVzY3Jv
d2VkIENlcnRpZmljYXRlczELMAkGA1UECRMCVUIxCzAJBgNVBAgTAk5ZMRAwDgYDVQQHEwdC
dWZmYWxvMQswCQYDVQQGEwJVUzEWMBQGA1UEAxMNVGhvbWFzIFllYXJrZTEiMCAGCSqGSIb3
DQEJARYTdHllYXJrZUBidWZmYWxvLmVkdTCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoC
ggEBAJAVbH81nLSpNFjCjFkLa6p6LSCCQg2GtkqmQsTnexb61RcBI0nHBuJ3skHQnKMwC+Uw
+1LHppeVPTRfCr3B0EnV1Sd7YDi3UxjSMLcLqp1qJJd7qdCLyWyO8PictwtUv5uZBYesSohy
xNrt5PBxuBze3BBGr4S2hOsqU/pB+Ulu5jb3FzkcA0TCwTBvivGJmwzJGNymflAOGzzjDrnw
VuKyXUSJqr62Cm4yZjLUQjq9jTEgjEhull9xYqjmKZp/dD1RNlvSvzMveENEfYcYb9npprww
vf5/lc9xG16ISHf2Gy9Ukc67ld2U/8vYGxE5p2iAI9T0Tv2z6YNX9ie46YsCAwEAAaOCAfEw
ggHtMB8GA1UdIwQYMBaAFH3ucdAf66lhbY9mhK0PKwfiMdu8MB0GA1UdDgQWBBSjyua+ngv8
Rk/jHm0k4nh5kv6BEDAOBgNVHQ8BAf8EBAMCBaAwDAYDVR0TAQH/BAIwADAdBgNVHSUEFjAU
BggrBgEFBQcDBAYIKwYBBQUHAwIwagYDVR0gBGMwYTBfBg0rBgEEAa4jAQQDAwABME4wTAYI
KwYBBQUHAgEWQGh0dHBzOi8vd3d3LmluY29tbW9uLm9yZy9jZXJ0L3JlcG9zaXRvcnkvY3Bz
X3N0YW5kYXJkX2NsaWVudC5wZGYwVQYDVR0fBE4wTDBKoEigRoZEaHR0cDovL2NybC5pbmNv
bW1vbi1yc2Eub3JnL0luQ29tbW9uUlNBU3RhbmRhcmRBc3N1cmFuY2VDbGllbnRDQS5jcmww
gYoGCCsGAQUFBwEBBH4wfDBQBggrBgEFBQcwAoZEaHR0cDovL2NydC5pbmNvbW1vbi1yc2Eu
b3JnL0luQ29tbW9uUlNBU3RhbmRhcmRBc3N1cmFuY2VDbGllbnRDQS5jcnQwKAYIKwYBBQUH
MAGGHGh0dHA6Ly9vY3NwLmluY29tbW9uLXJzYS5vcmcwHgYDVR0RBBcwFYETdHllYXJrZUBi
dWZmYWxvLmVkdTANBgkqhkiG9w0BAQsFAAOCAQEAODoj74dmUIDCSkduoAz9E3h9othzmn/Z
t4i1nbNv0k4eoFbuh+D1RYV9Qr3gSxlgY1oIU/zcbKDaZZheWr31zYG71Ir2neO7fblGXbq7
+5l35sLLrEmWh7ZjpCIHbp0cKf7yaBAB0/kMg7TDRWyp9gFpM86j6SCMuKoWBRutam9pWc50
JqO2+o575g9/s72ftAZbNMloWwo7HhliPtdEDLsvEpyN/EnGSgxHCzuS7uWasOy6mh7JSR6e
951W9n+loaZXlkgNit1eFwt2rqGkAJQusA7LJSTFSv1Dqa8WyBPZFrrJpNVa5GIs8ChemeJS
Lmu8G9JXog0XUHEFUuSKXDCCBgMwggProAMCAQICED+9NPK6UvwO0wpXo4HhvmQwDQYJKoZI
hvcNAQENBQAwgYgxCzAJBgNVBAYTAlVTMRMwEQYDVQQIEwpOZXcgSmVyc2V5MRQwEgYDVQQH
EwtKZXJzZXkgQ2l0eTEeMBwGA1UEChMVVGhlIFVTRVJUUlVTVCBOZXR3b3JrMS4wLAYDVQQD
EyVVU0VSVHJ1c3QgUlNBIENlcnRpZmljYXRpb24gQXV0aG9yaXR5MB4XDTE0MDkxOTAwMDAw
MFoXDTI0MDkxODIzNTk1OVowgYkxCzAJBgNVBAYTAlVTMQswCQYDVQQIEwJNSTESMBAGA1UE
BxMJQW5uIEFyYm9yMRIwEAYDVQQKEwlJbnRlcm5ldDIxETAPBgNVBAsTCEluQ29tbW9uMTIw
MAYDVQQDEylJbkNvbW1vbiBSU0EgU3RhbmRhcmQgQXNzdXJhbmNlIENsaWVudCBDQTCCASIw
DQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBAID+ylt3d8Yf7IL751mKVa3A6p6xB+gmKzYJ
ovEvTDpZQJyrnPJAKUAlknIpeI+bBmoQfLdkB/8Y/FDbqBggxucRGcYBaEc/2ZLs3TSSuGSf
G/XSJtlz1Eym4CMJbj6d/PqC1eT+pKVGeQBl5T1u6LZOfovh6/RmqnXR24du4RWqHYvyTJyG
XvoT5Qxp7IXWYPiobYhzA5WnwnvS8ZKO+3pjqZGoZrq1/bMt0n/8y4Obi4k0vVddCnWXZoCV
vJfRuhoYwWy4fetGjHVo/bCa+L6z7Vk/MrdxBkBVd3KlLzdJAYArq4ve7NlNir1eX64PMwWV
vzQl0WKsNfGWg4vD26cCAwEAAaOCAWQwggFgMB8GA1UdIwQYMBaAFFN5v1qqK0rPVIDh2JvA
nfKyA2bLMB0GA1UdDgQWBBR97nHQH+upYW2PZoStDysH4jHbvDAOBgNVHQ8BAf8EBAMCAYYw
EgYDVR0TAQH/BAgwBgEB/wIBADAdBgNVHSUEFjAUBggrBgEFBQcDAgYIKwYBBQUHAwQwEQYD
VR0gBAowCDAGBgRVHSAAMFAGA1UdHwRJMEcwRaBDoEGGP2h0dHA6Ly9jcmwudXNlcnRydXN0
LmNvbS9VU0VSVHJ1c3RSU0FDZXJ0aWZpY2F0aW9uQXV0aG9yaXR5LmNybDB2BggrBgEFBQcB
AQRqMGgwPwYIKwYBBQUHMAKGM2h0dHA6Ly9jcnQudXNlcnRydXN0LmNvbS9VU0VSVHJ1c3RS
U0FBZGRUcnVzdENBLmNydDAlBggrBgEFBQcwAYYZaHR0cDovL29jc3AudXNlcnRydXN0LmNv
bTANBgkqhkiG9w0BAQ0FAAOCAgEAdtOnxJK15L21ll2tmbfVStSZ/45E30VSTkN7in1pPNM8
jKYh6X3RhWS2sgW45/05mYSrgmvFe9yUrVTwZqPphjLPcRmxqULBFi1tJj5Kyo5SYwX1C31y
fIMirJ10eQnwg0JYijIMWN4xPRxsl1TTcgloyu6NbEALVDAFb281ZD7xy2l8Antz5VSa7j2v
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
w+JIEewHg1Tj9e/bxWfxM0U=

--B_3687267749_1040077208--

