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

Re: Patch 7.3.715

Expand Messages
  • 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 1 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 2 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 3 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 4 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 5 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 6 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 7 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 8 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 9 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 10 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.