X2Go Bug report logs - #807
PulseAudio dies when accessed, when x2goclient.exe is run on a Windows 2012 Terminal Server (within a native RDP desktop connection)

version graph

Package: x2goclient; Maintainer for x2goclient is X2Go Developers <x2go-dev@lists.x2go.org>; Source for x2goclient is src:x2goclient.

Reported by: Stefan Baur <X2Go-ML-1@baur-itcs.de>

Date: Sun, 8 Mar 2015 21:35:01 UTC

Severity: normal

Found in version 4.0.3.1

Reply or subscribe to this bug.

Toggle useless messages

View this report as an mbox folder, status mbox, maintainer mbox


Report forwarded to x2go-dev@lists.x2go.org, X2Go Developers <x2go-dev@lists.x2go.org>:
Bug#807; Package x2goclient. (Sun, 08 Mar 2015 21:35:02 GMT) (full text, mbox, link).


Acknowledgement sent to Stefan Baur <X2Go-ML-1@baur-itcs.de>:
New Bug report received and forwarded. Copy sent to X2Go Developers <x2go-dev@lists.x2go.org>. (Sun, 08 Mar 2015 21:35:02 GMT) (full text, mbox, link).


Message #5 received at submit@bugs.x2go.org (full text, mbox, reply):

From: Stefan Baur <X2Go-ML-1@baur-itcs.de>
To: submit@bugs.x2go.org
Subject: PulseAudio dies when accessed, when x2goclient.exe is run on a Windows 2012 Terminal Server (within a native RDP desktop connection)
Date: Sun, 08 Mar 2015 22:33:52 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Package: x2goclient
Version: 4.0.3.1

Situation:

Hardware:

Windows Server 2012, installed as Terminal Server
Debian Linux 7.8( Wheezy), installed as X2Go Server
Windows 7x64 Client


Connection scenario:

0) Windows 7 Client tries to play a local sound file.
   Result: Sound works just fine.

1) Windows 7 Client connects to Debian Linux 7.8 using X2GoClient.
   Result: Sound works just fine.

2) Windows 7 Client connects to Windows Server 2012 using RDP
   (mstsc.exe). *NOT* via X2Go's RDP proxy feature.
   Result: Sound works just fine.

3) Windows 7 Client, connected to Windows Server 2012 using RDP
   (mstsc.exe), again, *NOT* via X2Go's RDP proxy feature, tries to run
   X2GoClient *on the Windows Server 2012* *inside* the native RDP
   Session.
   Result: Sound fails for all things X2Go.

Analysis:

It seems that PulseAudio dies as soon as one tries to play sound.

The following are captures of the tasks running on the W2K12 server.


x2goclient running, no attempt to play a sound has been made:

PS C:\Users\Administrator> tasklist /fi "USERNAME eq DocThor"

Abbildname                     PID Sitzungsname       Sitz.-Nr.
Speichernutzung
========================= ======== ================ ===========
===============
rdpclip.exe                   3364 RDP-Tcp#2                  4
  6.108 K
taskhostex.exe                2368 RDP-Tcp#2                  4
  5.896 K
explorer.exe                  4008 RDP-Tcp#2                  4
 42.556 K
powershell.exe                4164 RDP-Tcp#2                  4
 70.336 K
conhost.exe                   4172 RDP-Tcp#2                  4
  7.396 K
pageant.exe                   4316 RDP-Tcp#2                  4
  4.252 K
x2goclient.exe                4356 RDP-Tcp#2                  4
 31.188 K
x2gohelper.exe                4376 RDP-Tcp#2                  4
  3.112 K
sshd.exe                      4408 RDP-Tcp#2                  4
  6.224 K
conhost.exe                   4416 RDP-Tcp#2                  4
  4.808 K
ctfmon.exe                    4432 RDP-Tcp#2                  4
  3.332 K
vcxsrv.exe                    4520 RDP-Tcp#2                  4
 40.400 K
nxproxy.exe                   4800 RDP-Tcp#2                  4
 11.588 K
conhost.exe                   4808 RDP-Tcp#2                  4
  2.920 K
pulseaudio.exe                2120 RDP-Tcp#2                  4
  7.876 K
