git-rebase v2.26.2 - "--root --empty drop" doesn't work and "--root --fork-point $somegibberish" gets SIGSEGV

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Dear *,

AFAIS there are (at least) two bugs in git-rebase at the moment.
Those findings below occured on a simple branch, without an upstream.

If you wish to rebase history and drop all empty commits, e.g.
    git rebase --root --empty drop
those empty commits are still in place after the operation comletes.
With git v2.14.xx this operation ("--drop-empty") drops those empty
commits as expected.
Is there a new option to be used here or something?
Or is it just broken?


As I've experimented with some new options for the above command,
it seems that user input checking isn't done properly for "--fork-point".
I've tried
    git rebase --root --empty drop --fork-point --rebase-merges
(yes, --fork-point usage is wrong here) and got
    Segmentation fault (core dumped)

A colleague of mine looked into this:
    $ gdb /bin/git                                                                                                                                         
    (gdb) set args rebase --root --empty drop --fork-point --rebase-merges
    (gdb) run                                                                                                                                              
    Starting program: /bin/git rebase --root --empty drop --fork-point --rebase-merges                                                                     
    [Thread debugging using libthread_db enabled]                                                                                                          
    Using host libthread_db library "/lib64/libthread_db.so.1".                                                                                            
                                                                                                                                                           
    Program received signal SIGSEGV, Segmentation fault.                                                                                                   
    is_per_worktree_ref (refname=0x0) at refs.c:725                                                                                                        
    725                     starts_with(refname, "refs/bisect/") ||                                                                                        
    Missing separate debuginfos, use: debuginfo-install glibc-2.17-292.el7.x86_64 pcre-8.32-17.el7.x86_64 zlib-1.2.7-18.el7.x86_64                         
    (gdb) bt                                                                                                                                               
    #0  is_per_worktree_ref (refname=0x0) at refs.c:725                                                                                                    
    #1  ref_type (refname=refname@entry=0x0) at refs.c:760                                                                                                 
    #2  0x00000000005739c9 in files_reflog_path (refs=0x90ce30, sb=0x7fffffffc5e0, refname=0x0) at refs/files-backend.c:176                                
    #3  0x000000000057402a in files_for_each_reflog_ent (ref_store=<optimized out>, refname=0x0, fn=0x4d4d20 <collect_one_reflog_ent>, cb_data=0x7fffffffc640)
        at refs/files-backend.c:2060                                                                                                                       
    #4  0x00000000004d4f4b in get_fork_point (refname=0x0, commit=0x91cff0) at commit.c:933                                                                
    #5  0x0000000000475e69 in cmd_rebase (argc=0, argv=0x7fffffffdd20, prefix=<optimized out>) at builtin/rebase.c:2082                                    
    #6  0x0000000000406cd0 in run_builtin (argv=0x7fffffffdd20, argc=6, p=0x8b3f40 <commands+2016>) at git.c:444                                           
    #7  handle_builtin (argc=6, argv=argv@entry=0x7fffffffdd20) at git.c:674                                                                               
    #8  0x0000000000407bee in run_argv (argv=0x7fffffffda80, argcp=0x7fffffffda8c) at git.c:741                                                            
    #9  cmd_main (argc=6, argc@entry=7, argv=0x7fffffffdd20, argv@entry=0x7fffffffdd18) at git.c:872                                                       
    #10 0x0000000000406910 in main (argc=7, argv=0x7fffffffdd18) at common-main.c:52                                                                       
    (gdb) list                                                                                                                                             
    720                                                                                                                                                    
    721     static int is_per_worktree_ref(const char *refname)                                                                                            
    722     {                                                                                                                                              
    723             return !strcmp(refname, "HEAD") ||                                                                                                     
    724                     starts_with(refname, "refs/worktree/") ||                                                                                      
    725                     starts_with(refname, "refs/bisect/") ||                                                                                        
    726                     starts_with(refname, "refs/rewritten/");                                                                                       
    727     }                                                                                                                                              
    728                                                                                                                                                    
    729     static int is_pseudoref_syntax(const char *refname)                                                                                            
    (gdb)


With kind regards,
    Alex




[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]

  Powered by Linux