scdaemon sends SIGUSR2 to foreground gpg-agent

NIIBE Yutaka gniibe at
Thu Nov 11 01:48:32 CET 2010


Using Gnuk, I found a small problem at the interaction between
scdaemon and gpg-agent.  I am using gnupg2-2.0.14 (on Debian) and
reading its source, and reading the code
gnupg-2.1.0beta1/agent/gpg-agent.c too.

When we run gpg-agent in background, no problem.  In the function
handle_connections (agent/gpg-agent.c), it setups SIG_IGN for SIGUSR2.
# As we use gpg-agent in background, we don't see any problem usually.

Invoked as foreground, gpg-agent does nothing for setup for SIGUSR2.

When there is no gpg-agent, it will be spawned with "--server"
(foreground).  Then, when scdaemon will find Gnuk Token, it sends
SIGUSR2 to gpg-agent.  Thus, gpg-agent will be killed, and it results
"IPC write error".

Scdaemon should not send SIGUSR2 to foreground gpg-agent, or,
gpg-agent would setup SIG_IGN for SIGUSR2, even if it runs foreground.

Here is the interaction log:
$ gpg2 --card-edit
can't connect to `/home/gniibe/.gnupg/S.gpg-agent': No such file or directory
Application ID ...: D276000124010200F517000000010000
Version ..........: 2.0
Manufacturer .....: unknown
Serial number ....: 00000001
Name of cardholder: Yutaka Niibe
Language prefs ...: ja
Sex ..............: male
URL of public key :
Login data .......: gniibe
Signature PIN ....: forced
Key attributes ...: 2048R 2048R 2048R
Max. PIN lengths .: 127 127 127
PIN retry counter : 3 3 3
Signature counter : 2
Signature key ....: 1241 24BD 3B48 62AF 7A0A  42F1 00B4 5EBD 4CA7 BABE
      created ....: 2010-10-15 06:46:33
Encryption key....: 42E1 E805 4E6F 1F30 26F2  DC79 79A7 9093 0842 39CF
      created ....: 2010-10-15 06:46:33
Authentication key: B4D9 7142 C42D 6802 F5F7  4E70 9C33 B6BA 5BB0 65DC
      created ....: 2010-10-22 06:06:36
General key info..:
pub  2048R/4CA7BABE 2010-10-15 NIIBE Yutaka <gniibe at>
sec>  2048R/4CA7BABE  created: 2010-10-15  expires: never
                      card-no: F517 00000001
ssb>  2048R/084239CF  created: 2010-10-15  expires: never
                      card-no: F517 00000001
ssb>  2048R/5BB065DC  created: 2010-10-22  expires: never
                      card-no: F517 00000001

Command> scdaemon[7182]: updating slot 0 status: 0x0000->0x0007 (0->1)
scdaemon[7182]: sending signal 12 to client 7181
scdaemon[7182]: scdaemon (GnuPG) 2.0.14 stopped

gpg: OpenPGP card not available: IPC write error


More information about the Gnupg-devel mailing list