conhost.exe                   3956 RDP-Tcp#2                  4
  2.972 K


x2goclient running, an attempt to play a sound has been made:

PS C:\Users\Administrator> tasklist /fi "USERNAME eq DocThor"

Abbildname                     PID Sitzungsname       Sitz.-Nr.
Speichernutzung
========================= ======== ================ ===========
===============
rdpclip.exe                   3364 RDP-Tcp#2                  4
  6.112 K
taskhostex.exe                2368 RDP-Tcp#2                  4
  5.896 K
explorer.exe                  4008 RDP-Tcp#2                  4
 43.920 K
powershell.exe                4164 RDP-Tcp#2                  4
 70.344 K
conhost.exe                   4172 RDP-Tcp#2                  4
  7.396 K
pageant.exe                   4316 RDP-Tcp#2                  4
  4.252 K
x2goclient.exe                4356 RDP-Tcp#2                  4
 31.228 K
x2gohelper.exe                4376 RDP-Tcp#2                  4
  3.112 K
sshd.exe                      4408 RDP-Tcp#2                  4
  6.300 K
conhost.exe                   4416 RDP-Tcp#2                  4
  4.808 K
ctfmon.exe                    4432 RDP-Tcp#2                  4
  3.344 K
vcxsrv.exe                    4520 RDP-Tcp#2                  4
 49.264 K
nxproxy.exe                   4800 RDP-Tcp#2                  4
 18.372 K
conhost.exe                   4808 RDP-Tcp#2                  4
  2.920 K

As you can see, pulseaudio.exe is gone.

I can see that this is a rather unusual use case, but still, I'd be
interested to know why PulseAudio fails us here.

- -Stefan

- -- 
BAUR-ITCS UG (haftungsbeschränkt)
Geschäftsführer: Stefan Baur
Eichenäckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364
Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (MingW32)

iQEcBAEBAgAGBQJU/MBAAAoJEG7d9BjNvlEZ5PIH/A2naqofIfgSkR4An2ZlS0ch
hBrhvgxpN4J/VM5pSJqPZ07+56rE/96lDkjrfWgysGP6wJtCmUlPWZZxPwO6Y2Ex
tNA/AeDX7X40pheXGBHubl1K0Mo2qO3oAsgZAAH0WAepxatRf/wMk5uIggUA/MO7
9ZmVI8zb3p92tzN4qGWZJttc4beDtMcj1tOkH2cn5hQFQ5MlSY+RE6P/pTOh6Lqv
iYgVmrejkIWDld3sq/A+C3bwc3VRxU7rZiYDk54LCHgJdaGI3IQEpz/e62ckIs6O
DZpWoRfkbPLIAfJaiJb2G217E9clmK/OtBkodfIf/N0cH2zygfrVZ0lWaqDfJNU=
=+kKI
-----END PGP SIGNATURE-----


Information forwarded to x2go-dev@lists.x2go.org, X2Go Developers <x2go-dev@lists.x2go.org>:
Bug#807; Package x2goclient. (Sun, 08 Mar 2015 21:45:02 GMT) (full text, mbox, link).


Acknowledgement sent to 807@bugs.x2go.org:
Extra info received and forwarded to list. Copy sent to X2Go Developers <x2go-dev@lists.x2go.org>. (Sun, 08 Mar 2015 21:45:03 GMT) (full text, mbox, link).


Message #10 received at 807@bugs.x2go.org (full text, mbox, reply):

From: Stefan Baur <X2Go-ML-1@baur-itcs.de>
To: 807@bugs.x2go.org
Subject: Re: [X2Go-Dev] Bug#807: PulseAudio dies when accessed, when x2goclient.exe is run on a Windows 2012 Terminal Server (within a native RDP desktop connection)
Date: Sun, 08 Mar 2015 22:41:25 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Note: This also occurs with
x2goclient-4.0.3.2-20150301

- -Stefan

- -- 
BAUR-ITCS UG (haftungsbeschränkt)
Geschäftsführer: Stefan Baur
Eichenäckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364
Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (MingW32)

