Yes I was using the official source. <div><br></div><div>Here is the patch of my changes, some of which you may already have.</div><div><br></div><div><div>diff -r 52bfa939fc07 src/auto/configure</div><div>--- a/src/auto/configure<span class="" style="white-space:pre">        </span>Thu Dec 06 21:30:29 2012 +0100</div>
<div>+++ b/src/auto/configure<span class="" style="white-space:pre">        </span>Sun Dec 16 14:37:19 2012 -0800</div><div>@@ -4927,7 +4927,8 @@</div><div> </div><div> if test "X$vi_cv_path_mzscheme_pfx" != "X"; then</div>
<div> if test "x$MACOSX" = "xyes"; then</div><div>- MZSCHEME_LIBS="-framework PLT_MzScheme"</div><div>+ MZSCHEME_LIBS="-framework Racket"</div><div>+ MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"</div>
<div> elif test -f "${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"; then</div><div> MZSCHEME_LIBS="${vi_cv_path_mzscheme_pfx}/lib/libmzscheme3m.a"</div><div> MZSCHEME_CFLAGS="-DMZ_PRECISE_GC"</div>
<div>@@ -4968,6 +4969,10 @@</div><div> else</div><div> <span class="" style="white-space:pre">        </span>if test -d $vi_cv_path_mzscheme_pfx/share/racket/collects; then</div><div> <span class="" style="white-space:pre">        </span> SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/share/racket/</div>
<div>+ else</div><div>+<span class="" style="white-space:pre">        </span> if test -d $vi_cv_path_mzscheme_pfx/collects; then</div><div>+<span class="" style="white-space:pre">        </span> SCHEME_COLLECTS=$vi_cv_path_mzscheme_pfx/</div>
<div>+<span class="" style="white-space:pre">        </span> fi</div><div> <span class="" style="white-space:pre">        </span>fi</div><div> fi</div><div> fi</div><div>diff -r 52bfa939fc07 src/if_mzsch.c</div><div>--- a/src/if_mzsch.c<span class="" style="white-space:pre">        </span>Thu Dec 06 21:30:29 2012 +0100</div>
<div>+++ b/src/if_mzsch.c<span class="" style="white-space:pre">        </span>Sun Dec 16 14:37:19 2012 -0800</div><div>@@ -183,6 +183,8 @@</div><div> }</div><div> static int buffer_fixup_proc(void *obj)</div><div> {</div><div>+ vim_mz_buffer* buf = (vim_mz_buffer*) obj;</div>
<div>+ buf->buf->b_mzscheme_ref = GC_fixup_self(obj);</div><div> return buffer_size_proc(obj);</div><div> }</div><div> static int window_size_proc(void *obj UNUSED)</div><div>@@ -195,6 +197,8 @@</div><div> }</div>
<div> static int window_fixup_proc(void *obj)</div><div> {</div><div>+ vim_mz_window* win = (vim_mz_window*) obj;</div><div>+ win->win->w_mzscheme_ref = GC_fixup_self(obj);</div><div> return window_size_proc(obj);</div>
<div> }</div><div> #endif</div><div>@@ -861,6 +865,12 @@</div><div> scheme_set_stack_base(stack_base, 1);</div><div> #endif</div><div> </div><div>+#ifndef TRAMPOLINED_MZVIM_STARTUP</div><div>+ /* in newer versions of precise GC the initial env has been created */</div>
<div>+ environment = scheme_basic_env();</div><div>+#endif</div><div>+ MZ_GC_CHECK();</div><div>+</div><div> MZ_REGISTER_STATIC(environment);</div><div> MZ_REGISTER_STATIC(curout);</div><div> MZ_REGISTER_STATIC(curerr);</div>
<div>@@ -869,10 +879,6 @@</div><div> MZ_REGISTER_STATIC(exn_message);</div><div> MZ_REGISTER_STATIC(vim_exn);</div><div> </div><div>-#ifndef TRAMPOLINED_MZVIM_STARTUP</div><div>- /* in newer versions of precise GC the initial env has been created */</div>
<div>- environment = scheme_basic_env();</div><div>-#endif</div><div> MZ_GC_CHECK();</div><div> </div><div> #ifdef INCLUDE_MZSCHEME_BASE</div><div>@@ -925,11 +931,7 @@</div><div> <span class="" style="white-space:pre">        </span>MZ_GC_CHECK();</div>
<div> <span class="" style="white-space:pre">        </span>coll_path = scheme_char_string_to_path(coll_char_string);</div><div> <span class="" style="white-space:pre">        </span>MZ_GC_CHECK();</div><div>-<span class="" style="white-space:pre">        </span>coll_pair = scheme_make_pair(coll_path, scheme_null);</div>
<div>-<span class="" style="white-space:pre">        </span>MZ_GC_CHECK();</div><div>-<span class="" style="white-space:pre">        </span>config = scheme_config;</div><div>-<span class="" style="white-space:pre">        </span>MZ_GC_CHECK();</div>
<div>-<span class="" style="white-space:pre">        </span>scheme_set_param(config, MZCONFIG_COLLECTION_PATHS, coll_pair);</div><div>+ scheme_set_collects_path(coll_path);</div><div> <span class="" style="white-space:pre">        </span>MZ_GC_CHECK();</div>
<div> <span class="" style="white-space:pre">        </span>MZ_GC_UNREG();</div><div> }</div><div>@@ -1016,10 +1018,10 @@</div><div> #ifdef MZ_PRECISE_GC</div><div> GC_register_traversers(mz_buffer_type,</div><div> <span class="" style="white-space:pre">        </span> buffer_size_proc, buffer_mark_proc, buffer_fixup_proc,</div>
<div>-<span class="" style="white-space:pre">        </span> TRUE, TRUE);</div><div>+<span class="" style="white-space:pre">        </span> TRUE, FALSE);</div><div> GC_register_traversers(mz_window_type,</div><div> <span class="" style="white-space:pre">        </span> window_size_proc, window_mark_proc, window_fixup_proc,</div>
<div>-<span class="" style="white-space:pre">        </span> TRUE, TRUE);</div><div>+<span class="" style="white-space:pre">        </span> TRUE, FALSE);</div><div> #endif</div><div> </div><div> make_modules();</div><div>@@ -1652,7 +1654,7 @@</div>
<div> if (win->w_mzscheme_ref != NULL)</div><div> <span class="" style="white-space:pre">        </span>return win->w_mzscheme_ref;</div><div> </div><div>- self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_window));</div>
<div>+ self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_window));</div><div> vim_memset(self, 0, sizeof(vim_mz_window));</div><div> scheme_dont_gc_ptr(self);<span class="" style="white-space:pre">        </span>/* because win isn't visible to GC */</div>
<div> MZ_GC_CHECK();</div><div>@@ -1977,7 +1979,7 @@</div><div> if (buf->b_mzscheme_ref)</div><div> <span class="" style="white-space:pre">        </span>return buf->b_mzscheme_ref;</div><div> </div><div>- self = scheme_malloc_fail_ok(scheme_malloc, sizeof(vim_mz_buffer));</div>
<div>+ self = scheme_malloc_fail_ok(scheme_malloc_tagged, sizeof(vim_mz_buffer));</div><div> vim_memset(self, 0, sizeof(vim_mz_buffer));</div><div> scheme_dont_gc_ptr(self); /* because buf isn't visible to GC */</div>
<div> MZ_GC_CHECK();</div><div>@@ -2298,8 +2300,8 @@</div><div> <span class="" style="white-space:pre">        </span> MZ_GC_VAR_IN_REG(1, rest);</div><div> <span class="" style="white-space:pre">        </span> MZ_GC_REG();</div>
<div> </div><div>-<span class="" style="white-space:pre">        </span> array = (char **)alloc(new_len * sizeof(char *));</div><div>-<span class="" style="white-space:pre">        </span> vim_memset(array, 0, new_len * sizeof(char *));</div>
<div>+<span class="" style="white-space:pre">        </span> array = (char **)alloc((new_len + 1) * sizeof(char *));</div><div>+<span class="" style="white-space:pre">        </span> vim_memset(array, 0, (new_len + 1) * sizeof(char *));</div>
<div> </div><div> <span class="" style="white-space:pre">        </span> rest = line_list;</div><div> <span class="" style="white-space:pre">        </span> for (i = 0; i < new_len; ++i)</div><div>@@ -2481,8 +2483,8 @@</div><div>
<span class="" style="white-space:pre">        </span>MZ_GC_VAR_IN_REG(1, rest);</div><div> <span class="" style="white-space:pre">        </span>MZ_GC_REG();</div><div> </div><div>-<span class="" style="white-space:pre">        </span>array = (char **)alloc(size * sizeof(char *));</div>
<div>-<span class="" style="white-space:pre">        </span>vim_memset(array, 0, size * sizeof(char *));</div><div>+<span class="" style="white-space:pre">        </span>array = (char **)alloc((size + 1) * sizeof(char *));</div><div>+<span class="" style="white-space:pre">        </span>vim_memset(array, 0, (size + 1) * sizeof(char *));</div>
<div> </div><div> <span class="" style="white-space:pre">        </span>rest = list;</div><div> <span class="" style="white-space:pre">        </span>for (i = 0; i < size; ++i)</div></div><div><br></div><div class="gmail_extra"><br>
<br><div class="gmail_quote">On Fri, Dec 14, 2012 at 9:05 AM, Sergey Khorev <span dir="ltr"><<a href="mailto:sergey.khorev@gmail.com" target="_blank">sergey.khorev@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><div class="gmail_quote"><div class="im">On Fri, Dec 14, 2012 at 9:20 AM, Eric Dobson <span dir="ltr"><<a href="mailto:eric.n.dobson@gmail.com" target="_blank">eric.n.dobson@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
I figured this out. It was that vim was not being compiled with the precise garbage collection when racket was, and a couple of bugs on the vim allocation of racket objects. I'll hopefully have a patch soon.<div>
<div><div class="gmail_extra"> </div></div></div></blockquote><div><br></div></div><div>Are you talking about official Vim source? For <a href="http://code.google.com/r/sergeykhorev-vim-mzscheme/source" target="_blank">http://code.google.com/r/sergeykhorev-vim-mzscheme/source</a> I reworked some memory allocation stuff so something must have changed in this regard :) </div>
</div>
<br>_________________________<br>
Racket Developers list:<br>
<a href="http://lists.racket-lang.org/dev" target="_blank">http://lists.racket-lang.org/dev</a><br>
<br></blockquote></div><br></div>