Libelektra: testshell_markdown_tutorial_crypto: gagal

Dibuat pada 26 Nov 2019  Β·  17Komentar  Β·  Sumber: ElektraInitiative/libelektra

Langkah-langkah untuk Mereproduksi Masalah

Bangun libelektra sambil memiliki file pengembangan gpgme. ( gpgme-devel di fedora)
Saya dulu

cmake -DBUILD_DOCUMENTATION=ON -DBINDINGS="ALL" -DBUILD_SHARED=ON -DBUILD_STATIC=ON -DBUILD_FULL=ON -DENABLE_COVERAGE=OFF -DENABLE_OPTIMIZATIONS=ON -DENABLE_DEBUG=ON -DENABLE_LOGGER=OFF -DBUILD_STATIC=ON -DCMAKE_INSTALL_PREFIX="$INSTALL_DIR" -DKDB_DB_SYSTEM="$SYSTEM_DIR" DCMAKE_INSTALL_PREFIX=./releaseInstallDir -DPLUGINS="ALL" -DTOOLS="ALL" ..

tetapi tidak semuanya relevan dengan masalah tersebut.

make run_all

Hasil yang diharapkan

Test #215: testshell_markdown_tutorial_crypto ........... Passed    2.58 sec

Hasil Aktual

Sepertinya ada masalah dengan / tmp di tmpfs atau yang serupa? Saya mendapatkan masalah di fedora dan juga di buster debian (di buruh pelabuhan).

249/262 Test #215: testshell_markdown_tutorial_crypto ...........***Failed    2.58 sec
Input: /home/mpranj/workspace/libelektra/doc/tutorials/crypto.md
kdb mount test.ini user/tests ini
kdb set user/tests/password 1234
kdb file user/tests/password | xargs cat
kdb rm user/tests/password
kdb umount user/tests
kdb mount test.ini user/tests fcrypt "encrypt/key=$(kdb gen-gpg-testkey)" ini
kdb set user/tests/password 1234

ERROR - RET:
Return value β€œ5” does not match β€œ0”

kdb file user/tests/password | xargs cat

ERROR - RET:
Return value β€œ123” does not match β€œ0”

kdb rm user/tests/password

ERROR - RET:
Return value β€œ11” does not match β€œ0”

kdb umount user/tests
kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey)" ini
kdb set user/tests/password 1234

ERROR - RET:
Return value β€œ5” does not match β€œ0”

kdb file user/tests/password | xargs cat

ERROR - RET:
Return value β€œ123” does not match β€œ0”

kdb rm user/tests/password

ERROR - RET:
Return value β€œ11” does not match β€œ0”

kdb umount user/tests
kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey),encrypt/key=$(kdb gen-gpg-testkey)" ini
kdb set user/tests/password 1234

ERROR - RET:
Return value β€œ5” does not match β€œ0”

kdb file user/tests/password | xargs cat

ERROR - RET:
Return value β€œ123” does not match β€œ0”

kdb rm user/tests/password

ERROR - RET:
Return value β€œ11” does not match β€œ0”

kdb umount user/tests
kdb mount test.ini user/tests crypto_gcrypt "crypto/key=$(kdb gen-gpg-testkey)" base64 ini
kdb meta-set user/tests/password crypto/encrypt 1
kdb set user/tests/password 1234
kdb set user/tests/unencrypted "I am not encrypted"
kdb file user/tests/password | xargs cat
kdb meta-set user/tests/password crypto/encrypt 0
kdb file user/tests/password | xargs cat
kdb rm user/tests/unencrypted
kdb rm user/tests/password
kdb umount user/tests
shell_recorder /tmp/tmp.FLYIzi6Q4K RESULTS: 31 test(s) done 9 error(s).

β€”β€” Protocol β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”
CMD: kdb mount test.ini user/tests ini
RET: 0

CMD: kdb set user/tests/password 1234
RET: 0
STDOUT: Create a new key user/tests/password with string "1234"

CMD: kdb file user/tests/password | xargs cat
RET: 0
STDOUT: password=1234

CMD: kdb rm user/tests/password
RET: 0

CMD: kdb umount user/tests
RET: 0

CMD: kdb mount test.ini user/tests fcrypt "encrypt/key=$(kdb gen-gpg-testkey)" ini
RET: 0

