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

Crash with legal VimScript

Expand Messages
  • Meikel Brandmeyer
    Hi, I ran into a problem with MacVim. I m not sure where it comes from. The problem can be reproduced as follows: 1. Source the attached file. 2. Create a new
    Message 1 of 4 , May 1, 2009
    • 0 Attachment
      Hi,

      I ran into a problem with MacVim. I'm not sure where it comes from.

      The problem can be reproduced as follows:
      1. Source the attached file.
      2. Create a new buffer: :call foo#Buffer.New()
      3. Close the new window by pressing q.

      Shortly thereafter vim will crash while garbage collecting.

      6 libSystem.B.dylib 0x94b9d2bb _sigtramp + 43
      7 ??? 0xffffffff 0 + 4294967295
      8 Vim 0x0002b65c dict_free + 185
      9 Vim 0x0002b6b2 dict_unref + 33
      10 Vim 0x0002afa4 clear_tv + 136
      11 Vim 0x0002c866 vars_clear_ext + 85
      12 Vim 0x0002c8ad vars_clear + 19
      13 Vim 0x0002c8d4 free_funccal + 37
      14 Vim 0x0002ccf3 garbage_collect + 514

      James Vega on #vim on freenode.net tried the on different
      vim versions, which all worked ok. I saw the problem with
      MacVim snapshot 42 and snapshot 45.

      I'm not so involved in the guts of vim, so I'm not sure how to
      track this down further, but it seems to be Mac specific.

      Any ideas?

      Sincerely
      Meikel
    • björn
      ... I can confirm this crash on Snapshot 45, OS X 10.5.6, Intel. I m not very familiar with Vim core either so I m not sure how to go about debugging this
      Message 2 of 4 , May 1, 2009
      • 0 Attachment
        2009/5/1 Meikel Brandmeyer:
        >
        > I ran into a problem with MacVim. I'm not sure where it comes from.
        >
        > The problem can be reproduced as follows:
        > 1. Source the attached file.
        > 2. Create a new buffer: :call foo#Buffer.New()
        > 3. Close the new window by pressing q.
        >
        > Shortly thereafter vim will crash while garbage collecting.
        >
        > 6   libSystem.B.dylib                   0x94b9d2bb _sigtramp + 43
        > 7   ???                                 0xffffffff 0 + 4294967295
        > 8   Vim                                 0x0002b65c dict_free + 185
        > 9   Vim                                 0x0002b6b2 dict_unref + 33
        > 10  Vim                                 0x0002afa4 clear_tv + 136
        > 11  Vim                                 0x0002c866 vars_clear_ext + 85
        > 12  Vim                                 0x0002c8ad vars_clear + 19
        > 13  Vim                                 0x0002c8d4 free_funccal + 37
        > 14  Vim                                 0x0002ccf3 garbage_collect + 514
        >
        > James Vega on #vim on freenode.net tried the on different
        > vim versions, which all worked ok. I saw the problem with
        > MacVim snapshot 42 and snapshot 45.
        >
        > I'm not so involved in the guts of vim, so I'm not sure how to
        > track this down further, but it seems to be Mac specific.
        >
        > Any ideas?

        I can confirm this crash on Snapshot 45, OS X 10.5.6, Intel.

        I'm not very familiar with Vim core either so I'm not sure how to go
        about debugging this (I'll give it a go when I get a chance though).
        Any assistance would be greatly appreciated!

        Thanks,
        Björn

        --~--~---------~--~----~------------~-------~--~----~
        You received this message from the "vim_mac" maillist.
        For more information, visit http://www.vim.org/maillist.php
        -~----------~----~----~----~------~----~------~--~---
      • Nico Weber
        Hi, ... This was a bug in core vim. I ve submitted a fix: http://groups.google.com/group/vim_dev/browse_thread/thread/24a59dfe042901df Let s hope it gets
        Message 3 of 4 , May 2, 2009
        • 0 Attachment
          Hi,

          On 01.05.2009, at 15:31, björn wrote:

          > 2009/5/1 Meikel Brandmeyer:
          >>
          >> I ran into a problem with MacVim. I'm not sure where it comes from.
          >>
          >> The problem can be reproduced as follows:
          >> 1. Source the attached file.
          >> 2. Create a new buffer: :call foo#Buffer.New()
          >> 3. Close the new window by pressing q.
          >>
          >> Shortly thereafter vim will crash while garbage collecting.
          >>
          >> 6 libSystem.B.dylib 0x94b9d2bb _sigtramp + 43
          >> 7 ??? 0xffffffff 0 + 4294967295
          >> 8 Vim 0x0002b65c dict_free + 185
          >> 9 Vim 0x0002b6b2 dict_unref + 33
          >> 10 Vim 0x0002afa4 clear_tv + 136
          >> 11 Vim 0x0002c866 vars_clear_ext +
          >> 85
          >> 12 Vim 0x0002c8ad vars_clear + 19
          >> 13 Vim 0x0002c8d4 free_funccal + 37
          >> 14 Vim 0x0002ccf3 garbage_collect
          >> + 514
          >>
          >> James Vega on #vim on freenode.net tried the on different
          >> vim versions, which all worked ok. I saw the problem with
          >> MacVim snapshot 42 and snapshot 45.
          >>
          >> I'm not so involved in the guts of vim, so I'm not sure how to
          >> track this down further, but it seems to be Mac specific.
          >>
          >> Any ideas?
          >
          > I can confirm this crash on Snapshot 45, OS X 10.5.6, Intel.
          >
          > I'm not very familiar with Vim core either so I'm not sure how to go
          > about debugging this (I'll give it a go when I get a chance though).
          > Any assistance would be greatly appreciated!

          This was a bug in core vim. I've submitted a fix: http://groups.google.com/group/vim_dev/browse_thread/thread/24a59dfe042901df
          Let's hope it gets accepted.

          I used valgrind to find the problem. Once I had valgrind set up, it
          took only seconds to find the exact line number where the problem
          occurred (it took bit longer to understand the code well enough to
          find a fix, though :-P). I feel valgrind is very useful, but there's
          not much information on how to use it on OS X, so I thought I'd post a
          short howto. Here goes:

          # Obtain valgrind. There's no binary yet (needs 140mb to compile).
          cd ~/src
          svn co svn://svn.valgrind.org/valgrind/branches/DARWIN valgrind
          cd valgrind/
          mvim README
          ./autogen.sh
          ./configure # --prefix=/Users/nico/local/
          make -j2
          sudo make install # no sudo if --prefix used above
          valgrind ls -l # works!

          # Build vim with debug info
          cd ~/src/MacVim/src
          CFLAGS=-g ./configure --enable-gui=macvim --enable-multibyte --enable-
          pythoninterp --enable-cscope
          make -j2
          cd MacVim
          xcodebuild -configuration Debug

          # For some reason, valgrind needs a dSYM file to output line numbers.
          Keeping
          # the dSYM file in snyc is less pain then using `atos` manually all
          the time, so:
          cd build/Debug/MacVim.app/Contents/MacOS
          dsymutil Vim # don't forget to do that after every buid
          cd -

          # Start valgrind with vim (luckily, this bug needs no GUI):
          valgrind --leak-check=full build/Debug/MacVim.app/Contents/MacOS/Vim
          --noplugins 2> ~/valgrind.txt

          # Now manually do `:so foo.vim` :call foo#Buffer.new()` `:q`,
          # then open valgrind.txt


          With the line number information, I then went ot Markus Heidelberg's
          git repo, which has useful commit logs and found http://repo.or.cz/w/vim_extended.git?a=commitdiff;h=4706b1fe9b1053f3d8c3c2f477d6570eb3473966
          . After that, it was comparably easy to come up with a fix.

          Nico
          --~--~---------~--~----~------------~-------~--~----~
          You received this message from the "vim_mac" maillist.
          For more information, visit http://www.vim.org/maillist.php
          -~----------~----~----~----~------~----~------~--~---
        • DanKegel
          ... The DARWIN branch has been merged to trunk. As of today, valgrind s trunk supports the mac! See
          Message 4 of 4 , May 28, 2009
          • 0 Attachment
            On May 2, 4:18 pm, Nico Weber <nicolaswe...@...> wrote:
            > I feel valgrind is very useful, but there's  
            > not much information on how to use it on OS X, so I thought I'd post a  
            > short howto. Here goes:
            >
            > # Obtain valgrind. There's no binary yet (needs 140mb to compile).
            > cd ~/src
            > svn co svn://svn.valgrind.org/valgrind/branches/DARWIN valgrind

            The DARWIN branch has been merged to trunk. As of today,
            valgrind's trunk supports the mac! See
            http://blog.mozilla.com/nnethercote/2009/05/28/mac-os-x-now-supported-on-the-valgrind-trunk/

            --~--~---------~--~----~------------~-------~--~----~
            You received this message from the "vim_mac" maillist.
            For more information, visit http://www.vim.org/maillist.php
            -~----------~----~----~----~------~----~------~--~---
          Your message has been successfully submitted and would be delivered to recipients shortly.