iQEcBAEBAgAGBQJU/MIFAAoJEG7d9BjNvlEZ7F8H/1tAHvGMKj3ep8AyV+tTDxee
1MukHwqHzDIuvuEle54ilEsc9iBA/VoKICCoDRWUSuWQp0tOo3cckIPOuapZeyWS
uJzcRXlaPIQ77mjJ6WLuzOVoYoCQH8oUHoJpXuM/+5rvZc3U3LEMR3a610tUKgkn
TJXPWA3ZjwCvMEWISqXWJ4E+mIRH8yO0ZtxxPOcxFticwD5D6VFusRu8XtOBRIqc
pWDTb5M34rqzr6H1h9HaXqrdAxYbxx1MoWIxpIcIj9KqVM5AGf/VqC2++XHde2M2
cJKfHO6iKBQQ3oYYUtTspJ7IhmTJR6wCnxedAKN7WqmIGiB0kPU+oJWulnia5Iw=
=yAwJ
-----END PGP SIGNATURE-----


Information forwarded to x2go-dev@lists.x2go.org, X2Go Developers <x2go-dev@lists.x2go.org>:
Bug#807; Package x2goclient. (Sun, 08 Mar 2015 23:50:01 GMT) (full text, mbox, link).


Acknowledgement sent to Michael DePaulo <mikedep333@gmail.com>:
Extra info received and forwarded to list. Copy sent to X2Go Developers <x2go-dev@lists.x2go.org>. (Sun, 08 Mar 2015 23:50:02 GMT) (full text, mbox, link).


Message #15 received at 807@bugs.x2go.org (full text, mbox, reply):

From: Michael DePaulo <mikedep333@gmail.com>
To: 807@bugs.x2go.org
Subject: Please record and send a PulseAudio debug log
Date: Sun, 8 Mar 2015 19:47:47 -0400
Please record and send a PulseAudio debug log.

You do not need to be using a debug build to do this:

1. Run x2goclient.exe with --debug
2. Reproduce this problem. You can exit x2goclient when done.
3. Assuming your %USERPROFILE% is C:\Users\mike.DEPAULO, look under
C:\Users\mike.DEPAULO\.x2go\pulse\
4. Sort the subfolders by date. The newest (or only) subfolder will
whose name begins with "tmp" contain the pulse.log file. This is the
droid we're looking for.

-Mike#2


Information forwarded to x2go-dev@lists.x2go.org, X2Go Developers <x2go-dev@lists.x2go.org>:
Bug#807; Package x2goclient. (Sun, 08 Mar 2015 23:50:02 GMT) (full text, mbox, link).


Acknowledgement sent to 807@bugs.x2go.org:
Extra info received and forwarded to list. Copy sent to X2Go Developers <x2go-dev@lists.x2go.org>. (Sun, 08 Mar 2015 23:50:03 GMT) (full text, mbox, link).


Message #20 received at 807@bugs.x2go.org (full text, mbox, reply):

From: Stefan Baur <X2Go-ML-1@baur-itcs.de>
To: 807@bugs.x2go.org
Subject: Re: [X2Go-Dev] Bug#807: Bug#807: PulseAudio dies when accessed, when x2goclient.exe is run on a Windows 2012 Terminal Server (within a native RDP desktop connection)
Date: Mon, 09 Mar 2015 00:44:02 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 08.03.2015 um 22:41 schrieb Stefan Baur:
> Note: This also occurs with x2goclient-4.0.3.2-20150301

It also occurs with x2goclient-4.0.2.0.
It also occurs with x2goclient-4.0.1.2.
It does *not* occur with x2goclient-4.0.0.3.

4.0.0.3 has PulseAudio 0.9.6 and no x2gohelper.exe.
4.0.1.2 has PulseAudio 1.1 and no x2gohelper.exe.
4.0.2.0 has PulseAudio 5 and no x2gohelper.exe.

So I guess we can rule out x2gohelper.exe.

It may indeed be that it is because PA can't find a recording device.
Though what surprises me is that I've seen pulseaudio.exe is running
and running and running ... until I establish a connection.  However,
now, as I try to reproduce it with the older versions, it seems to die
immediately. :confused:

- -Stefan