CMD: kdb set user/tests/password 1234
RET: 5
=== FAILED return value does not match expected pattern 0
STDERR: Sorry, module fcrypt issued the error C01100:
Resource: Renaming file /tmp/test.ini.2110573:1574783987.412609.tmpZJttxQ to /home/mpranj/.config/test.ini.2110573:1574783987.412609.tmp failed. Reason: Invalid cross-device link
ERROR: C01100

CMD: kdb file user/tests/password | xargs cat
RET: 123
=== FAILED return value does not match expected pattern 0
STDERR: cat: /home/mpranj/.config/test.ini: No such file or directory

CMD: kdb rm user/tests/password
RET: 11
=== FAILED return value does not match expected pattern 0
STDERR: Did not find the key

CMD: kdb umount user/tests
RET: 0

CMD: kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey)" ini
RET: 0

CMD: kdb set user/tests/password 1234
RET: 5
=== FAILED return value does not match expected pattern 0
STDERR: Sorry, module fcrypt issued the error C01100:
Resource: Renaming file /tmp/test.ini.2110783:1574783987.564306.tmpRJuvgG to /home/mpranj/.config/test.ini.2110783:1574783987.564306.tmp failed. Reason: Invalid cross-device link
ERROR: C01100

CMD: kdb file user/tests/password | xargs cat
RET: 123
=== FAILED return value does not match expected pattern 0
STDERR: cat: /home/mpranj/.config/test.ini: No such file or directory

CMD: kdb rm user/tests/password
RET: 11
=== FAILED return value does not match expected pattern 0
STDERR: Did not find the key

CMD: kdb umount user/tests
RET: 0

CMD: kdb mount test.ini user/tests fcrypt "sign/key=$(kdb gen-gpg-testkey),encrypt/key=$(kdb gen-gpg-testkey)" ini
RET: 0

CMD: kdb set user/tests/password 1234
RET: 5
=== FAILED return value does not match expected pattern 0
STDERR: Sorry, module fcrypt issued the error C01100:
Resource: Renaming file /tmp/test.ini.2111010:1574783987.747497.tmpti3bSR to /home/mpranj/.config/test.ini.2111010:1574783987.747497.tmp failed. Reason: Invalid cross-device link
ERROR: C01100

CMD: kdb file user/tests/password | xargs cat
RET: 123
=== FAILED return value does not match expected pattern 0
STDERR: cat: /home/mpranj/.config/test.ini: No such file or directory

CMD: kdb rm user/tests/password
RET: 11
=== FAILED return value does not match expected pattern 0
STDERR: Did not find the key

CMD: kdb umount user/tests
RET: 0

CMD: kdb mount test.ini user/tests crypto_gcrypt "crypto/key=$(kdb gen-gpg-testkey)" base64 ini
RET: 0

CMD: kdb meta-set user/tests/password crypto/encrypt 1
RET: 0

CMD: kdb set user/tests/password 1234
RET: 0
STDOUT: Set string to "1234"

CMD: kdb set user/tests/unencrypted "I am not encrypted"
RET: 0
STDOUT: Create a new key user/tests/unencrypted with string "I am not encrypted"

CMD: kdb file user/tests/password | xargs cat
RET: 0
STDOUT: unencrypted=I am not encrypted
#<strong i="19">@META</strong> crypto/encrypt = 1
password=@BASE64IyFjcnlwdG8wMBEAAACCBjEzmVhqufXSsgK4VPRDUC9GyQxBhocVbgZwimonK+xHaRCSX/blNDSVdIoSRg0n

CMD: kdb meta-set user/tests/password crypto/encrypt 0
RET: 0

CMD: kdb file user/tests/password | xargs cat
RET: 0
STDOUT: unencrypted=I am not encrypted
#<strong i="20">@META</strong> crypto/encrypt = 0
password=1234

CMD: kdb rm user/tests/unencrypted
RET: 0

CMD: kdb rm user/tests/password
RET: 0

CMD: kdb umount user/tests
RET: 0
β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”β€”

Sistem Informasi

  • Versi Elektra: master
  • Sistem Operasi: Fedora
  • Versi perangkat lunak lain yang relevan?

File Log dan Output Lebih Lanjut

bug work in progress

Komentar yang paling membantu

Masalah ini mungkin lebih sering terjadi, menurut saya. Kami bahkan merekomendasikan dalam dokumentasi fcrypt untuk memasang kembali /tmp ke RAM-disk. Jadi kami sebenarnya menyarankan untuk segera memicu kesalahan ini.

