Libelektra: cmerge: segfault

Dibuat pada 15 Nov 2019  ·  7Komentar  ·  Sumber: ElektraInitiative/libelektra

Langkah-langkah untuk Mereproduksi Masalah

Konfigurasi dan buat libelektra.

make run all

Hasil yang diharapkan

Semua tes berhasil.

Hasil Aktual

The following tests FAILED:
    210 - testshell_markdown_cmerge (Failed)
    225 - test_cmerge (SEGFAULT)
 valgrind ./bin/test_cmerge
==200629== Memcheck, a memory error detector
==200629== Copyright (C) 2002-2017, and GNU GPL'd, by Julian Seward et al.
==200629== Using Valgrind-3.15.0 and LibVEX; rerun with -h for copyright info
==200629== Command: ./bin/test_cmerge
==200629== 
CMERGE       TESTS
==================

Executing testValuesWithGivenLength with size 59
==200629== Jump to the invalid address stated on the next line
==200629==    at 0x0: ???
==200629==    by 0xF: ???
==200629==  Address 0x0 is not stack'd, malloc'd or (recently) free'd
==200629== 
==200629== 
==200629== Process terminating with default action of signal 11 (SIGSEGV): dumping core
==200629==  Bad permissions for mapped region at address 0x0
==200629==    at 0x0: ???
==200629==    by 0xF: ???
==200629== 
==200629== HEAP SUMMARY:
==200629==     in use at exit: 4,388 bytes in 64 blocks
==200629==   total heap usage: 169 allocs, 105 frees, 81,447 bytes allocated
==200629== 
==200629== LEAK SUMMARY:
==200629==    definitely lost: 0 bytes in 0 blocks
==200629==    indirectly lost: 0 bytes in 0 blocks
==200629==      possibly lost: 0 bytes in 0 blocks
==200629==    still reachable: 4,388 bytes in 64 blocks
==200629==         suppressed: 0 bytes in 0 blocks
==200629== Rerun with --leak-check=full to see details of leaked memory
==200629== 
==200629== For lists of detected and suppressed errors, rerun with: -s
==200629== ERROR SUMMARY: 1 errors from 1 contexts (suppressed: 0 from 0)
[1]    200629 segmentation fault (core dumped)  valgrind ./bin/test_cmerge

Sistem Informasi

  • Versi Elektra: master
  • Fedora 31

File Log dan Output Lebih Lanjut

cmerge.txt

bug

Komentar yang paling membantu

@ Chemin1 terima kasih telah memperbaikinya begitu cepat. Saya dapat mengonfirmasi bahwa ini berfungsi untuk saya sekarang.

Semua 7 komentar

Saya memiliki libgit2 0.28.3 di linux dan ini tidak berhasil. Menghapus centang CMERGE_ON_LINUX di kode memperbaiki segfault.
https://github.com/ElektraInitiative/libelektra/blob/4ee9617186fe053107530624b27ff2825478f257/src/libs/merge/kdbmerge.c#L991

Terima kasih telah melaporkan masalah ini!

Kami pasti harus memperbaiki ini sebelum 0.9.1. Mungkin hanya dengan menonaktifkan libgit2 dalam kasus ini.

@mpranj Anda juga dapat memposting keluaran gdb, keluaran valgrind tidak begitu membantu.

Saya yakin ini tentang LibGit. Pustaka harus diinisialisasi dengan git_libgit2_init () sesuai dengan dokumentasinya.

Saat tidak menginisialisasi LibGit di semua Linux di server build, kami tidak mendapatkan kebocoran memori. Jika kita menginisialisasi, kita lakukan. Namun, jika kami tidak menginisialisasi untuk FreeBSD build, kami mendapatkan segfault. Inilah alasan mengapa ifdef aneh itu ada. Saya juga membuat posting Stackoverflow pertama saya tentang ini.

Semoga # 3221 memperbaiki ini.

Keluaran gdb juga tidak terlalu membantu. Saya tidak yakin mengapa, saya memiliki simbol debug dari perpustakaan dan itu adalah build Debug dari elektra.

GNU gdb (GDB) Fedora 8.3.50.20190824-24.fc31
Copyright (C) 2019 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.
Type "show copying" and "show warranty" for details.
This GDB was configured as "x86_64-redhat-linux-gnu".
Type "show configuration" for configuration details.
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>.
Find the GDB manual and other documentation resources online at:
    <http://www.gnu.org/software/gdb/documentation/>.

For help, type "help".
Type "apropos word" to search for commands related to "word"...
Reading symbols from ./bin/test_cmerge...
(gdb) r
Starting program: /home/mpranj/workspace/libelektra/build/bin/test_cmerge 
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
CMERGE       TESTS
==================

Executing testValuesWithGivenLength with size 59

Program received signal SIGSEGV, Segmentation fault.
0x0000000000000000 in ?? ()
(gdb) q

Saya telah memverifikasi bahwa #ifndef CMERGE_ON_LINUX adalah akar masalah di sistem saya, tetapi saya tidak punya waktu untuk membuat tambalan portabel untuk itu.

@ Chemin1 terima kasih telah mengerjakannya!

@ Chemin1 terima kasih telah memperbaikinya begitu cepat. Saya dapat mengonfirmasi bahwa ini berfungsi untuk saya sekarang.

Terima kasih telah mengujinya, @mpranj !

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

dominicjaeger picture dominicjaeger  ·  3Komentar

markus2330 picture markus2330  ·  3Komentar

markus2330 picture markus2330  ·  3Komentar

markus2330 picture markus2330  ·  3Komentar

markus2330 picture markus2330  ·  4Komentar