Libelektra: cmerge: segfault

Criado em 15 nov. 2019  ·  7Comentários  ·  Fonte: ElektraInitiative/libelektra

Etapas para reproduzir o problema

Configure e crie libelektra.

make run all

resultado esperado

Todos os testes foram bem-sucedidos.

Resultado atual

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

Informação do sistema

  • Versão Elektra: mestre
  • Fedora 31

Mais arquivos de log e saída

cmerge.txt

bug

Comentários muito úteis

@ Chemin1, obrigado por consertar isso tão rapidamente. Posso confirmar que agora funciona para mim.

Todos 7 comentários

Eu tenho libgit2 0.28.3 no linux e isso não funciona. Remover a verificação CMERGE_ON_LINUX no código corrige o segfault.
https://github.com/ElektraInitiative/libelektra/blob/4ee9617186fe053107530624b27ff2825478f257/src/libs/merge/kdbmerge.c#L991

Obrigado por denunciar este problema!

Definitivamente, devemos corrigir isso antes de 0.9.1. Talvez simplesmente desabilitando libgit2 neste caso.

@mpranj você também pode postar a saída gdb, a saída valgrind não é tão útil.

Aposto que é sobre LibGit. A biblioteca deve ser inicializada com git_libgit2_init () de acordo com sua documentação.

Quando não inicializamos LibGit em todo o Linux no servidor de compilação, não obtemos vazamentos de memória. Se inicializarmos, o faremos. No entanto, se não inicializarmos para as compilações do FreeBSD, obteremos segfaults. Esta é a razão pela qual esses ifdefs estranhos existem. Eu também fiz meu primeiro post Stackoverflow sobre isso.

Esperançosamente, o nº 3221 corrige isso.

A saída Gdb também não é muito útil. Não tenho certeza do porque, eu tenho os símbolos de depuração das bibliotecas e é uma compilação de depuração de 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

Eu verifiquei que #ifndef CMERGE_ON_LINUX é a causa raiz em meu sistema, mas não tive tempo de fazer um patch portátil para ele.

@ Chemin1, obrigado por trabalhar nisso!

@ Chemin1, obrigado por consertar isso tão rapidamente. Posso confirmar que agora funciona para mim.

Obrigado por testá-lo, @mpranj !

Esta página foi útil?
0 / 5 - 0 avaliações

Questões relacionadas

sanssecours picture sanssecours  ·  36Comentários

markus2330 picture markus2330  ·  585Comentários

markus2330 picture markus2330  ·  27Comentários

haraldg picture haraldg  ·  65Comentários

markus2330 picture markus2330  ·  49Comentários