Libelektra: Tests verhalten sich in bestimmten Umgebungen merkwürdig (Debian-Pakete)

Erstellt am 11. Mai 2018  ·  35Kommentare  ·  Quelle: ElektraInitiative/libelektra

Vor bc804c207df391c339d880d3487ea3c16eb4ee4e sind die folgenden Tests in einigen Umgebungen beim Erstellen von Debian-Paketen fehlgeschlagen:

  • testmod_blockresolver
  • testmod_crypto_openssl
  • testmod_crypto_gcrypt
  • testmod_crypto_botan
  • testmod_fcrypt

EDIT markus: Sie können die Blockresolver- und Verschlüsselungsprobleme auch reproduzieren, indem Sie HOME und TMPDIR bearbeiten. Es ist kein Erstellen eines Pakets erforderlich.

Fehlerprotokolle

Blockresolver

[package/stretch]  42/118 Test  #48: testmod_blockresolver ............***Failed    0.00 sec
[package/stretch] BLOCKRESOLVER     TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/testmod_blockresolver.c:70: error in test_BlockresolverWrite: blockresolver->kdbSet failed
[package/stretch] Compare <key = only the inside has changed
[package/stretch] >, with <key = inside block
[package/stretch] >
[package/stretch] in file /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/blockresolver/compare.block, line 5.
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/tests/cframework/tests.c:157: error in compare_line_files: comparing lines failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/blockresolver/testmod_blockresolver.c:72: error in test_BlockresolverWrite: files do not match as expected
[package/stretch] 
[package/stretch] testmod_blockresolver Results: 15 Tests done — 3 errors.

crypto_openssl

[package/stretch]  48/118 Test  #60: testmod_crypto_openssl ...........***Failed    5.32 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key
[package/stretch] 
[package/stretch] crypto_openssl Results: 65 Tests done — 1 error.

crypto_gcrypt

[package/stretch]  49/118 Test  #61: testmod_crypto_gcrypt ............***Failed    5.18 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key

crypto_botan

[package/stretch]  50/118 Test  #62: testmod_crypto_botan .............***Failed    5.41 sec
[package/stretch] CYPTO        TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/crypto/test_internals.h:263: error in test_gpg: failed to install the GPG test key

fcrypt

[package/stretch]  57/118 Test  #73: testmod_fcrypt ...................***Failed   15.03 sec
[package/stretch] FCRYPT       TESTS
[package/stretch] ==================
[package/stretch] 
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:159: error in test_gpg: failed to install the GPG test key
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
[package/stretch] /home/jenkins/workspace/elektra-jenkinsfile/libelektra/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
[package/stretch] 

Diskussion

In # 1965 gab es einige Diskussionen zur Fehlersuche, die letztendlich auf https://github.com/ElektraInitiative/libelektra/commit/356317a6ab811f524ebaa1dbf40f19477b966fc1 als das Commit hinwiesen, das die Fehler auftauchte. Das Reinigen der Umgebung sollte jedoch nicht den Nebeneffekt haben, dass Tests bestanden werden.
Wenn Tests bestimmte Umgebungseinstellungen erfordern, sollten sie diese festlegen.

bug

Hilfreichster Kommentar

@ petermax2 Die Vagrant-

Alle 35 Kommentare

Vielen Dank, dass Sie es separat gemeldet haben!

Als Nebeneffekt scheint https://build.libelektra.org/jenkins/job/elektra-git-buildpackage-jessie/ seit gestern wieder zu funktionieren ...