Saya akan mencoba memberikan perbaikan yang tepat.

Saya hanya akan mengonfigurasi TMPDIR yang berbeda secara eksplisit untuk build. Jika masalah terulang kembali pada sistem target, kami dapat membuka kembali dan menemukan solusi yang lebih baik.

Ini juga bagus sebagai solusi untuk membangun server.

Semua 17 komentar

@ markus2330 ini berhasil pada buildserver. Apakah ini showstopper untuk Anda? Ini akan tercermin dalam log rilis ( kdb run_all -v > ~elektra/$VERSION/run_all 2>&1 ).

EDIT: Saya dapat mencoba melakukan bagian ini di a7 / v2 karena mungkin hanya gagal dalam skenario saya dengan fedora sebagai host (dan debian hanya di buruh pelabuhan).

Tidak, ini jelas bukan showstopper. Kemungkinan besar ini hanya karena beberapa file sementara masih ada dari proses sebelumnya atau # 2957 belum sepenuhnya diperbaiki.

Semoga @ petermax2 punya waktu untuk memperbaikinya sebelum 0.9.2: wink:

@mpranj apakah Anda memerlukan bantuan dengan catatan rilis atau yang lainnya?

Saya tidak dapat mereproduksi masalah saat membangun 2bc994ae8b3f3a04396303ece106ea563764e490 dari awal menggunakan perintah cmake Anda dari atas.

    Start 188: testshell_markdown_tutorial_crypto 
222/235 Test #188: testshell_markdown_tutorial_crypto ...........   Passed    3.16 sec

Mungkin direktori build Anda rusak. Bisakah Anda mencoba mengompilasi dan menguji dengan direktori build (kosong) baru?

@ petermax2 terima kasih sudah memeriksanya begitu cepat. Saya mencoba beberapa kali pada sistem host saya (fedora) dan juga pada kontainer buruh pelabuhan buster debian. Saya juga membersihkan direktori build berkali-kali.

Selalu mungkin itu hanya masalah di akhir saya. Saya akan memeriksanya lagi nanti!

Hm aneh! Saya rasa saya menggunakan Debian: container

Masalah ini dapat direkonstruksi di bawah Fedora.

The following tests FAILED:
 41 - testshell_markdown_base64 (Failed)
 56 - testshell_markdown_csvstorage (Failed)
 76 - testshell_markdown_iconv (Failed)
 78 - testshell_markdown_ini (Failed)
 93 - testshell_markdown_mini (Failed)
116 - testmod_resolver (Failed)
181 - testshell_markdown_tutorial_crypto (Failed)

Mungkin ini bukan masalah khusus tutorial kripto. Saya harus menyelidiki.

kdb gen-gpg-testkey tidak dapat ditemukan. Masalah ini terkait dengan # 3246 (KDB_EXEC_PATH).

EDIT: Analisis ini hanya berlaku untuk testshell_markdown_tutorial_crypto . Saya tidak memeriksa tes lainnya sejauh ini.

Terima kasih telah melihat masalah ini!

Saya belum melihat tes lainnya gagal tbh. Apakah Anda yakin ini masalah yang sama? Saya bahkan tidak bekerja dengan kdb yang terinstal, saya hanya menjalankan ctest dengan make run_all.

