git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Re: Segmentation fault with latest git (070c57df)

From
JHJongman Heo <jongman.heo@samsung.com>
Date
Jan 31, 2013, 07:27 UTC
Message-ID
<15825158.309231359617223702.JavaMail.weblogic@epml26>
On Thu, Jan 31, 2013 at 7:49 AM, Jeff King wrote:
Show 25 quoted lines
> On Thu, Jan 31, 2013 at 01:35:21AM +0000, Jongman Heo wrote:
>
>> Looks like following commit causes a segmentation fault in my machine
>> (when running git pull or git fetch);
>>
>> commit 8dd5afc926acb9829ebf56e9b78826a5242cd638
>> Author: Junio C Hamano 
>> Date:   Mon Jan 7 12:24:55 2013 -0800
>>
>>     string-list: allow case-insensitive string list
>>
>>
>> In my case, list->cmp (at get_entry_index() function) has an invalid
>> address, obviously not an address of string comparision function,
>> instead it points to 1.
>
> Can you show us a stack trace? The string-list functions are generic and
> get called in a lot of places. It would be useful to know which list is
> causing the problem.
>
> -Peff
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
Hi,
FYI, gdb backtrace and valgrind output attached below, Thanks.

(gdb) run fetch Starting program: /home/hjongman/repos/git/git fetch warning: .dynamic section for "/lib/libc.so.6" is not at the expected address warning: difference appears to be caused by prelink, adjusting expectations [Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x00000001 in ?? ()
(gdb) bt
#0  0x00000001 in ?? ()
#1  0x0812b457 in get_entry_index (list=0xbfffe7c0, string=0x821ec3c "refs/remotes/origin/HEAD", exact_match=0xbfffe568)
    at string-list.c:14
#2  0x0812bd60 in add_entry (list=0xbfffe7c0, insert_at=-1, string=0x821ec3c "refs/remotes/origin/HEAD") at string-list.c:33
#3  string_list_insert_at_index (list=0xbfffe7c0, insert_at=-1, string=0x821ec3c "refs/remotes/origin/HEAD") at string-list.c:63
#4  0x0812bda0 in string_list_insert (list=0xbfffe7c0, string=0x821ec3c "refs/remotes/origin/HEAD") at string-list.c:57
#5  0x08071838 in add_existing (refname=0x821ec3c "refs/remotes/origin/HEAD", 
    sha1=0x821ec14 "\a\fW\337B\352N\255\314C\320Em\021E`\022C&", <incomplete sequence \303>, flag=1, cbdata=0xbfffe7c0)
    at builtin/fetch.c:570
#6  0x0810af97 in do_one_ref (base=<value optimized out>, fn=0x8071820 <add_existing>, trim=0, flags=<value optimized out>, 
    cb_data=0xbfffe7c0, entry=0x821ec10) at refs.c:525
#7  0x0810bd9f in do_for_each_ref_in_dirs (dir1=0x8215d54, dir2=0x821ea44, base=0x814f9ff "", fn=0x8071820 <add_existing>, trim=0, 
    flags=0, cb_data=0xbfffe7c0) at refs.c:627
#8  0x0810bc8e in do_for_each_ref_in_dirs (dir1=0x8215cac, dir2=0x8226954, base=0x814f9ff "", fn=0x8071820 <add_existing>, trim=0, 
    flags=0, cb_data=0xbfffe7c0) at refs.c:597
#9  0x0810bc8e in do_for_each_ref_in_dirs (dir1=0x8215c0c, dir2=0x8215a54, base=0x814f9ff "", fn=0x8071820 <add_existing>, trim=0, 
    flags=0, cb_data=0xbfffe7c0) at refs.c:597
#10 0x0810bc8e in do_for_each_ref_in_dirs (dir1=0x8215a1c, dir2=0x821862c, base=0x814f9ff "", fn=0x8071820 <add_existing>, trim=0, 
    flags=0, cb_data=0xbfffe7c0) at refs.c:597
#11 0x0810c304 in do_for_each_ref (submodule=<value optimized out>, base=0x814f9ff "", fn=0x8071820 <add_existing>, trim=0, flags=0, 
    cb_data=0xbfffe7c0) at refs.c:1295
#12 0x0810c63b in for_each_ref (fn=0x8071820 <add_existing>, cb_data=0xbfffe7c0) at refs.c:1343
#13 0x0807390a in do_fetch (remote=<value optimized out>, argc=0, argv=0xbfffe9f8) at builtin/fetch.c:699
#14 fetch_one (remote=<value optimized out>, argc=0, argv=0xbfffe9f8) at builtin/fetch.c:949
#15 0x08074251 in cmd_fetch (argc=1, argv=0xbfffe9f8, prefix=0x0) at builtin/fetch.c:992
#16 0x0804b60b in run_builtin (argc=1, argv=0xbfffe9f8) at git.c:281
#17 handle_internal_command (argc=1, argv=0xbfffe9f8) at git.c:443
#18 0x0804ba51 in run_argv (argc=1, argv=0xbfffe9f8) at git.c:489
#19 main (argc=1, argv=0xbfffe9f8) at git.c:564

