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