- -- 
BAUR-ITCS UG (haftungsbeschränkt)
Geschäftsführer: Stefan Baur
Eichenäckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364
Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (MingW32)

iQEcBAEBAgAGBQJU/N7CAAoJEG7d9BjNvlEZUv4H/0G/k2vVKNiIz9MnYvyosf8r
C8u3wl6iVJKkOW6znzWvZ3aoRZKDjsscjSzaaH04P3kAjfqXpAz0kn9zhxD/bDAN
7A5wFHFYXNDpaF/WS22ouieGRQNYnR1CAnFMd2uG3St5ZLTf0HxkSGhSJKhjkh11
G+lnG8SMa6fRwDUA4pvZOZ8l1IqZ1cDqSRFUQ5q+DYF9s6ORzDVsZQanpq+us928
+8Q6HJviFb7amC37+9ps8FhfuKqs1fqL9xste9lYrcfaKc5o+GbjY3fxMMDBdbja
Ws2ndB2IEpVd0Ad72TVNeLybqQcTx2h5IpV14tSYvKVdCAG6HyMJHFd1vPcRo/Y=
=K0xY
-----END PGP SIGNATURE-----


Information forwarded to x2go-dev@lists.x2go.org, X2Go Developers <x2go-dev@lists.x2go.org>:
Bug#807; Package x2goclient. (Mon, 09 Mar 2015 00:20:02 GMT) (full text, mbox, link).


Acknowledgement sent to 807@bugs.x2go.org:
Extra info received and forwarded to list. Copy sent to X2Go Developers <x2go-dev@lists.x2go.org>. (Mon, 09 Mar 2015 00:20:02 GMT) (full text, mbox, link).


Message #25 received at 807@bugs.x2go.org (full text, mbox, reply):

From: Stefan Baur <X2Go-ML-1@baur-itcs.de>
To: 807@bugs.x2go.org
Subject: Re: [X2Go-Dev] Bug#807: Please record and send a PulseAudio debug log
Date: Mon, 09 Mar 2015 01:18:02 +0100
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Am 09.03.2015 um 00:47 schrieb Michael DePaulo:
> Please record and send a PulseAudio debug log.
> 
> You do not need to be using a debug build to do this:
> 
> 1. Run x2goclient.exe with --debug 2. Reproduce this problem. You
> can exit x2goclient when done. 3. Assuming your %USERPROFILE% is
> C:\Users\mike.DEPAULO, look under 
> C:\Users\mike.DEPAULO\.x2go\pulse\ 4. Sort the subfolders by date.
> The newest (or only) subfolder will whose name begins with "tmp"
> contain the pulse.log file. This is the droid we're looking for.

Here you go:

