Loading ...
Sorry, an error occurred while loading the content.

Re: Patch 7.3.715

Expand Messages
  • Ike Devolder
    ... When i m back at home i ll try to find a way to reproduce this problem consistently. I ve had segfaults in many occasions but I dont yet have a pattern to
    Message 1 of 16 , Nov 22, 2012
    • 0 Attachment
      On Thu, Nov 22, 2012 at 09:08:48AM +0100, Christian Brabandt wrote:
      > On Thu, November 22, 2012 08:47, Ike Devolder wrote:
      > [Patch 7.3.315]
      > > Anyone else having issues with this patch ?
      > >
      > > In my day to day work i use vim in combination with syntastic to do some
      > > linting for me. Since this patch i have frequent segfaults when
      > > syntastic kicks in. It seems related to this patch, maybe not immediatly
      > > due to setloclist itself but something related with quickfix.
      > >
      > > I'm sorry but atm i have no idea where to search.
      > >
      > > For now i'm stuck on 7.3.714 since that version can keep me working all
      > > day long.
      > >
      > > some output:
      > > --- start terminal output ---
      > > vim
      > > Vim: fataal signaal gevangen SEGV
      > >
      > > Vim: Finished.
      > > Segmentatiefout
      > > --- end terminal output ---
      >
      > It would help, if you can craft a reproducible example. I have no idea,
      > what syntastic is doing.
      >
      > regards,
      > Christian
      >
      > --
      > You received this message from the "vim_dev" maillist.
      > Do not top-post! Type your reply below the text you are replying to.
      > For more information, visit http://www.vim.org/maillist.php

      When i'm back at home i'll try to find a way to reproduce this problem
      consistently. I've had segfaults in many occasions but I dont yet have a
      pattern to make sure the segfault happens.

      I'm also not sure the problem lies in the patch itself but it was the
      trigger.

      --
      Ike

      --
      You received this message from the "vim_dev" maillist.
      Do not top-post! Type your reply below the text you are replying to.
      For more information, visit http://www.vim.org/maillist.php
    • Ike Devolder
      ... i attach a minimum configuration + testfile where i have consistent segfaults on. within the archive you can find index.php, it has a syntax error, the
      Message 2 of 16 , Nov 22, 2012
      • 0 Attachment
        On Thu, Nov 22, 2012 at 03:08:14PM +0100, Ike Devolder wrote:
        > On Thu, Nov 22, 2012 at 09:08:48AM +0100, Christian Brabandt wrote:
        > > On Thu, November 22, 2012 08:47, Ike Devolder wrote:
        > > [Patch 7.3.315]
        > > > Anyone else having issues with this patch ?
        > > >
        > > > In my day to day work i use vim in combination with syntastic to do some
        > > > linting for me. Since this patch i have frequent segfaults when
        > > > syntastic kicks in. It seems related to this patch, maybe not immediatly
        > > > due to setloclist itself but something related with quickfix.
        > > >
        > > > I'm sorry but atm i have no idea where to search.
        > > >
        > > > For now i'm stuck on 7.3.714 since that version can keep me working all
        > > > day long.
        > > >
        > > > some output:
        > > > --- start terminal output ---
        > > > vim
        > > > Vim: fataal signaal gevangen SEGV
        > > >
        > > > Vim: Finished.
        > > > Segmentatiefout
        > > > --- end terminal output ---
        > >
        > > It would help, if you can craft a reproducible example. I have no idea,
        > > what syntastic is doing.
        > >
        > > regards,
        > > Christian
        > >
        > > --
        > > You received this message from the "vim_dev" maillist.
        > > Do not top-post! Type your reply below the text you are replying to.
        > > For more information, visit http://www.vim.org/maillist.php
        >
        > When i'm back at home i'll try to find a way to reproduce this problem
        > consistently. I've had segfaults in many occasions but I dont yet have a
        > pattern to make sure the segfault happens.
        >
        > I'm also not sure the problem lies in the patch itself but it was the
        > trigger.
        >
        > --
        > Ike

        i attach a minimum configuration + testfile where i have consistent
        segfaults on.

        within the archive you can find index.php, it has a syntax error, the
        following steps lead to segfault:

        vim index.php
        - :w (with the syntax error, syntastic kicks in)
        - goto end of phpinfo() and add ; :w (error is gone)
        - undo u
        - :w -> segfault

        uname -a:
        Linux 3.6.7 #1 SMP PREEMPT Sun Nov 18 09:53:58 CET 2012 x86_64 GNU/Linux
        distribution Arch Linux

        configure:
        ./configure --prefix=/usr --localstatedir=/var/lib/vim \
        --mandir=/usr/share/man --with-compiledby=BlackEagle \
        --with-features=huge --enable-gpm --enable-acl --with-x=no \
        --disable-gui --enable-multibyte --enable-cscope \
        --disable-netbeans --enable-perlinterp=dynamic \
        --enable-pythoninterp=dynamic --enable-python3interp=dynamic \
        --enable-rubyinterp=dynamic --enable-luainterp=dynamic

        now tested with version 7.3.725, first noticed with 7.3.718 and then
        detected that the problem went away when going back to 7.3.714

        to be able to build ruby dynamic on my machine i also needed the patch
        of Ken Takata in the 7.3.721 thread:
        https://groups.google.com/forum/?fromgroups=#!topic/vim_dev/-pxkvVyWZdo

        thx for looking into this

        --
        Ike

        --
        You received this message from the "vim_dev" maillist.
        Do not top-post! Type your reply below the text you are replying to.
        For more information, visit http://www.vim.org/maillist.php
      • Ike Devolder
        ... ok i forgot on pre-requisite: you must have php installed so the syntastic plugin can run php -l to get the syntax error showing. --Ike -- You received
        Message 3 of 16 , Nov 22, 2012
        • 0 Attachment
          Op donderdag 22 november 2012 20:24:40 schreef u:
          > On Thu, Nov 22, 2012 at 03:08:14PM +0100, Ike Devolder wrote:
          > > On Thu, Nov 22, 2012 at 09:08:48AM +0100, Christian Brabandt wrote:
          > > > On Thu, November 22, 2012 08:47, Ike Devolder wrote:
          > > > [Patch 7.3.315]
          > > >
          > > > > Anyone else having issues with this patch ?
          > > > >
          > > > > In my day to day work i use vim in combination with syntastic to do
          > > > > some
          > > > > linting for me. Since this patch i have frequent segfaults when
          > > > > syntastic kicks in. It seems related to this patch, maybe not
          > > > > immediatly
          > > > > due to setloclist itself but something related with quickfix.
          > > > >
          > > > > I'm sorry but atm i have no idea where to search.
          > > > >
          > > > > For now i'm stuck on 7.3.714 since that version can keep me working
          > > > > all
          > > > > day long.
          > > > >
          > > > > some output:
          > > > > --- start terminal output ---
          > > > > vim
          > > > > Vim: fataal signaal gevangen SEGV
          > > > >
          > > > > Vim: Finished.
          > > > > Segmentatiefout
          > > > > --- end terminal output ---
          > > >
          > > > It would help, if you can craft a reproducible example. I have no idea,
          > > > what syntastic is doing.
          > > >
          > > > regards,
          > > > Christian
          > >
          > > When i'm back at home i'll try to find a way to reproduce this problem
          > > consistently. I've had segfaults in many occasions but I dont yet have a
          > > pattern to make sure the segfault happens.
          > >
          > > I'm also not sure the problem lies in the patch itself but it was the
          > > trigger.
          >
          > i attach a minimum configuration + testfile where i have consistent
          > segfaults on.
          >
          > within the archive you can find index.php, it has a syntax error, the
          > following steps lead to segfault:
          >
          > vim index.php
          > - :w (with the syntax error, syntastic kicks in)
          > - goto end of phpinfo() and add ; :w (error is gone)
          > - undo u
          > - :w -> segfault
          >
          > uname -a:
          > Linux 3.6.7 #1 SMP PREEMPT Sun Nov 18 09:53:58 CET 2012 x86_64 GNU/Linux
          > distribution Arch Linux
          >
          > configure:
          > ./configure --prefix=/usr --localstatedir=/var/lib/vim \
          > --mandir=/usr/share/man --with-compiledby=BlackEagle \
          > --with-features=huge --enable-gpm --enable-acl --with-x=no \
          > --disable-gui --enable-multibyte --enable-cscope \
          > --disable-netbeans --enable-perlinterp=dynamic \
          > --enable-pythoninterp=dynamic --enable-python3interp=dynamic \
          > --enable-rubyinterp=dynamic --enable-luainterp=dynamic
          >
          > now tested with version 7.3.725, first noticed with 7.3.718 and then
          > detected that the problem went away when going back to 7.3.714
          >
          > to be able to build ruby dynamic on my machine i also needed the patch
          > of Ken Takata in the 7.3.721 thread:
          > https://groups.google.com/forum/?fromgroups=#!topic/vim_dev/-pxkvVyWZdo
          >
          > thx for looking into this

          ok i forgot on pre-requisite: you must have php installed so the syntastic
          plugin can run php -l to get the syntax error showing.

          --Ike

          --
          You received this message from the "vim_dev" maillist.
          Do not top-post! Type your reply below the text you are replying to.
          For more information, visit http://www.vim.org/maillist.php
        • Dominique Pellé
          ... Hi Ike I can reproduce the crash using your description with Vim-7.3.725 on Linux x86_64. Valgrind gives the following error: ==6815== Invalid read of size
          Message 4 of 16 , Nov 22, 2012
          • 0 Attachment
            Ike Devolder wrote:

            >> i attach a minimum configuration + testfile where i have consistent
            >> segfaults on.
            >>
            >> within the archive you can find index.php, it has a syntax error, the
            >> following steps lead to segfault:
            >>
            >> vim index.php
            >> - :w (with the syntax error, syntastic kicks in)
            >> - goto end of phpinfo() and add ; :w (error is gone)
            >> - undo u
            >> - :w -> segfault
            >>
            >> uname -a:
            >> Linux 3.6.7 #1 SMP PREEMPT Sun Nov 18 09:53:58 CET 2012 x86_64 GNU/Linux
            >> distribution Arch Linux
            >>
            >> configure:
            >> ./configure --prefix=/usr --localstatedir=/var/lib/vim \
            >> --mandir=/usr/share/man --with-compiledby=BlackEagle \
            >> --with-features=huge --enable-gpm --enable-acl --with-x=no \
            >> --disable-gui --enable-multibyte --enable-cscope \
            >> --disable-netbeans --enable-perlinterp=dynamic \
            >> --enable-pythoninterp=dynamic --enable-python3interp=dynamic \
            >> --enable-rubyinterp=dynamic --enable-luainterp=dynamic
            >>
            >> now tested with version 7.3.725, first noticed with 7.3.718 and then
            >> detected that the problem went away when going back to 7.3.714
            >>
            >> to be able to build ruby dynamic on my machine i also needed the patch
            >> of Ken Takata in the 7.3.721 thread:
            >> https://groups.google.com/forum/?fromgroups=#!topic/vim_dev/-pxkvVyWZdo
            >>
            >> thx for looking into this
            >
            > ok i forgot on pre-requisite: you must have php installed so the syntastic
            > plugin can run php -l to get the syntax error showing.
            >
            > --Ike


            Hi Ike

            I can reproduce the crash using your description with
            Vim-7.3.725 on Linux x86_64.

            Valgrind gives the following error:

            ==6815== Invalid read of size 4
            ==6815== at 0x58ED64: ex_make (quickfix.c:2869)
            ==6815== by 0x4888F1: do_cmdline (ex_docmd.c:2677)
            ==6815== by 0x4468BF: call_func (eval.c:22540)
            ==6815== by 0x449722: get_func_tv (eval.c:8322)
            ==6815== by 0x46A24E: eval7 (eval.c:5158)
            ==6815== by 0x468F27: eval6 (eval.c:4810)
            ==6815== by 0x468A77: eval5 (eval.c:4626)
            ==6815== by 0x4682D0: eval4 (eval.c:4319)
            ==6815== by 0x468166: eval3 (eval.c:4231)
            ==6815== by 0x444AD4: eval1 (eval.c:4160)
            ==6815== by 0x4445D8: eval0 (eval.c:4042)
            ==6815== by 0x44769D: ex_let (eval.c:1897)
            ==6815== by 0x4888F1: do_cmdline (ex_docmd.c:2677)
            ==6815== by 0x4468BF: call_func (eval.c:22540)
            ==6815== by 0x449722: get_func_tv (eval.c:8322)
            ==6815== by 0x46A24E: eval7 (eval.c:5158)
            ==6815== by 0x468F27: eval6 (eval.c:4810)
            ==6815== by 0x468A77: eval5 (eval.c:4626)
            ==6815== by 0x4682D0: eval4 (eval.c:4319)
            ==6815== by 0x468166: eval3 (eval.c:4231)
            ==6815== by 0x444AD4: eval1 (eval.c:4160)
            ==6815== by 0x4445D8: eval0 (eval.c:4042)
            ==6815== by 0x44769D: ex_let (eval.c:1897)
            ==6815== by 0x4888F1: do_cmdline (ex_docmd.c:2677)
            ==6815== by 0x4468BF: call_func (eval.c:22540)
            ==6815== by 0x449722: get_func_tv (eval.c:8322)
            ==6815== by 0x448AFD: ex_call (eval.c:3465)
            ==6815== by 0x4888F1: do_cmdline (ex_docmd.c:2677)
            ==6815== by 0x4468BF: call_func (eval.c:22540)
            ==6815== by 0x449722: get_func_tv (eval.c:8322)
            ==6815== by 0x448AFD: ex_call (eval.c:3465)
            ==6815== by 0x4888F1: do_cmdline (ex_docmd.c:2677)
            ==6815== by 0x4BFFE4: apply_autocmds_group (fileio.c:9435)
            ==6815== by 0x4BAF27: buf_write (fileio.c:9049)
            ==6815== by 0x47355D: do_write (ex_cmds.c:2692)
            ==6815== by 0x4888F1: do_cmdline (ex_docmd.c:2677)
            ==6815== by 0x54D9DA: nv_colon (normal.c:5417)
            ==6815== by 0x543C95: normal_cmd (normal.c:1198)
            ==6815== by 0x685ADE: main_loop (main.c:1294)
            ==6815== by 0x6854EA: main (main.c:998)
            ==6815== Address 0x8 is not stack'd, malloc'd or (recently) free'd


            quickfix.c:

            2861 if (wp != NULL)
            2862 qi = GET_LOC_LIST(wp);
            2863 #ifdef FEAT_AUTOCMD
            2864 if (au_name != NULL)
            2865 {
            2866 apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
            2867 curbuf->b_fname,
            TRUE, curbuf);
            2868 if (qi->qf_curlist < qi->qf_listcount)
            2869 res = qi->qf_lists[qi->qf_curlist].qf_count;
            2870 else
            2871 res = 0;
            2872 }

            Printing a few pointers just before line quickfix.c:2868, I get this:

            *** wp=0xb4bf10 qi=0xdd76d0 wp->w_llist=0xdd76d0 wp->w_llist_ref=(nil)
            *** wp=0xb4bf10 qi=0xdd76d0 wp->w_llist=0xdd76d0 wp->w_llist_ref=(nil)
            *** wp=0xb4bf10 qi=0xdd76d0 wp->w_llist=0xdd76d0 wp->w_llist_ref=(nil)
            *** wp=0xb4bf10 qi=0xdd76d0 wp->w_llist=0xdd76d0 wp->w_llist_ref=(nil)
            *** wp=0xb4bf10 qi=(nil) wp->w_llist=(nil) wp->w_llist_ref=(nil)
            Vim: Caught deadly signal SEGV
            Vim: Finished.
            Segmentation fault (core dumped)

            I don't know yet why some pointers are NULL but perhaps someone
            can make sense of it.

            I don't need to do 'undo' to reproduce the crash. This also crashes:

            - vim index.php
            - :w (with the syntax error, syntastic kicks in)
            - goto end of phpinfo() and add ; :w (error is gone)
            - remove previously added ; (by pressing x on ; character in command mode)
            - :w to save again -> crash

            Regards
            -- Dominique

            --
            You received this message from the "vim_dev" maillist.
            Do not top-post! Type your reply below the text you are replying to.
            For more information, visit http://www.vim.org/maillist.php
          • Christian Brabandt
            Hi Dominique! ... […] ... I see. Try this patch: diff --git a/src/quickfix.c b/src/quickfix.c ... +++ b/src/quickfix.c @@ -2863,7 +2863,7 @@ {
            Message 5 of 16 , Nov 22, 2012
            • 0 Attachment
              Hi Dominique!

              On Do, 22 Nov 2012, Dominique Pellé wrote:

              > quickfix.c:
              >
              > 2861 if (wp != NULL)
              > 2862 qi = GET_LOC_LIST(wp);
              > 2863 #ifdef FEAT_AUTOCMD
              > 2864 if (au_name != NULL)
              > 2865 {
              > 2866 apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
              > 2867 curbuf->b_fname,
              > TRUE, curbuf);
              > 2868 if (qi->qf_curlist < qi->qf_listcount)
              > 2869 res = qi->qf_lists[qi->qf_curlist].qf_count;
              > 2870 else
              > 2871 res = 0;
              > 2872 }
              >
              […]
              > Vim: Caught deadly signal SEGV
              > Vim: Finished.
              > Segmentation fault (core dumped)
              >
              > I don't know yet why some pointers are NULL but perhaps someone
              > can make sense of it.

              I see. Try this patch:
              diff --git a/src/quickfix.c b/src/quickfix.c
              --- a/src/quickfix.c
              +++ b/src/quickfix.c
              @@ -2863,7 +2863,7 @@
              {
              apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
              curbuf->b_fname, TRUE, curbuf);
              - if (qi->qf_curlist < qi->qf_listcount)
              + if (qi != NULL && qi->qf_curlist < qi->qf_listcount)
              res = qi->qf_lists[qi->qf_curlist].qf_count;
              else
              res = 0;


              regards,
              Christian
              --
              Je mehr Leute es sind, die eine Sache glauben, desto größer ist die
              Wahrscheinlichkeit, daß die Ansicht falsch ist. Menschen, die Recht
              haben, stehen meistens allein.
              -- Søren Kierkegaard

              --
              You received this message from the "vim_dev" maillist.
              Do not top-post! Type your reply below the text you are replying to.
              For more information, visit http://www.vim.org/maillist.php
            • Dominique Pellé
              ... Hi Christian I can t tell whether that s the right fix, but I confirm that your proposed change avoids the crash at least. wp- w_llist was set to NULL at
              Message 6 of 16 , Nov 22, 2012
              • 0 Attachment
                Christian Brabandt <cblists@...> wrote:

                > Hi Dominique!
                >
                > On Do, 22 Nov 2012, Dominique Pellé wrote:
                >
                >> quickfix.c:
                >>
                >> 2861 if (wp != NULL)
                >> 2862 qi = GET_LOC_LIST(wp);
                >> 2863 #ifdef FEAT_AUTOCMD
                >> 2864 if (au_name != NULL)
                >> 2865 {
                >> 2866 apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
                >> 2867 curbuf->b_fname,
                >> TRUE, curbuf);
                >> 2868 if (qi->qf_curlist < qi->qf_listcount)
                >> 2869 res = qi->qf_lists[qi->qf_curlist].qf_count;
                >> 2870 else
                >> 2871 res = 0;
                >> 2872 }
                >>
                > […]
                >> Vim: Caught deadly signal SEGV
                >> Vim: Finished.
                >> Segmentation fault (core dumped)
                >>
                >> I don't know yet why some pointers are NULL but perhaps someone
                >> can make sense of it.
                >
                > I see. Try this patch:
                > diff --git a/src/quickfix.c b/src/quickfix.c
                > --- a/src/quickfix.c
                > +++ b/src/quickfix.c
                > @@ -2863,7 +2863,7 @@
                > {
                > apply_autocmds(EVENT_QUICKFIXCMDPOST, au_name,
                > curbuf->b_fname, TRUE, curbuf);
                > - if (qi->qf_curlist < qi->qf_listcount)
                > + if (qi != NULL && qi->qf_curlist < qi->qf_listcount)
                > res = qi->qf_lists[qi->qf_curlist].qf_count;
                > else
                > res = 0;
                >
                >
                > regards,
                > Christian

                Hi Christian

                I can't tell whether that's the right fix, but I confirm that
                your proposed change avoids the crash at least.

                wp->w_llist was set to NULL at line quickfix.c:914 which
                was introduced by chane 3918 according to hg annotate:

                911 vimboss 644: if (qi->qf_listcount == LISTCOUNT)
                912 vimboss 7: {
                913 bram 3918: if (wp != NULL && wp->w_llist == qi)
                914 bram 3918: wp->w_llist = NULL;
                915 vimboss 644: qf_free(qi, 0);

                ===
                changeset: 3918:4f0ddf4137ee
                tag: v7-3-715
                user: Bram Moolenaar <bram@...>
                date: Wed Nov 14 22:38:08 2012 +0100
                files: src/quickfix.c src/testdir/test49.ok
                src/testdir/test49.vim src/version.c
                description:
                updated for version 7.3.715
                Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin
                Szamotulski)
                Solution: Set w_llist to NULL when it was freed. Also add a test.
                (Christian Brabandt)
                ===

                I find it odd that a function called qf_new_list() clears
                wp->w_llist (set it to NULL) and does not set it back
                to something else. The name of the function "qf_new_list()"
                suggests that it should create another list, so perhaps
                it should set wp->w_llist to something else. But I don't
                understand the code here.

                Regards
                -- Dominique

                --
                You received this message from the "vim_dev" maillist.
                Do not top-post! Type your reply below the text you are replying to.
                For more information, visit http://www.vim.org/maillist.php
              • Christian Brabandt
                Hi Dominique! ... Indeed. I think GET_LOC_LIST should be defined as ll_get_or_alloc_list(wp) regards, Christian -- You received this message from the vim_dev
                Message 7 of 16 , Nov 23, 2012
                • 0 Attachment
                  Hi Dominique!

                  On Do, 22 Nov 2012, Dominique Pellé wrote:

                  > I can't tell whether that's the right fix, but I confirm that
                  > your proposed change avoids the crash at least.
                  >
                  > wp->w_llist was set to NULL at line quickfix.c:914 which
                  > was introduced by chane 3918 according to hg annotate:
                  >
                  > 911 vimboss 644: if (qi->qf_listcount == LISTCOUNT)
                  > 912 vimboss 7: {
                  > 913 bram 3918: if (wp != NULL && wp->w_llist == qi)
                  > 914 bram 3918: wp->w_llist = NULL;
                  > 915 vimboss 644: qf_free(qi, 0);
                  >
                  > ===
                  > changeset: 3918:4f0ddf4137ee
                  > tag: v7-3-715
                  > user: Bram Moolenaar <bram@...>
                  > date: Wed Nov 14 22:38:08 2012 +0100
                  > files: src/quickfix.c src/testdir/test49.ok
                  > src/testdir/test49.vim src/version.c
                  > description:
                  > updated for version 7.3.715
                  > Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin
                  > Szamotulski)
                  > Solution: Set w_llist to NULL when it was freed. Also add a test.
                  > (Christian Brabandt)
                  > ===
                  >
                  > I find it odd that a function called qf_new_list() clears
                  > wp->w_llist (set it to NULL) and does not set it back
                  > to something else. The name of the function "qf_new_list()"
                  > suggests that it should create another list, so perhaps
                  > it should set wp->w_llist to something else. But I don't
                  > understand the code here.

                  Indeed. I think GET_LOC_LIST should be defined as
                  ll_get_or_alloc_list(wp)

                  regards,
                  Christian

                  --
                  You received this message from the "vim_dev" maillist.
                  Do not top-post! Type your reply below the text you are replying to.
                  For more information, visit http://www.vim.org/maillist.php
                • Bram Moolenaar
                  ... ll_get_or_alloc_list() can still return NULL, thus your check is needed anyway. -- hundred-and-one symptoms of being an internet addict: 59. Your wife says
                  Message 8 of 16 , Nov 23, 2012
                  • 0 Attachment
                    Christian Brabandt wrote:

                    > Hi Dominique!
                    >
                    > On Do, 22 Nov 2012, Dominique Pellé wrote:
                    >
                    > > I can't tell whether that's the right fix, but I confirm that
                    > > your proposed change avoids the crash at least.
                    > >
                    > > wp->w_llist was set to NULL at line quickfix.c:914 which
                    > > was introduced by chane 3918 according to hg annotate:
                    > >
                    > > 911 vimboss 644: if (qi->qf_listcount == LISTCOUNT)
                    > > 912 vimboss 7: {
                    > > 913 bram 3918: if (wp != NULL && wp->w_llist == qi)
                    > > 914 bram 3918: wp->w_llist = NULL;
                    > > 915 vimboss 644: qf_free(qi, 0);
                    > >
                    > > ===
                    > > changeset: 3918:4f0ddf4137ee
                    > > tag: v7-3-715
                    > > user: Bram Moolenaar <bram@...>
                    > > date: Wed Nov 14 22:38:08 2012 +0100
                    > > files: src/quickfix.c src/testdir/test49.ok
                    > > src/testdir/test49.vim src/version.c
                    > > description:
                    > > updated for version 7.3.715
                    > > Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin
                    > > Szamotulski)
                    > > Solution: Set w_llist to NULL when it was freed. Also add a test.
                    > > (Christian Brabandt)
                    > > ===
                    > >
                    > > I find it odd that a function called qf_new_list() clears
                    > > wp->w_llist (set it to NULL) and does not set it back
                    > > to something else. The name of the function "qf_new_list()"
                    > > suggests that it should create another list, so perhaps
                    > > it should set wp->w_llist to something else. But I don't
                    > > understand the code here.
                    >
                    > Indeed. I think GET_LOC_LIST should be defined as
                    > ll_get_or_alloc_list(wp)

                    ll_get_or_alloc_list() can still return NULL, thus your check is needed
                    anyway.

                    --
                    hundred-and-one symptoms of being an internet addict:
                    59. Your wife says communication is important in a marriage...so you buy
                    another computer and install a second phone line so the two of you can
                    chat.

                    /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
                    /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
                    \\\ an exciting new programming language -- http://www.Zimbu.org ///
                    \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

                    --
                    You received this message from the "vim_dev" maillist.
                    Do not top-post! Type your reply below the text you are replying to.
                    For more information, visit http://www.vim.org/maillist.php
                  • Christian Brabandt
                    Hi Bram! ... It is still not right so. I ll look into it later. regards, Christian -- -- You received this message from the vim_dev maillist. Do not
                    Message 9 of 16 , Nov 23, 2012
                    • 0 Attachment
                      Hi Bram!

                      On Fr, 23 Nov 2012, Bram Moolenaar wrote:

                      >
                      > Christian Brabandt wrote:
                      >
                      > > Hi Dominique!
                      > >
                      > > On Do, 22 Nov 2012, Dominique Pellé wrote:
                      > >
                      > > > I can't tell whether that's the right fix, but I confirm that
                      > > > your proposed change avoids the crash at least.
                      > > >
                      > > > wp->w_llist was set to NULL at line quickfix.c:914 which
                      > > > was introduced by chane 3918 according to hg annotate:
                      > > >
                      > > > 911 vimboss 644: if (qi->qf_listcount == LISTCOUNT)
                      > > > 912 vimboss 7: {
                      > > > 913 bram 3918: if (wp != NULL && wp->w_llist == qi)
                      > > > 914 bram 3918: wp->w_llist = NULL;
                      > > > 915 vimboss 644: qf_free(qi, 0);
                      > > >
                      > > > ===
                      > > > changeset: 3918:4f0ddf4137ee
                      > > > tag: v7-3-715
                      > > > user: Bram Moolenaar <bram@...>
                      > > > date: Wed Nov 14 22:38:08 2012 +0100
                      > > > files: src/quickfix.c src/testdir/test49.ok
                      > > > src/testdir/test49.vim src/version.c
                      > > > description:
                      > > > updated for version 7.3.715
                      > > > Problem: Crash when calling setloclist() in BufUnload autocmd. (Marcin
                      > > > Szamotulski)
                      > > > Solution: Set w_llist to NULL when it was freed. Also add a test.
                      > > > (Christian Brabandt)
                      > > > ===
                      > > >
                      > > > I find it odd that a function called qf_new_list() clears
                      > > > wp->w_llist (set it to NULL) and does not set it back
                      > > > to something else. The name of the function "qf_new_list()"
                      > > > suggests that it should create another list, so perhaps
                      > > > it should set wp->w_llist to something else. But I don't
                      > > > understand the code here.
                      > >
                      > > Indeed. I think GET_LOC_LIST should be defined as
                      > > ll_get_or_alloc_list(wp)
                      >
                      > ll_get_or_alloc_list() can still return NULL, thus your check is needed
                      > anyway.

                      It is still not right so. I'll look into it later.

                      regards,
                      Christian
                      --

                      --
                      You received this message from the "vim_dev" maillist.
                      Do not top-post! Type your reply below the text you are replying to.
                      For more information, visit http://www.vim.org/maillist.php
                    • Ike Devolder
                      ... I have tested the patch on top of 725 had one segfault already (could not yet reproduce) but the following i can reproduce every time: same configuration
                      Message 10 of 16 , Nov 23, 2012
                      • 0 Attachment
                        Op vrijdag 23 november 2012 21:47:47 schreef Christian Brabandt:
                        > Hi Bram!
                        >
                        > On Fr, 23 Nov 2012, Bram Moolenaar wrote:
                        > > Christian Brabandt wrote:
                        > > > Hi Dominique!
                        > > >
                        > > > On Do, 22 Nov 2012, Dominique Pellé wrote:
                        > > > > I can't tell whether that's the right fix, but I confirm that
                        > > > > your proposed change avoids the crash at least.
                        > > > >
                        > > > > wp->w_llist was set to NULL at line quickfix.c:914 which
                        > > > >
                        > > > > was introduced by chane 3918 according to hg annotate:
                        > > > > 911 vimboss 644: if (qi->qf_listcount == LISTCOUNT)
                        > > > > 912 vimboss 7: {
                        > > > > 913 bram 3918: if (wp != NULL && wp->w_llist == qi)
                        > > > > 914 bram 3918: wp->w_llist = NULL;
                        > > > > 915 vimboss 644: qf_free(qi, 0);
                        > > > >
                        > > > > ===
                        > > > > changeset: 3918:4f0ddf4137ee
                        > > > > tag: v7-3-715
                        > > > > user: Bram Moolenaar <bram@...>
                        > > > > date: Wed Nov 14 22:38:08 2012 +0100
                        > > > > files: src/quickfix.c src/testdir/test49.ok
                        > > > > src/testdir/test49.vim src/version.c
                        > > > > description:
                        > > > > updated for version 7.3.715
                        > > > > Problem: Crash when calling setloclist() in BufUnload autocmd.
                        > > > > (Marcin
                        > > > >
                        > > > > Szamotulski)
                        > > > >
                        > > > > Solution: Set w_llist to NULL when it was freed. Also add a test.
                        > > > >
                        > > > > (Christian Brabandt)
                        > > > >
                        > > > > ===
                        > > > >
                        > > > > I find it odd that a function called qf_new_list() clears
                        > > > > wp->w_llist (set it to NULL) and does not set it back
                        > > > > to something else. The name of the function "qf_new_list()"
                        > > > > suggests that it should create another list, so perhaps
                        > > > > it should set wp->w_llist to something else. But I don't
                        > > > > understand the code here.
                        > > >
                        > > > Indeed. I think GET_LOC_LIST should be defined as
                        > > > ll_get_or_alloc_list(wp)
                        > >
                        > > ll_get_or_alloc_list() can still return NULL, thus your check is needed
                        > > anyway.
                        >
                        > It is still not right so. I'll look into it later.
                        >
                        > regards,
                        > Christian

                        I have tested the patch on top of 725
                        had one segfault already (could not yet reproduce)

                        but the following i can reproduce every time:

                        same configuration as before, same file (index.php)
                        - open index.php (it still has the syntax error
                        - :w (syntastic kicks in)
                        - fix the error by adding ; after phpinfo()
                        - :w (no more error in the file)
                        - remove the ; again
                        - :w (syntastic kicks in)
                        - :w ->E776: No location list

                        "index.php" 2L, 16C written
                        Error detected while processing function
                        <SNR>31_UpdateErrors..<SNR>31_AutoToggleLocList..<SNR>31_ShowLocList:
                        line 3:
                        E776: No location list
                        Press ENTER or type command to continue

                        no crash in this case, if i continue after this issue i get a second quickfix
                        buffer.

                        thx for the intermediate fix it is definatly an improvement.

                        --Ike

                        --
                        You received this message from the "vim_dev" maillist.
                        Do not top-post! Type your reply below the text you are replying to.
                        For more information, visit http://www.vim.org/maillist.php
                      • Christian Brabandt
                        Hi everybody ... The following patch seems to fix all the issues mentioned so far. It basically does this by reverting Patch 7.3.715 and making sure, no data
                        Message 11 of 16 , Nov 25, 2012
                        • 0 Attachment
                          Hi everybody

                          On Fr, 23 Nov 2012, Ike Devolder wrote:
                          > but the following i can reproduce every time:
                          >
                          > same configuration as before, same file (index.php)
                          > - open index.php (it still has the syntax error
                          > - :w (syntastic kicks in)
                          > - fix the error by adding ; after phpinfo()
                          > - :w (no more error in the file)
                          > - remove the ; again
                          > - :w (syntastic kicks in)
                          > - :w ->E776: No location list
                          >
                          > "index.php" 2L, 16C written
                          > Error detected while processing function
                          > <SNR>31_UpdateErrors..<SNR>31_AutoToggleLocList..<SNR>31_ShowLocList:
                          > line 3:
                          > E776: No location list
                          > Press ENTER or type command to continue
                          >
                          > no crash in this case, if i continue after this issue i get a second quickfix
                          > buffer.
                          >
                          > thx for the intermediate fix it is definatly an improvement.

                          The following patch seems to fix all the issues mentioned so far. It
                          basically does this by reverting Patch 7.3.715 and making sure, no data
                          is freed more than once. Unfortunately, I have not been able to come up
                          with a simple test case for the syntastic problem, that could be
                          included.

                          If anybody can come up with such a test (using no plugin, but just using
                          vim -u NONE -U NONE -N) a tip is appreciated.

                          regards,
                          Christian
                          --
                          Ich bin geldgierig. Als Finanzminister muß man geldgierig sein.
                          -- Hans Eichel

                          --
                          You received this message from the "vim_dev" maillist.
                          Do not top-post! Type your reply below the text you are replying to.
                          For more information, visit http://www.vim.org/maillist.php
                        • Bram Moolenaar
                          ... Thanks for the patch. Have you tried running with valgrind, checking that no memory is leaked or accessing already freed memory? It s only manual
                          Message 12 of 16 , Nov 25, 2012
                          • 0 Attachment
                            Christian Brabandt wrote:

                            > Hi everybody
                            >
                            > On Fr, 23 Nov 2012, Ike Devolder wrote:
                            > > but the following i can reproduce every time:
                            > >
                            > > same configuration as before, same file (index.php)
                            > > - open index.php (it still has the syntax error
                            > > - :w (syntastic kicks in)
                            > > - fix the error by adding ; after phpinfo()
                            > > - :w (no more error in the file)
                            > > - remove the ; again
                            > > - :w (syntastic kicks in)
                            > > - :w ->E776: No location list
                            > >
                            > > "index.php" 2L, 16C written
                            > > Error detected while processing function
                            > > <SNR>31_UpdateErrors..<SNR>31_AutoToggleLocList..<SNR>31_ShowLocList:
                            > > line 3:
                            > > E776: No location list
                            > > Press ENTER or type command to continue
                            > >
                            > > no crash in this case, if i continue after this issue i get a second quickfix
                            > > buffer.
                            > >
                            > > thx for the intermediate fix it is definatly an improvement.
                            >
                            > The following patch seems to fix all the issues mentioned so far. It
                            > basically does this by reverting Patch 7.3.715 and making sure, no data
                            > is freed more than once. Unfortunately, I have not been able to come up
                            > with a simple test case for the syntastic problem, that could be
                            > included.
                            >
                            > If anybody can come up with such a test (using no plugin, but just using
                            > vim -u NONE -U NONE -N) a tip is appreciated.

                            Thanks for the patch. Have you tried running with valgrind, checking
                            that no memory is leaked or accessing already freed memory? It's only
                            manual testing, better than nothing.


                            --
                            hundred-and-one symptoms of being an internet addict:
                            73. You give your dog used motherboards instead of bones

                            /// Bram Moolenaar -- Bram@... -- http://www.Moolenaar.net \\\
                            /// sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \\\
                            \\\ an exciting new programming language -- http://www.Zimbu.org ///
                            \\\ help me help AIDS victims -- http://ICCF-Holland.org ///

                            --
                            You received this message from the "vim_dev" maillist.
                            Do not top-post! Type your reply below the text you are replying to.
                            For more information, visit http://www.vim.org/maillist.php
                          • Ike Devolder
                            ... thx all seems to be working fine with this patch -- Ike -- You received this message from the vim_dev maillist. Do not top-post! Type your reply below
                            Message 13 of 16 , Nov 25, 2012
                            • 0 Attachment
                              On Sun, Nov 25, 2012 at 02:29:59PM +0100, Christian Brabandt wrote:
                              > Hi everybody
                              >
                              > On Fr, 23 Nov 2012, Ike Devolder wrote:
                              > > but the following i can reproduce every time:
                              > >
                              > > same configuration as before, same file (index.php)
                              > > - open index.php (it still has the syntax error
                              > > - :w (syntastic kicks in)
                              > > - fix the error by adding ; after phpinfo()
                              > > - :w (no more error in the file)
                              > > - remove the ; again
                              > > - :w (syntastic kicks in)
                              > > - :w ->E776: No location list
                              > >
                              > > "index.php" 2L, 16C written
                              > > Error detected while processing function
                              > > <SNR>31_UpdateErrors..<SNR>31_AutoToggleLocList..<SNR>31_ShowLocList:
                              > > line 3:
                              > > E776: No location list
                              > > Press ENTER or type command to continue
                              > >
                              > > no crash in this case, if i continue after this issue i get a second quickfix
                              > > buffer.
                              > >
                              > > thx for the intermediate fix it is definatly an improvement.
                              >
                              > The following patch seems to fix all the issues mentioned so far. It
                              > basically does this by reverting Patch 7.3.715 and making sure, no data
                              > is freed more than once. Unfortunately, I have not been able to come up
                              > with a simple test case for the syntastic problem, that could be
                              > included.
                              >
                              > If anybody can come up with such a test (using no plugin, but just using
                              > vim -u NONE -U NONE -N) a tip is appreciated.
                              >
                              > regards,
                              > Christian
                              > --
                              > Ich bin geldgierig. Als Finanzminister muß man geldgierig sein.
                              > -- Hans Eichel
                              >
                              > --
                              > You received this message from the "vim_dev" maillist.
                              > Do not top-post! Type your reply below the text you are replying to.
                              > For more information, visit http://www.vim.org/maillist.php

                              > diff --git a/src/quickfix.c b/src/quickfix.c
                              > --- a/src/quickfix.c
                              > +++ b/src/quickfix.c
                              > @@ -898,11 +898,7 @@
                              > * way with ":grep'.
                              > */
                              > while (qi->qf_listcount > qi->qf_curlist + 1)
                              > - {
                              > - if (wp != NULL && wp->w_llist == qi)
                              > - wp->w_llist = NULL;
                              > qf_free(qi, --qi->qf_listcount);
                              > - }
                              >
                              > /*
                              > * When the stack is full, remove to oldest entry
                              > @@ -910,8 +906,6 @@
                              > */
                              > if (qi->qf_listcount == LISTCOUNT)
                              > {
                              > - if (wp != NULL && wp->w_llist == qi)
                              > - wp->w_llist = NULL;
                              > qf_free(qi, 0);
                              > for (i = 1; i < LISTCOUNT; ++i)
                              > qi->qf_lists[i - 1] = qi->qf_lists[i];
                              > @@ -2135,13 +2129,17 @@
                              > while (qi->qf_lists[idx].qf_count)
                              > {
                              > qfp = qi->qf_lists[idx].qf_start->qf_next;
                              > - vim_free(qi->qf_lists[idx].qf_start->qf_text);
                              > - vim_free(qi->qf_lists[idx].qf_start->qf_pattern);
                              > - vim_free(qi->qf_lists[idx].qf_start);
                              > + if (qi->qf_lists[idx].qf_title != NULL)
                              > + {
                              > + vim_free(qi->qf_lists[idx].qf_start->qf_text);
                              > + vim_free(qi->qf_lists[idx].qf_start->qf_pattern);
                              > + vim_free(qi->qf_lists[idx].qf_start);
                              > + }
                              > qi->qf_lists[idx].qf_start = qfp;
                              > --qi->qf_lists[idx].qf_count;
                              > }
                              > - vim_free(qi->qf_lists[idx].qf_title);
                              > + if (qi->qf_lists[idx].qf_title != NULL)
                              > + vim_free(qi->qf_lists[idx].qf_title);
                              > qi->qf_lists[idx].qf_title = NULL;
                              > }
                              >

                              thx all seems to be working fine with this patch

                              --
                              Ike

                              --
                              You received this message from the "vim_dev" maillist.
                              Do not top-post! Type your reply below the text you are replying to.
                              For more information, visit http://www.vim.org/maillist.php
                            Your message has been successfully submitted and would be delivered to recipients shortly.