gpgme hungs in test t-verify
Closed, ResolvedPublic

Description

Also in gpgme-1.4.0

No activity at strace

---

Checking key 3CF405464F66ED4A7DF45BBDD1E4282E33BDB76E
Checking key DFA56FB5FC41E3A8921F77AD1622EEFD9152A5AD
Checking key 2C8F3C356AB761CB3674835B792CDA52937F9285
PASS: t-keylist
-----BEGIN ENCRYPTED MESSAGE-----
MIAGCSqGSIb3DQEHA6CAMIACAQAxggELMIIBBwIBADBwMGsxCzAJBgNVBAYTAkRF
MRMwEQYDVQQHFApE/HNzZWxkb3JmMRYwFAYDVQQKEw1nMTAgQ29kZSBHbWJIMRkw
FwYDVQQLExBBZWd5cHRlbiBQcm9qZWN0MRQwEgYDVQQDEwt0ZXN0IGNlcnQgMQIB
ADANBgkqhkiG9w0BAQEFAASBgFUCMVV+JxgOWoa7SrlwE7CzYwhjFjB1aFb04cyh
mjRZ1NLw+H18fChFaoQUJQNFT1YSyDiXQt7f2oIjJVoywJiuSJgwn5m8KjVmqg3J
i5RkH+9QhUQIVl3Whhkxu8EZZj60/l/95oMkPCXp0YmMxs1Xw2QeikyLWTSjgmN9
ZCIYMIAGCSqGSIb3DQEHATAUBggqhkiG9w0DBwQIRiW4g7VVCL2ggAQI1s0lUtsV
ebsECKCTr/RmGe/vAAAAAAAAAAAAAA==
-----END ENCRYPTED MESSAGE-----
PASS: t-encrypt

---

alonbl 31619 31618 0 01:02 pts/7 00:00:00 /bin/sh -c failed=0; all=0;
xfail=0; xpass=0; skip=0; \ srcdir=.; export srcdir; \ list=' t-import t-keylist
t-encrypt t-verify t-decrypt t-sign t-export '; \ red=; grn=; lgn=; blu=; std=;
\ if test -n "$list"; then \ for tst in $list; do \ if test -f ./$tst;
then dir=./; \ elif test -f $tst; then dir=; \ else dir="./"; fi; \
if GNUPGHOME=/tmp/gpgme-1.4.1/tests/gpgsm GPG_AGENT_INFO= ${dir}$tst; then \

all=`expr $all + 1`; \       case "  " in \       *[\ \?]$tst[\ \?]*) \

?xpass=expr $xpass + 1; \ ?failed=expr $failed + 1; \ ?col=$red; res=XPASS;
\ ;; \ *) \ ?col=$grn; res=PASS; \ ;; \ esac; \ elif
test $? -ne 77; then \ all=expr $all + 1; \ case " " in \
*[\ \?]$tst[\ \?]*) \ ?xfail=expr $xfail + 1; \ ?col=$lgn; res=XFAIL; \
;; \ *) \ ?failed=expr $failed + 1; \ ?col=$red; res=FAIL; \ ;; \

esac; \     else \       skip=`expr $skip + 1`; \       col=$blu;

res=SKIP; \ fi; \ echo "${col}$res${std}: $tst"; \ done; \ if test
"$all" -eq 1; then \ tests="test"; \ All=""; \ else \
tests="tests"; \ All="All "; \ fi; \ if test "$failed" -eq 0; then \
if test "$xfail" -eq 0; then \ banner="$All$all $tests passed"; \
else \ if test "$xfail" -eq 1; then failures=failure; else
failures=failures; fi; \ banner="$All$all $tests behaved as expected
($xfail expected $failures)"; \ fi; \ else \ if test "$xpass" -eq 0;
then \ banner="$failed of $all $tests failed"; \ else \ if test
"$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
banner="$failed of $all $tests did not behave as expected ($xpass unexpected
$passes)"; \ fi; \ fi; \ dashes="$banner"; \ skipped=""; \ if test
"$skip" -ne 0; then \ if test "$skip" -eq 1; then \ skipped="($skip
test was not run)"; \ else \ skipped="($skip tests were not run)"; \

fi; \     test `echo "$skipped" | wc -c` -le `echo "$banner" | wc -c` || \  
 dashes="$skipped"; \   fi; \   report=""; \   if test "$failed" -ne 0 &&

test -n "http://bugs.gnupg.org"; then \ report="Please report to
http://bugs.gnupg.org"; \ test echo "$report" | wc -c -le `echo "$banner"

wc -c`\ dashes="$report"; \ fi; \ dashes=`echo "$dashes"sed

s/./=/g`; \ if test "$failed" -eq 0; then \ col="$grn"; \ else \
col="$red"; \ fi; \ echo "${col}$dashes${std}"; \ echo
"${col}$banner${std}"; \ test -z "$skipped" || echo "${col}$skipped${std}"; \

test -z "$report" || echo "${col}$report${std}"; \   echo

"${col}$dashes${std}"; \ test "$failed" -eq 0; \ else :; fi
alonbl 31708 31619 0 01:02 pts/7 00:00:00
/tmp/gpgme-1.4.1/tests/gpgsm/.libs/t-verify
alonbl 31731 1 0 01:02 pts/7 00:00:00 gpgsm --server
alonbl 31734 31731 0 01:02 pts/7 00:00:00 gpg-agent --server

Details

alonbl set Version to 1.4.1.May 5 2013, 12:06 AM
alonbl added projects: Bug Report, Gentoo, gpgme.
alonbl added a subscriber: alonbl.
werner added a subscriber: werner.May 6 2013, 12:00 PM

Please provide complete bug reports. Foe example the OS you are using.

Did not get an email with your comment... just happened to peek.

I am sorry, I forgot to place the link to the bug.

My system:
System uname:
Linux-3.8.6-hardened-x86_64-Intel-R-_Core-TM-_i7-3520M_CPU_@_2.90GHz-with-gentoo-2.2
sys-kernel/linux-headers: 3.7 (virtual/os-headers)
sys-libs/glibc: 2.15-r3
app-shells/bash: 4.2_p45

Attached is my config.log.

At the bug link you will find the user's details.

alonbl set External Link to https://bugs.gentoo.org/show_bug.cgi?id=467290.May 13 2013, 9:55 PM

Thanks. Can you please cd to the build directory gpgme/tests/gpgsm and run
this on the command line (after having canceled the make check):

GPGME_DEBUG=9:/tmp/gpgme.log GNUPGHOME=$(pwd) GPG_AGENT_INFO= ./t-verify

and post the gpgme.log file?

Thanks. GPGME is waiting for an EOF on the fd used to receive data from gpgsm.
The data is send by the GETAUDITLOG command and afaics all data has been
received. There is a one second timeout in the select which you can see at the
end of the log file.

File descriptor passing is used between gpgme and gpgsm which usually works
nice. We have an problem on Mac OS with that for yet unknown reasons. lsof
might give some insight here. I suggest to configure gpgme with
--disable-fd-logging ro check whether this is really the culprit.

What are the special features of the hardened gentoo kernel?

You mean --disable-fd-passing...

Correct it works.

Attached lsof output for the process when does not work.

I don't think it has to do with hardened kernel... as the initial report was
without. I will try to contact the original user.

The lsof looks as expected.

That is a GnuPG. See T1535.
I just pushed a fix to the 2.0 branch.

werner closed this task as Resolved.
werner claimed this task.