unofficial mirror of guix-devel@gnu.org 
 help / color / mirror / code / Atom feed
From: Magali <magalilemes00@gmail.com>
To: "Ludovic Courtès" <ludo@gnu.org>
Cc: Guix Devel <guix-devel@gnu.org>, Mathieu Othacehe <othacehe@gnu.org>
Subject: Re: [outreachy] Walk through the Git history (guix git {authenticate,log})
Date: Sat, 19 Dec 2020 00:18:18 -0300	[thread overview]
Message-ID: <4789d1fe-5cc0-e0e6-f546-6bc0acd77f04@gmail.com> (raw)
In-Reply-To: <87sg839lge.fsf@gnu.org>

Hi!

On 18/12/2020 12:34, Ludovic Courtès wrote:
> Hi Magali,
>
> Magali <magalilemes00@gmail.com> skribis:
>
>> scheme@(guix-user)> (let* ((repo (repository-open cache))
>>          (latest-commit
>>           (commit-lookup repo (reference-target (repository-head repo)))))
>>     (let loop ((commit latest-commit)
>>                (res (list latest-commit)))
>>       (match (commit-parents commit)
>>              (() (reverse res))
>>              ((head . tail)
>>               (loop head (cons head res))))))
>> Segmentation fault (core dumped)
> I can reproduce the bug; the C backtrace looks like this:
>
> --8<---------------cut here---------------start------------->8---
> (gdb) bt
> #0  0x00007fabfa9d31ee in git_oidmap_get ()
>    from /gnu/store/zchrrs2zf4l06cszbadqsk18329q78sg-libgit2-1.1.0/lib/libgit2.so
> #1  0x00007fabfa98d516 in cache_get () from /gnu/store/zchrrs2zf4l06cszbadqsk18329q78sg-libgit2-1.1.0/lib/libgit2.so
> #2  0x00007fabfa9cbef7 in git_object_lookup_prefix ()
>    from /gnu/store/zchrrs2zf4l06cszbadqsk18329q78sg-libgit2-1.1.0/lib/libgit2.so
> #3  0x00007fac01b8866d in ffi_call_unix64 ()
>    from /gnu/store/bw15z9kh9c65ycc2vbhl2izwfwfva7p1-libffi-3.3/lib/libffi.so.7
> #4  0x00007fac01b86ac0 in ffi_call_int () from /gnu/store/bw15z9kh9c65ycc2vbhl2izwfwfva7p1-libffi-3.3/lib/libffi.so.7
> #5  0x00007fac01e54f2e in scm_i_foreign_call (cif_scm=<optimized out>, pointer_scm=<optimized out>, 
>     errno_ret=errno_ret@entry=0x7ffe5fc1f95c, argv=0x7fabfe2e4980) at foreign.c:1073
> #6  0x00007fac01ec3a84 in foreign_call (thread=0x7fac014a8d80, cif=<optimized out>, pointer=<optimized out>)
>     at vm.c:1282
> --8<---------------cut here---------------end--------------->8---
>
> Could it be that, if you keep ‘repo’ in a global variable like in the
> example zimoun posted, segfault no longer occurs?

Yes, this seems to work just fine.


> I believe that what happens is a bug in Guile-Git: ‘repo’ is “finalized”
> (freed) before Guile inspects the commit objects to print them, and when
> Guile gets around to printing those commit objects, they now refer to a
> repo that has been freed, hence the crash.
>
> Until the bug is fixed, the workaround is to arrange your code so that
> the repository object outlives commit objects.  We can discuss this
> further here or on IRC if you want.

Nice! Thanks.


> Hope this helps!

It sure did :-)


Magali




  reply	other threads:[~2020-12-19  3:18 UTC|newest]

Thread overview: 12+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2020-12-11 17:41 [outreachy] Walk through the Git history (guix git {authenticate, log}) zimoun
2020-12-11 19:01 ` [outreachy] Walk through the Git history (guix git {authenticate,log}) Magali
2020-12-12 12:24   ` zimoun
2020-12-12 17:24     ` Magali
2020-12-12 17:49       ` [outreachy] Walk through the Git history zimoun
2020-12-14 10:20         ` Ludovic Courtès
2020-12-15 15:20     ` [outreachy] Walk through the Git history (guix git {authenticate,log}) Magali
2020-12-16  9:35       ` zimoun
2020-12-18 15:34       ` Ludovic Courtès
2020-12-19  3:18         ` Magali [this message]
2020-12-12  8:42 ` Mathieu Othacehe
2020-12-12 12:10   ` zimoun

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

  List information: https://guix.gnu.org/

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4789d1fe-5cc0-e0e6-f546-6bc0acd77f04@gmail.com \
    --to=magalilemes00@gmail.com \
    --cc=guix-devel@gnu.org \
    --cc=ludo@gnu.org \
    --cc=othacehe@gnu.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/guix.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).