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

Re: SEGV when editing Vim script variables in if_lua

Expand Messages
  • mattn
    lua is managing vim objects in cache table to release with finalizer. So it doesn t need to call something in luaV_dict_gc/luaV_list_gc to undef vim objects.
    Message 1 of 7 , Apr 10, 2013
    • 0 Attachment
      lua is managing vim objects in cache table to release with finalizer. So it doesn't need to call something in luaV_dict_gc/luaV_list_gc to undef vim objects. it makes double free.

      https://gist.github.com/mattn/5356214

      diff -r a079ef0ce001 src/if_lua.c
      --- a/src/if_lua.c Sat Apr 06 17:26:26 2013 +0200
      +++ b/src/if_lua.c Thu Apr 11 01:30:49 2013 +0900
      @@ -665,13 +665,6 @@
      luaV_type_tostring(list, LUAVIM_LIST)

      static int
      -luaV_list_gc (lua_State *L)
      -{
      - list_unref(luaV_unbox(L, luaV_List, 1));
      - return 0;
      -}
      -
      - static int
      luaV_list_len (lua_State *L)
      {
      list_T *l = luaV_unbox(L, luaV_List, 1);
      @@ -801,7 +794,6 @@

      static const luaL_Reg luaV_List_mt[] = {
      {"__tostring", luaV_list_tostring},
      - {"__gc", luaV_list_gc},
      {"__len", luaV_list_len},
      {"__call", luaV_list_call},
      {"__index", luaV_list_index},
      @@ -830,13 +822,6 @@
      luaV_type_tostring(dict, LUAVIM_DICT)

      static int
      -luaV_dict_gc (lua_State *L)
      -{
      - dict_unref(luaV_unbox(L, luaV_Dict, 1));
      - return 0;
      -}
      -
      - static int
      luaV_dict_len (lua_State *L)
      {
      dict_T *d = luaV_unbox(L, luaV_Dict, 1);
      @@ -929,7 +914,6 @@

      static const luaL_Reg luaV_Dict_mt[] = {
      {"__tostring", luaV_dict_tostring},
      - {"__gc", luaV_dict_gc},
      {"__len", luaV_dict_len},
      {"__call", luaV_dict_call},
      {"__index", luaV_dict_index},

      - Yasuhiro Matsumoto

      --
      --
      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

      ---
      You received this message because you are subscribed to the Google Groups "vim_dev" group.
      To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
      For more options, visit https://groups.google.com/groups/opt_out.
    • Bram Moolenaar
      ... Thanks for the quick response! I have a note in the todo list that test 85, when run with valgrind, finds memory leaks in Lua. Did you every run with Lua
      Message 2 of 7 , Apr 10, 2013
      • 0 Attachment
        Yasuhiro Matsumoto wrote:

        > lua is managing vim objects in cache table to release with finalizer.
        > So it doesn't need to call something in luaV_dict_gc/luaV_list_gc to
        > undef vim objects. it makes double free.

        Thanks for the quick response!

        I have a note in the todo list that test 85, when run with valgrind,
        finds memory leaks in Lua. Did you every run with Lua under valgrind?

        --
        Drink wet cement and get really stoned.

        /// 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

        ---
        You received this message because you are subscribed to the Google Groups "vim_dev" group.
        To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
        For more options, visit https://groups.google.com/groups/opt_out.
      • mattn
        ... Not yet. Lua works with incremental GC. Some objects which is set undef but not freed remains on memory, i guess. -- -- You received this message from the
        Message 3 of 7 , Apr 10, 2013
        • 0 Attachment
          > Did you every run with Lua under valgrind?

          Not yet. Lua works with incremental GC. Some objects which is set undef but not freed remains on memory, i guess.

          --
          --
          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

          ---
          You received this message because you are subscribed to the Google Groups "vim_dev" group.
          To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
          For more options, visit https://groups.google.com/groups/opt_out.
        • Bram Moolenaar
          ... Is there a call to the Lua library to have it clean up and free all memory? It should be called in lua_end() when EXITFREE is defined. -- We are the Borg
          Message 4 of 7 , Apr 12, 2013
          • 0 Attachment
            Yasuhiro Matsumoto wrote:

            > > Did you every run with Lua under valgrind?
            >
            > Not yet. Lua works with incremental GC. Some objects which is set
            > undef but not freed remains on memory, i guess.

            Is there a call to the Lua library to have it clean up and free all
            memory? It should be called in lua_end() when EXITFREE is defined.

            --
            We are the Borg of GNU GPL. We will assimilate your source code.
            Resistance is futile.

            /// 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

            ---
            You received this message because you are subscribed to the Google Groups "vim_dev" group.
            To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
            For more options, visit https://groups.google.com/groups/opt_out.
          • Yukihiro Nakadaira
            ... I found a few memory leaks in if_lua.c. Please check the attached patch. -- Yukihiro Nakadaira - yukihiro.nakadaira@gmail.com -- -- You received this
            Message 5 of 7 , Apr 12, 2013
            • 0 Attachment
              On Thu, Apr 11, 2013 at 6:07 AM, Bram Moolenaar <Bram@...> wrote:

              Yasuhiro Matsumoto wrote:

              > lua is managing vim objects in cache table to release with finalizer.
              > So it doesn't need to call something in luaV_dict_gc/luaV_list_gc to
              > undef vim objects. it makes double free.

              Thanks for the quick response!

              I have a note in the todo list that test 85, when run with valgrind,
              finds memory leaks in Lua.  Did you every run with Lua under valgrind?

              I found a few memory leaks in if_lua.c.
              Please check the attached patch.

              --
              Yukihiro Nakadaira - yukihiro.nakadaira@...

              --
              --
              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
               
              ---
              You received this message because you are subscribed to the Google Groups "vim_dev" group.
              To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
              For more options, visit https://groups.google.com/groups/opt_out.
               
               
            • Bram Moolenaar
              ... Great, thanks. -- hundred-and-one symptoms of being an internet addict: 158. You get a tuner card so you can watch TV while surfing. /// Bram Moolenaar --
              Message 6 of 7 , Apr 12, 2013
              • 0 Attachment
                Yukihiro Nakadaira wrote:

                > > I have a note in the todo list that test 85, when run with valgrind,
                > > finds memory leaks in Lua. Did you every run with Lua under valgrind?
                > >
                >
                > I found a few memory leaks in if_lua.c.
                > Please check the attached patch.

                Great, thanks.

                --
                hundred-and-one symptoms of being an internet addict:
                158. You get a tuner card so you can watch TV while surfing.

                /// 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

                ---
                You received this message because you are subscribed to the Google Groups "vim_dev" group.
                To unsubscribe from this group and stop receiving emails from it, send an email to vim_dev+unsubscribe@....
                For more options, visit https://groups.google.com/groups/opt_out.
              Your message has been successfully submitted and would be delivered to recipients shortly.