Libelektra: cmerge: segfault

Erstellt am 15. Nov. 2019  ·  7Kommentare  ·  Quelle: ElektraInitiative/libelektra

Schritte zum Reproduzieren des Problems

Konfigurieren und machen Sie Verleumdung.

make run all

erwartetes Ergebnis

Alle Tests sind erfolgreich.

Tatsächliche Ergebnis

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

System Information

  • Elektra Version: Meister
  • Fedora 31

Weitere Protokolldateien und Ausgabe

cmerge.txt

bug

Hilfreichster Kommentar

@ Chemin1 danke, dass du es so schnell

Alle 7 Kommentare

Ich habe libgit2 0.28.3 unter Linux und das funktioniert nicht. Durch Entfernen der CMERGE_ON_LINUX-Prüfung im Code wird der Segfault behoben.
https://github.com/ElektraInitiative/libelektra/blob/4ee9617186fe053107530624b27ff2825478f257/src/libs/merge/kdbmerge.c#L991

Vielen Dank, dass Sie dieses Problem gemeldet haben!

Wir sollten dies definitiv vor 0.9.1 beheben. Vielleicht durch einfaches Deaktivieren von libgit2 in diesem Fall.

@mpranj kannst du auch die gdb ausgabe posten, die valgrind ausgabe ist nicht so hilfreich.

Ich wette, es geht um LibGit. Die Bibliothek sollte gemäß ihrer Dokumentation mit git_libgit2_init () initialisiert werden.

Wenn LibGit nicht unter Linux auf dem Build-Server initialisiert wird, treten keine Speicherlecks auf. Wenn wir initialisieren, tun wir es. Wenn wir jedoch nicht für die FreeBSD-Builds initialisieren, erhalten wir Segfaults. Dies ist der Grund, warum diese seltsamen ifdefs existieren. Ich habe auch meinen ersten Stackoverflow-Beitrag dazu gemacht.

Hoffentlich behebt # 3221 dies.

Gdb-Ausgabe ist auch nicht sehr hilfreich. Ich bin mir nicht sicher warum, ich habe die Debug-Symbole der Bibliotheken und es ist ein Debug-Build von 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

Ich habe überprüft, dass #ifndef CMERGE_ON_LINUX die Hauptursache auf meinem System ist, aber ich hatte keine Zeit, einen tragbaren Patch dafür zu erstellen.

@ Chemin1 danke für die Arbeit daran!

@ Chemin1 danke, dass du es so schnell

Danke, dass du es getestet hast,

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen

Verwandte Themen

KurtMi picture KurtMi  ·  85Kommentare

sanssecours picture sanssecours  ·  36Kommentare

markus2330 picture markus2330  ·  28Kommentare

markus2330 picture markus2330  ·  38Kommentare

markus2330 picture markus2330  ·  28Kommentare