Dalam jangka panjang kita akan menambahkan beberapa gambar buruh pelabuhan fedora juga (# 3227), untuk menangkap sesuatu seperti ini sebelumnya.

Apakah Anda yakin ini masalah yang sama?

Tidak, mungkin beberapa masalah berbeda.

Dalam jangka panjang kami akan menambahkan beberapa gambar buruh pelabuhan fedora juga

Ide yang sangat bagus!

Saya mengedit posting saya dari sebelumnya untuk mengklarifikasi apa yang saya maksud dengan analisis saya.

Masalahnya tidak diisolasi ke mesin saya. Tes gagal karena panggilan rename () berikut gagal:
https://github.com/ElektraInitiative/libelektra/blob/263cbe69686a9f087204a7f3660b007d1de22da2/src/plugins/fcrypt/fcrypt.c#L231

Alasannya adalah / tmp adalah mountpoint terpisah di Fedora secara default, yang tidak terjadi pada Debian. Dengan demikian, file tidak dapat diubah namanya di berbagai titik pemasangan.

Saya telah memverifikasi bahwa ini masalahnya dengan menerapkan tambalan (sangat kotor). Saya akan mengusulkan untuk tetap konsisten dengan implementasi resolver dan menempatkan file temp di direktori yang sama dengan file aslinya.

@ petermax2 bagaimana menurut Anda dan apakah Anda punya waktu untuk memperbaikinya dengan tambalan yang tepat?

Direktori tmp yang digunakan oleh fcrypt dapat diatur melalui konfigurasi plugin.

fcrypt menggunakan opsi konfigurasi fcrypt / tmpdir untuk menghasilkan jalur untuk file sementara selama enkripsi dan dekripsi. Jika tidak ada opsi konfigurasi seperti itu yang disediakan, fcrypt akan mencoba menggunakan variabel lingkungan TMPDIR. Jika TMPDIR tidak disetel di lingkungan, / tmp digunakan sebagai direktori default.

(_Sumber_: Dokumentasi Plugin )

Cara termudah untuk mengurangi pekerjaan build seperti Fedora adalah dengan menggunakan direktori lain. Di server build, direktori build lokal dapat digunakan. Bagaimana menurut anda?

@ petermax2 bagaimana menurut Anda dan apakah Anda punya waktu untuk memperbaikinya dengan tambalan yang tepat?

Saya dapat mengalokasikan waktu luang selama akhir pekan tetapi apa yang Anda pikirkan sebagai solusi yang tepat?

Saya dapat mengalokasikan waktu luang selama akhir pekan tetapi apa yang Anda pikirkan sebagai solusi yang tepat?

Tidak perlu merekayasa sesuatu secara berlebihan. Seperti yang saya sarankan, saya akan meletakkan file temp di direktori yang sama dengan file target. Ini adalah cara resolver melakukannya saat melakukan perubahan, jadi ini akan menjadi agak konsisten.

Saya juga baik-baik saja dengan hanya mengonfigurasi TMPDIR yang berbeda untuk build. Saya bisa menerapkan perubahan itu sendiri.

Kami akan memilih apa pun yang Anda sarankan di sini.

Dari ganti nama docu :

[EXDEV]
[CX] [Option Start] The links named by new and old are on different file systems and the implementation does not support links between file systems. [Option End]

Edit: gagal dengan sudo dengan kesalahan yang sama:

213: CMD: kdb set user/tests/password 1234
213: RET: 5
213: === FAILED return value does not match expected pattern 0
213: STDERR: Sorry, module fcrypt issued the error C01100:
213: Resource: Renaming file /tmp/test.ini.571145:1586371945.946855.tmpHdGEMt to /root/.config/test.ini.571145:1586371945.946855.tmp failed. Reason: Invalid cross-device link
213: ERROR: C01100

Solusi sederhana adalah mengganti operasi rename dengan menyalin + menghapus.

Saya hanya akan mengonfigurasi TMPDIR yang berbeda secara eksplisit untuk build. Jika masalah terulang kembali pada sistem target, kami dapat membuka kembali dan menemukan solusi yang lebih baik.

Masalah ini mungkin lebih sering terjadi, menurut saya. Kami bahkan merekomendasikan dalam dokumentasi fcrypt untuk memasang kembali /tmp ke RAM-disk. Jadi kami sebenarnya menyarankan untuk segera memicu kesalahan ini.

Saya akan mencoba memberikan perbaikan yang tepat.

Saya hanya akan mengonfigurasi TMPDIR yang berbeda secara eksplisit untuk build. Jika masalah terulang kembali pada sistem target, kami dapat membuka kembali dan menemukan solusi yang lebih baik.

Ini juga bagus sebagai solusi untuk membangun server.

Terima kasih banyak telah memeriksanya!

Solusi sederhana adalah mengganti operasi ganti nama dengan salin + hapus.

Bukan untuk mengganti kode tapi melakukan itu jika ganti nama gagal. (Dan untuk juga merusak file sumber dalam kasus itu.) Kemudian orang-orang tanpa disk RAM pada / tmp memiliki kecepatan dan orang-orang dengan disk RAM pada / tmp memiliki keamanan lebih.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

markus2330 picture markus2330  Β·  38Komentar

kodebach picture kodebach  Β·  29Komentar

markus2330 picture markus2330  Β·  35Komentar

markus2330 picture markus2330  Β·  585Komentar

markus2330 picture markus2330  Β·  28Komentar