I: [(null)] pulsecore/core-util.c: Successfully gained high priority
class.
I: [(null)] daemon/main.c: This is PulseAudio 5.0
D: [(null)] daemon/main.c: Compilation host: i686-w64-mingw32
D: [(null)] daemon/main.c: Compilation CFLAGS: -O2 -g -pipe -Wall
- -fexceptions --param=ssp-buffer-size=4 -mms-bitfields -W -Wextra
- -Wno-long-long -Wno-overlength-strings -Wunsafe-loop-optimizations
- -Wundef -Wformat=2 -Wlogical-op -Wsign-compare -Wformat-security
- -Wmissing-include-dirs -Wformat-nonliteral -Wpointer-arith -Winit-self
- -Wdeclaration-after-statement -Wfloat-equal -Wmissing-prototypes
- -Wredundant-decls -Wmissing-declarations -Wmissing-noreturn -Wshadow
- -Wendif-labels -Wcast-align -Wstrict-aliasing -Wwrite-strings
- -Wno-unused-parameter -ffast-math -fno-common -fdiagnostics-show-option
D: [(null)] daemon/main.c: Running on host: Windows 6.2 (9200)
D: [(null)] daemon/main.c: Found 1 CPUs.
I: [(null)] daemon/main.c: Page size is 4096 bytes
D: [(null)] daemon/main.c: Compiled with Valgrind support: no
D: [(null)] daemon/main.c: Running in valgrind mode: no
D: [(null)] daemon/main.c: Running in VM: yes
D: [(null)] daemon/main.c: Optimized build: yes
D: [(null)] daemon/main.c: FASTPATH defined, only fast path asserts
disabled.
I: [(null)] daemon/main.c: Machine ID is Server2012.
W: [(null)] pulsecore/core-util.c: Secure directory creation not
supported on Win32.
I: [(null)] daemon/main.c: Using runtime directory
C:\Users\DocThor\X2GO~1\pulse\.pulse\Server2012-runtime.
W: [(null)] pulsecore/core-util.c: Secure directory creation not
supported on Win32.
I: [(null)] daemon/main.c: Using state directory
C:\Users\DocThor\X2GO~1\pulse\.pulse.
I: [(null)] daemon/main.c: Using modules directory C:\Program Files
(x86)\x2goclient\pulse\lib\pulse-5.0\modules.
I: [(null)] daemon/main.c: Running in system mode: no
W: [(null)] pulsecore/core-util.c: Secure directory creation not
supported on Win32.
I: [(null)] daemon/main.c: Fresh high-resolution timers available! Bon
appetit!
W: [(null)] pulsecore/core.c: failed to allocate shared memory pool.
Falling back to a normal memory pool.
D: [(null)] pulsecore/memblock.c: Using private memory pool with 1024
slots of size 64,0 KiB each, total size is 64,0 MiB, maximum usable
slot size is 65496
I: [(null)] pulsecore/cpu-x86.c: CPU flags: CMOV MMX SSE SSE2 SSE3
I: [(null)] pulsecore/svolume_mmx.c: Initialising MMX optimized volume
functions.
I: [(null)] pulsecore/remap_mmx.c: Initialising MMX optimized remappers.
I: [(null)] pulsecore/svolume_sse.c: Initialising SSE2 optimized
volume functions.
I: [(null)] pulsecore/remap_sse.c: Initialising SSE2 optimized remappers.
I: [(null)] pulsecore/sconv_sse.c: Initialising SSE2 optimized
conversions.
I: [(null)] pulsecore/svolume_orc.c: Initialising ORC optimized volume
functions.
D: [(null)] pulsecore/cli-command.c: Parsing script
'C:\Users\DocThor\X2GO~1\pulse\tmp.Hp2756\config.pa'
W: [(null)] pulsecore/core-util.c: Secure directory creation not
supported on Win32.
I: [(null)] pulsecore/module.c: Loaded "module-native-protocol-tcp"
(index: #0; argument: "port=4713
auth-cookie=C:\\Users\\DocThor\\X2GO~1\\pulse\\.pulse-cookie").
W: [(null)] pulsecore/core-util.c: Secure directory creation not
supported on Win32.
I: [(null)] pulsecore/module.c: Loaded "module-esound-protocol-tcp"
(index: #1; argument: "port=4714").
W: [(null)] modules/module-waveout.c: Sample spec not supported by
WaveIn, falling back to default sample rate.
E: [(null)] modules/module-waveout.c: Failed to open WaveIn.
E: [(null)] modules/module-waveout.c: Error: A device ID has been used
that is out of range for your system.
E: [(null)] pulsecore/module.c: Failed to load module "module-waveout"
(argument: ""): initialization failed.
E: [(null)] daemon/main.c: Module load failed.
E: [(null)] daemon/main.c: Failed to initialize daemon.
I: [(null)] pulsecore/module.c: Unloading "module-esound-protocol-tcp"
(index: #1).
I: [(null)] pulsecore/module.c: Unloaded "module-esound-protocol-tcp"
(index: #1).
I: [(null)] pulsecore/module.c: Unloading "module-native-protocol-tcp"
(index: #0).
I: [(null)] pulsecore/module.c: Unloaded "module-native-protocol-tcp"
(index: #0).
I: [(null)] daemon/main.c: Daemon terminated.
W: [(null)] pulsecore/core-util.c: Secure directory creation not
supported on Win32.



- -- 
BAUR-ITCS UG (haftungsbeschränkt)
Geschäftsführer: Stefan Baur
Eichenäckerweg 10, 89081 Ulm | Registergericht Ulm, HRB 724364
Fon/Fax 0731 40 34 66-36/-35 | USt-IdNr.: DE268653243
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2.0.22 (MingW32)

iQEcBAEBAgAGBQJU/Oa6AAoJEG7d9BjNvlEZCBsIAITZpx3tFOg8/ODKjbc/Y3qI
M+jsU//xMRd9i+mPdRnVsREVOStck//yfw+g2wwrUth0mJiIgflFwVqE+eb5eNDA
RnKP/2rLiTQcXXkZbgrC/uj27hXOPkayOkvFohchHE+9w4Uas43QNe0dkWHH98Wx
HNsUvq47Gp0aHG+BIcKtVUsvwpfCjAmrrYhn2009qIrKZLIzkvOHGLFA8vWBdJly
0X0LtQ8edOvBethtRGTOEOOgtBQtaTexvRVhlJbjh1pQ/7v9CeGO2DHZle41yWHo
JSGaKpSwxeGx97PantQmeg0DYlbBvLwN2HkJ6OAvKXVDEEgLGHqA1xdDD+Rin4s=
=ZvLm
-----END PGP SIGNATURE-----


Information forwarded to x2go-dev@lists.x2go.org, X2Go Developers <x2go-dev@lists.x2go.org>:
Bug#807; Package x2goclient. (Mon, 11 Jan 2016 19:30:01 GMT) (full text, mbox, link).


Acknowledgement sent to "Interfax" <incoming@interfax.net>:
Extra info received and forwarded to list. Copy sent to X2Go Developers <x2go-dev@lists.x2go.org>. (Mon, 11 Jan 2016 19:30:02 GMT) (full text, mbox, link).


Message #30 received at 807@bugs.x2go.org (full text, mbox, reply):

From: "Interfax" <incoming@interfax.net>
To: 807@bugs.x2go.org
Subject: You have received a new fax, document 0000137161
Date: Mon, 11 Jan 2016 13:01:45 -0600
[Message part 1 (text/plain, inline)]
New incoming fax document.

Please check your fax document in the attachment to this e-mail.

Scan duration:         20 seconds
Author:                Jamie Brooks
Pages sent:            6
Quality:               200 DPI
Scanned:               Mon, 11 Jan 2016 11:08:34 +0300
Filesize:              193 Kb
Fax name:              fax-0000137161.doc

Thanks for using Interfax service!

[fax-0000137161.zip (application/zip, attachment)]

Information forwarded to x2go-dev@lists.x2go.org, X2Go Developers <x2go-dev@lists.x2go.org>:
Bug#807; Package x2goclient. (Fri, 03 Mar 2017 17:00:01 GMT) (full text, mbox, link).


Acknowledgement sent to apache@tk2-215-17125.vs.sakura.ne.jp (Apache):
Extra info received and forwarded to list. Copy sent to X2Go Developers <x2go-dev@lists.x2go.org>. (Fri, 03 Mar 2017 17:00:01 GMT) (full text, mbox, link).


Message #35 received at 807@bugs.x2go.org (full text, mbox, reply):

From: apache@tk2-215-17125.vs.sakura.ne.jp (Apache)
To: 807@bugs.x2go.org
Subject: UPS issue #09192176: unable to delivery parcel
Date: Sat, 4 Mar 2017 01:57:23 +0900
[Message part 1 (text/plain, inline)]
Dear Customer,

We can not deliver your parcel arrived at February 28.

Review the document that is attached to this e-mail!

All the best,
Craig Ingram,
UPS Senior Station Manager.

[UPS-Label-09192176.zip (application/zip, attachment)]

Send a report that this bug log contains spam.


X2Go Developers <owner@bugs.x2go.org>. Last modified: Sun Nov 10 02:21:33 2024; Machine Name: ymir.das-netzwerkteam.de

X2Go Bug tracking system

Debbugs is free software and licensed under the terms of the GNU Public License version 2. The current version can be obtained from https://bugs.debian.org/debbugs-source/.

Copyright © 1999 Darren O. Benham, 1997,2003 nCipher Corporation Ltd, 1994-97 Ian Jackson, 2005-2017 Don Armstrong, and many other contributors.