GPG scheint ein Problem mit der gelöschten Umgebung zu haben. Ich werde damit experimentieren, die Variable GNUPGHOME auf /tmp . GPG verwendet dieses Verzeichnis (Standard ist ~/.gnupg/ ), um seine Schlüsselkette nachzuschlagen. Ich denke, die gpg-agent Informationen sind auch in diesem Verzeichnis gespeichert. Wenn Sie es für alle Tests auf dasselbe Verzeichnis setzen, wird möglicherweise auch der Fehler behoben, dass bei jedem Testlauf mehrere gpg-agents auftauchen (siehe # 1928).

Ja, ich dachte auch, dass die fehlgeschlagenen Krypto-Testfälle mit # 1928 zusammenhängen. Es scheint, dass gpg .gnupg unterhalb des TMPDIR verwendet. (Zumindest sehen Sie einen .gnupg-Rest, nachdem Sie TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt ).

Die fehlgeschlagenen fcrypt-Testfälle weisen möglicherweise einen Fehler bei der Behandlung temporärer Dateien auf, der auch mit TMPDIR zusammenhängt.

es scheint, dass gpg .gnupg unterhalb des TMPDIR verwendet

Dies ist eine falsche Annahme. gpg verwendet standardmäßig ~ / .gnupg, sodass es nicht mit TMPDIR, sondern mit HOME zusammenhängt.

Beachten Sie auch, dass das Festlegen von GNUPGHOME für alle Tests auf dasselbe Verzeichnis die parallele Testausführung beeinflussen kann.

Dies ist eine falsche Annahme

Welche Annahme meinst du? Ich bezog mich nur darauf, dass ich einen Ordner .gnupg in TMPDIR bekomme.

mkdir x && env TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt; find x
Test project /home/markus/Projekte/Elektra/build
    Start 64: testmod_fcrypt
1/1 Test #64: testmod_fcrypt ...................***Failed    0.02 sec
FCRYPT       TESTS
==================

/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
/home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 8 errors.


0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.03 sec

The following tests FAILED:
         64 - testmod_fcrypt (Failed)
Errors while running CTest
x
x/elektra-test.qPoz5P
x/elektra-test.qPoz5P/.gnupg
x/elektra-test.qPoz5P/.gnupg/random_seed
x/elektra-test.qPoz5P/.gnupg/trustdb.gpg
x/elektra-test.qPoz5P/.gnupg/pubring.kbx~
x/elektra-test.qPoz5P/.gnupg/pubring.kbx

Das liegt daran, dass etwas in den Tests (ctest?) das Ausgangsverzeichnis für jede Testsuite auf ein tmpdir in TMPDIR setzt.
GPG erstellt die Dateien in HOME, aber HOME wird von der Testsuite auf TMPDIR / randomdir / gesetzt.
Daher ist mein Punkt, dass es nicht die einzige Schuld von tmpdir ist und der Debugging-Aufwand nicht darauf beschränkt sein sollte.

Ich denke, es ist eine gute Idee, für jeden Test separate Home-Verzeichnisse zu haben, damit sie sich nicht gegenseitig beeinflussen (Parallelisierung), und daher ist es keine gute Idee, GPG-Verzeichnisse zu überschreiben, um ein einzelnes Verzeichnis gemeinsam zu nutzen.

Ja, ich stimme zu.

Ist # 1977 sinnvoll? Oder sollte es gemacht werden, nachdem ctest vollständig fertig ist?

Oder anders gefragt: Überlebt der GPG-Agent einen Lauf einer einzelnen Testsuite oder werden sie für jede Testsuite erneut angezeigt?

@ markus2330 Wie in # 2040 erwähnt. Ich habe die Anweisungen zum Erstellen der Docker-Images befolgt. Im Docker-Container lief ich:

# cmake -DBUILD_DOCUMENTATION=OFF -DCMAKE_C_COMPILER=clang -DCMAKE_CXX_COMPILER=clang++ ..
# make -j16
# mkdir x
# TMPDIR=`pwd`/x ctest -R crypt .
Test project /elektra/build
    Start 46: testmod_crypto_openssl
1/3 Test #46: testmod_crypto_openssl ...........   Passed    1.32 sec
    Start 47: testmod_crypto_gcrypt
2/3 Test #47: testmod_crypto_gcrypt ............   Passed    1.16 sec
    Start 48: testmod_crypto_botan
3/3 Test #48: testmod_crypto_botan .............   Passed    1.52 sec

100% tests passed, 0 tests failed out of 3

Label Time Summary:
memleak    =   1.16 sec (1 test)

Total Test time (real) =   4.01 sec

Das Problem besteht also darin, dass in den Testfällen davon ausgegangen wird, dass das TMPDIR vorhanden ist. Und Sie konnten es nicht reproduzieren, da Sie das Verzeichnis immer erstellt haben, bevor Sie die Tests ausgeführt haben: smile:

Aber für mich schlägt fcrypt trotzdem fehl, selbst wenn x vorhanden ist (Sie haben fcrypt nicht ausgeführt). Aber mit anderen Nachrichten:

64: FCRYPT       TESTS
64: ==================
64: 
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
64: /home/markus/Projekte/Elektra/current/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
64: 
64: fcrypt Results: 39 Tests done — 8 errors.
1/1 Test #64: testmod_fcrypt ...................***Failed    0.02 sec

Aber es funktioniert in meinem Container (ich habe lange darauf gewartet, diese Zeile fallen zu lassen: lachend :) ...

jenkins<strong i="6">@924c627f07b8</strong>:/elektra/build$ ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................   Passed    1.07 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.08 sec
jenkins<strong i="7">@924c627f07b8</strong>:/elektra/build$ TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................***Failed    0.01 sec
FCRYPT       TESTS
==================

/elektra/tests/cframework/tests.c:80: error in init: mkdtemp failed
/elektra/tests/cframework/tests.c:90: error in init: mkstemp failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:159: error in test_gpg: failed to install the GPG test key
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:71: error in writeTestFile: can not write to temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:192: error in test_file_crypto_operations: file content could not be restored during decryption
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:71: error in writeTestFile: can not write to temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:99: error in isTestFileCorrect: can not read from temporary file
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed
/elektra/src/plugins/fcrypt/testmod_fcrypt.c:80: error in writeFaultySignatureFile: can not write to temporary file

fcrypt Results: 32 Tests done — 16 errors.


0% tests passed, 1 tests failed out of 1

Total Test time (real) =   0.02 sec

The following tests FAILED:
        59 - testmod_fcrypt (Failed)
Errors while running CTest
jenkins<strong i="8">@924c627f07b8</strong>:/elektra/build$ mkdir x
jenkins<strong i="9">@924c627f07b8</strong>:/elektra/build$ TMPDIR=`pwd`/x ctest --output-on-failure -R fcrypt
Test project /elektra/build
    Start 59: testmod_fcrypt
1/1 Test #59: testmod_fcrypt ...................   Passed    1.06 sec

100% tests passed, 0 tests failed out of 1

Total Test time (real) =   1.07 sec
jenkins<strong i="10">@924c627f07b8</strong>:/elektra/build$

einige weitere interessante Sachen:

  • Warum schlägt mkdtemp fehl?
  • clean_temp_home wurde anscheinend bereits geschrieben, um gnupg-Sachen zu bereinigen. Warum funktioniert es nicht?

    • scheint, als hätten sich die Namen geändert

  • Selbst wenn das Verzeichnis in TMPDIR existiert, ist die Verschlüsselung fehlgeschlagen (die anderen Tests bestehen)

    • Wenn Sie keine TMPDIR-Fcrypt-Durchläufe angeben

gut ... überprüfen Sie die Warnungen für tests.c und alles wird viel klarer ...

Ich bereite jedoch eine PR dafür vor, die einige der Probleme lösen sollte.

Wenn jemand herausfinden könnte, ob in fcrypt irgendwo harte Pfade angegeben sind, die dazu führen könnten, dass die Tests fehlschlagen, wäre das sehr schön.

#N # 2056 Ich bereinige das generierte TMPDIR ordnungsgemäß. Dies behebt das anhaltende Problem mit dem GPG-Agenten.
Es behebt auch ein Problem mit neueren glibc-Versionen, die mkdtemp nicht aktiviert haben.

Der fcrypt-Test schlägt jedoch immer noch fehl, sobald TMPDIR manuell eingestellt wird und ich denke, dass der Code irgendwo einen echten Fehler enthält.

jenkins<strong i="8">@0585a86e6f5f</strong>:~/workspace/build$ pidof gpg-agent
jenkins<strong i="9">@0585a86e6f5f</strong>:~/workspace/build$ TMPDIR=`pwd`/tmp ctest --output-on-failure -R crypt
Test project /home/jenkins/workspace/build
    Start 51: testmod_crypto_openssl
1/4 Test #51: testmod_crypto_openssl ...........   Passed    1.58 sec
    Start 52: testmod_crypto_gcrypt
2/4 Test #52: testmod_crypto_gcrypt ............   Passed    1.34 sec
    Start 53: testmod_crypto_botan
3/4 Test #53: testmod_crypto_botan .............   Passed    1.83 sec
    Start 64: testmod_fcrypt
4/4 Test #64: testmod_fcrypt ...................***Failed    1.17 sec
FCRYPT       TESTS
==================

/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:187: error in test_file_crypto_operations: kdb set failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: file content did not change during encryption
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:191: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:195: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:231: error in test_file_signature_operations: kdb set failed
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: file content did not change during encryption
/home/jenkins/workspace/src/plugins/fcrypt/testmod_fcrypt.c:235: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 8 errors.


75% tests passed, 1 tests failed out of 4

Label Time Summary:
memleak    =   1.34 sec (1 test)

Total Test time (real) =   5.98 sec

The following tests FAILED:
     64 - testmod_fcrypt (Failed)
Errors while running CTest
jenkins<strong i="10">@0585a86e6f5f</strong>:~/workspace/build$ pidof gpg-agent
jenkins<strong i="11">@0585a86e6f5f</strong>:~/workspace/build$ ls -l tmp
total 0

Der fcrypt-Test schlägt jedoch immer noch fehl, sobald TMPDIR manuell eingestellt wird und ich denke, dass der Code irgendwo einen echten Fehler enthält.

Sie haben Recht!

getTemporaryFileName in fcrypt.c überprüft die Umgebung nicht. Wenn in der Plugin-Konfiguration kein tmpdir angegeben ist, wird /tmp als Standard-Fallback verwendet.

Ich nehme an, die richtige Priorisierung wäre:

  1. Plugin conf
  2. Umwelt $TMPDIR
  3. Standard-Fallback /tmp

Sind Sie einverstanden?

ISO / IEC 9945 (POSIX): Der Pfad, der von der ersten Umgebungsvariablen in der Liste TMPDIR, TMP, TEMP, TEMPDIR bereitgestellt wird. Wenn keines davon gefunden wird, "/ tmp".

Da wir sowieso mkdtemp (POSIX 2008) verwenden, könnten Sie das wahrscheinlich auch verwenden und etwas Code loswerden.

Danke für die Info! Konnten Sie überprüfen, ob das vorgeschlagene Update in # 2090 das Testproblem fcrypt auf dem Build-Server behebt?

Wenn es auf Ihrem System mit TMPDIR = dir / that / existiert ctest -R fcrypt funktioniert, sollte es auch auf dem Build-Server funktionieren.

Das Problem sollte jetzt behoben sein.

Ich stimme zu

Es scheint immer noch eine Art Kuriosität bei den Tests zu geben. Ich führe einige Master-Builds hauptsächlich zum Finetune-Executor und für parallele Einstellungen aus, da wir kein Hyperthreading mehr durchführen. In einem Fall schlugen die Tests plötzlich mit dem gleichen Problem fehl, dass der Schlüssel nicht erneut installiert werden konnte:
https://build.libelektra.org/jenkins/blue/organizations/jenkins/libelektra/detail/master/122/pipeline/410

Es tut mir leid, dass ich mich hier angehäuft habe, aber ich bin auch auf den Fehler failed to install the GPG test key gestoßen. Ich verwende einen vagabundierenden artful32 vm und kann diese Fehler konsistent reproduzieren (Hauptzweig):

 55/198 Test  #55: testmod_crypto_gcrypt ....................***Failed    0.60 sec
CYPTO        TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/crypto/test_internals.h:273: error in test_gpg: failed to install the GPG test key

crypto_gcrypt Results: 65 Tests done — 1 error.
 66/198 Test  #66: testmod_fcrypt ...........................***Failed    0.03 sec
FCRYPT       TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:160: error in test_gpg: failed to install the GPG test key
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:188: error in test_file_crypto_operations: kdb set failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:189: error in test_file_crypto_operations: file content did not change during encryption
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:192: error in test_file_crypto_operations: kdb get (pregetstorage) failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:196: error in test_file_crypto_operations: kdb get (postgetstorage) failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:197: error in test_file_crypto_operations: postgetstorage did not encrypt the file again
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:232: error in test_file_signature_operations: kdb set failed
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:233: error in test_file_signature_operations: file content did not change during encryption
/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/fcrypt/testmod_fcrypt.c:236: error in test_file_signature_operations: kdb get failed

fcrypt Results: 39 Tests done — 9 errors.

Ich kann das Vagrantfile per PR bereitstellen, wenn es hilft, die Fehler zu reproduzieren.

Vielen Dank für die Berichterstattung! Können Sie uns Ihr TMPDIR und Ihr Zuhause mitteilen? Versuchen Sie es mit env -i zu reproduzieren.

@ petermax2 Hast du Zeit, es dir anzusehen?

Für die obigen Fehler:
TMPDIR: leer
HOME: /home/jenkins/workspace/elektra-master-full-artful32/user

Bei env -i schlägt ein weiterer Test fehl:

 54/198 Test  #54: testmod_crypto_openssl ...................***Failed    0.31 sec
CYPTO        TESTS
==================

/home/jenkins/workspace/elektra-master-full-artful32/src/plugins/crypto/test_internals.h:273: error in test_gpg: failed to install the GPG test key

crypto_openssl Results: 65 Tests done — 1 error.

Ich bin mir nicht sicher, ob dies ein Zufall ist, aber dies war das erste Mal, dass dieser Test fehlschlug.

Ich kann über das Wochenende nachforschen. @mpranj Könntest du mir bitte die Vagabunddatei schicken?

@ petermax2 Die Vagrant-

$HOMEDIR wird nach Abschluss des Testfalls nicht gelöscht, daher läuft gpg-agent weiter, was das Problem verursacht. Wenn GNUPGHOME auf ein anderes Verzeichnis festgelegt ist, ist der Testfall erneut erfolgreich.

BEARBEITEN: $HOMEDIR wird ordnungsgemäß gelöscht, aber gpgagent wird nicht wie erwartet beendet.

EDIT v2:

vagrant@ubuntu-artful:~/libelektra/build$ gpg --list-key
gpg: directory '/home/vagrant/.gnupg' created
gpg: new configuration file '/home/vagrant/.gnupg/dirmngr.conf' created
gpg: new configuration file '/home/vagrant/.gnupg/gpg.conf' created
gpg: keybox '/home/vagrant/.gnupg/pubring.kbx' created
gpg: /home/vagrant/.gnupg/trustdb.gpg: trustdb created
vagrant@ubuntu-artful:~/libelektra/build$ pgrep agent
3630
vagrant@ubuntu-artful:~/libelektra/build$ rm -rf /home/vagrant/.gnupg
vagrant@ubuntu-artful:~/libelektra/build$ pgrep agent
3630
vagrant@ubuntu-artful:~/libelektra/build$

Vielen Dank für die Untersuchung!

Gibt es eine Übersicht darüber, in welcher Version welche env-Variablen was tun und seit wann der gpg-Agent geschlossen wird, wenn die Dateien entfernt werden?

Was ist der beste Weg, um dies zu beheben?

Entschuldigung für die Verzögerung, ich hatte bisher keine Zeit, weitere Nachforschungen anzustellen.

Gibt es eine Übersicht darüber, in welcher Version welche env-Variablen was tun und seit wann der gpg-Agent geschlossen wird, wenn die Dateien entfernt werden?

Die gesamte Dokumentation, die ich finden konnte, war

_ (GNUPGHOME) Wenn das Verzeichnis anstelle von "~ / .gnupg" verwendet wird ._ [1]

Was ist der beste Weg, um dies zu beheben?

Ich bin mir nicht sicher. Es scheint nicht, dass es eine einzige Lösung gibt, die alle Probleme löst, mit denen wir mit GnuPG konfrontiert sind. Ich habe einmal versucht, die PIDs von gestarteten GnuPG-Agenten zu speichern, aber es stellte sich nicht als gut heraus.

Hast du eine Idee?

Quellen

  • [1] [https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration.html lightboxes(https://www.gnupg.org/documentation/manuals/gnupg/GPG-Configuration.html)

Vielleicht sollten wir nicht versuchen, jedes mögliche Problem zu lösen und nur einige Versionen von gnupg unterstützen?

Welche Versionen von gnupg bereinigen sich nach dem Entfernen ihrer Dateien nicht selbst? Sind sie relevant genug, um sie noch zu unterstützen? Vielleicht deaktivieren wir einfach die Tests für sie?

Welche Versionen von gnupg bereinigen sich nach dem Entfernen ihrer Dateien nicht selbst?

Die Version von Ubuntu Artful (17.10) von gpg ist die einzige Version, bei der der Agent nach dem Löschen von GNUPGHOME nicht beendet wird. Ich habe dieses Verhalten in anderen Versionen von gpg nicht gesehen.

Das GPG in Ubuntu Artful ist 2.1.15. In Ubuntu 18.04.1 wird gpg Version 2.2.4 verwendet. Die neueste Version ist 2.2.10.

Wir könnten einen Abhängigkeitshinweis hinzufügen, dass eine GPG-Version> = 2.2 erforderlich ist.

Wenn Sie die Versionshinweise richtig verstehen, ist die Beendigung in gpg Version 2.1.16 implementiert. Siehe Versionshinweise .

BEARBEITEN: Der Versionshinweis besagt, dass die Beendigung nur für Linux implementiert ist. Das bedeutet, dass wir unter anderen Betriebssystemen das gleiche Problem haben sollten. Ich werde es auf FreeBSD testen.

Ich werde es auf FreeBSD testen.

Ja, gpg-agent läuft noch, nachdem GNUPGHOME entfernt wurde.

Geldautomat Ich teste eine andere Lösung. Durch Ausführen von gpg-connect-agent KILLAGENT wird der Agent in gpg Version 2.2.4 heruntergefahren. Wenn wir diesen Befehl nach Abschluss des Komponententests execv ausführen, sollte gpg-agent heruntergefahren werden. Ich werde diese Lösung unter Linux und FreeBSD testen. Bitte warten Sie auf einen Kommentar oder hoffentlich eine PR!

Bitte öffnen Sie dieses Problem erneut, wenn das Problem erneut auftritt.

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

mpranj picture mpranj  ·  3Kommentare

mpranj picture mpranj  ·  3Kommentare

mpranj picture mpranj  ·  4Kommentare

markus2330 picture markus2330  ·  3Kommentare

mpranj picture mpranj  ·  3Kommentare