$ valgrind git fetch ==2195== Memcheck, a memory error detector ==2195== Copyright (C) 2002-2009, and GNU GPL'd, by Julian Seward et al. ==2195== Using Valgrind-3.5.0 and LibVEX; rerun with -h for copyright info ==2195== Command: git fetch ==2195== ==2195== Conditional jump or move depends on uninitialised value(s) ==2195== at 0x812B41F: get_entry_index (string-list.c:10) ==2195== by 0x812BD5F: string_list_insert_at_index (string-list.c:33) ==2195== by 0x812BD9F: string_list_insert (string-list.c:57) ==2195== by 0x8071837: add_existing (fetch.c:570) ==2195== by 0x810AF96: do_one_ref (refs.c:525) ==2195== by 0x810BB20: do_for_each_ref_in_dir (refs.c:551) ==2195== by 0x810BD34: do_for_each_ref_in_dirs (refs.c:623) ==2195== by 0x810BC8D: do_for_each_ref_in_dirs (refs.c:597) ==2195== by 0x810C303: do_for_each_ref (refs.c:1295) ==2195== by 0x810C63A: for_each_ref (refs.c:1343) ==2195== by 0x8073909: fetch_one (fetch.c:699) ==2195== by 0x8074250: cmd_fetch (fetch.c:992) ==2195== ==2195== Use of uninitialised value of size 4 ==2195== at 0x812B454: get_entry_index (string-list.c:14) ==2195== by 0x812BD5F: string_list_insert_at_index (string-list.c:33) ==2195== by 0x812BD9F: string_list_insert (string-list.c:57) ==2195== by 0x8071837: add_existing (fetch.c:570) ==2195== by 0x810AF96: do_one_ref (refs.c:525) ==2195== by 0x810BD9E: do_for_each_ref_in_dirs (refs.c:627) ==2195== by 0x810BC8D: do_for_each_ref_in_dirs (refs.c:597) ==2195== by 0x810BC8D: do_for_each_ref_in_dirs (refs.c:597) ==2195== by 0x810BC8D: do_for_each_ref_in_dirs (refs.c:597) ==2195== by 0x810C303: do_for_each_ref (refs.c:1295) ==2195== by 0x810C63A: for_each_ref (refs.c:1343) ==2195== by 0x8073909: fetch_one (fetch.c:699) ==2195== ==2195== ==2195== Process terminating with default action of signal 11 (SIGSEGV) ==2195== Access not within mapped region at address 0x0 ==2195== at 0x1: ??? ==2195== by 0x812BD5F: string_list_insert_at_index (string-list.c:33) ==2195== by 0x812BD9F: string_list_insert (string-list.c:57) ==2195== by 0x8071837: add_existing (fetch.c:570) ==2195== by 0x810AF96: do_one_ref (refs.c:525) ==2195== by 0x810BD9E: do_for_each_ref_in_dirs (refs.c:627) ==2195== by 0x810BC8D: do_for_each_ref_in_dirs (refs.c:597) ==2195== by 0x810BC8D: do_for_each_ref_in_dirs (refs.c:597) ==2195== by 0x810BC8D: do_for_each_ref_in_dirs (refs.c:597) ==2195== by 0x810C303: do_for_each_ref (refs.c:1295) ==2195== by 0x810C63A: for_each_ref (refs.c:1343) ==2195== by 0x8073909: fetch_one (fetch.c:699) ==2195== If you believe this happened as a result of a stack ==2195== overflow in your program's main thread (unlikely but ==2195== possible), you can try to increase the size of the ==2195== main thread stack using the --main-stacksize= flag. ==2195== The main thread stack size used in this run was 10485760. ==2195== ==2195== HEAP SUMMARY: ==2195== in use at exit: 325,604 bytes in 3,579 blocks ==2195== total heap usage: 3,687 allocs, 108 frees, 518,058 bytes allocated ==2195== ==2195== LEAK SUMMARY: ==2195== definitely lost: 72 bytes in 2 blocks ==2195== indirectly lost: 0 bytes in 0 blocks ==2195== possibly lost: 31,347 bytes in 460 blocks ==2195== still reachable: 294,185 bytes in 3,117 blocks ==2195== suppressed: 0 bytes in 0 blocks ==2195== Rerun with --leak-check=full to see details of leaked memory ==2195== ==2195== For counts of detected and suppressed errors, rerun with: -v ==2195== Use --track-origins=yes to see where uninitialised values come from ==2195== ERROR SUMMARY: 3 errors from 2 contexts (suppressed: 17 from 8) Segmentation fault

Next: Jeff King
Message 1 of 4 in “Re: Re: Segmentation fault with latest git (070c57df)”
  1. Jongman HeoJan 31, 2013
  2. Jeff KingJan 31, 2013
  3. Thomas RastJan 31, 2013
  4. Jeff KingJan 31, 2013

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.