vim is fine (syn on)

Confirmed, terminal Vim is responsive immediately and doesn't crash when scrolling through the file. This makes sense because it looks like the dynamic XPM highlighting isn't applied in terminal Vim.

gvim is fine (syn off)

Confirmed, although graphical Vim does still take a minute before it becomes responsive. I guess the XPM is still parsed by Vim script code to define the dynamic syntax highlighting; the highlighting just won't be shown (at least this would explain the slowdown).

An additional observation: I just compiled Vim with debugging symbols and now it crashes directly after the minute of unresponsiveness, i.e. I don't need to scroll around to reproduce the crash. I'm attaching a backtrace.

 - Peter Odding

--
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
peter@laptop> gdb --args /usr/local/bin/gvim -f 100x100.xpm
GNU gdb (GDB) 7.1-ubuntu
Copyright (C) 2010 Free Software Foundation, Inc.
License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html>
This is free software: you are free to change and redistribute it.
There is NO WARRANTY, to the extent permitted by law.  Type "show copying"
and "show warranty" for details.
This GDB was configured as "i486-linux-gnu".
For bug reporting instructions, please see:
<http://www.gnu.org/software/gdb/bugs/>...
Reading symbols from /usr/local/bin/gvim...done.
(gdb) r
Starting program: /usr/local/bin/gvim -f 100x100.xpm
[Thread debugging using libthread_db enabled]

Program received signal SIGSEGV, Segmentation fault.
0x081caeda in in_id_list (cur_si=0x0, list=0x61a8, ssp=0xb746ffd8, contained=1) 
at syntax.c:6068
6068        item = *list;
(gdb) bt
#0  0x081caeda in in_id_list (cur_si=0x0, list=0x61a8, ssp=0xb746ffd8, 
contained=1) at syntax.c:6068
#1  0x081cb01b in in_id_list (cur_si=0x0, list=0x8961312, ssp=0xb746ffd8, 
contained=1) at syntax.c:6110
#2  0x081cb01b in in_id_list (cur_si=0x851ec60, list=0x8584148, ssp=0xb746ffd8, 
contained=1) at syntax.c:6110
#3  0x081c3caa in syn_current_attr (syncing=0, displaying=1, 
can_spell=0xbfffef28, keep_state=0) at syntax.c:2040
#4  0x081c374d in get_syntax_attr (col=0, can_spell=0xbfffef28, keep_state=0) 
at syntax.c:1817
#5  0x0818c0bc in win_line (wp=0x8266550, lnum=10099, startrow=0, endrow=32, 
nochange=1) at screen.c:4073
#6  0x08187c7e in win_update (wp=0x8266550) at screen.c:1850
#7  0x08185c0e in update_screen (type=40) at screen.c:531
#8  0x0810818c in main_loop (cmdwin=0, noexmode=0) at main.c:1161
#9  0x08107dc9 in main (argc=3, argv=0xbffff574) at main.c:961
(gdb) bt full
#0  0x081caeda in in_id_list (cur_si=0x0, list=0x61a8, ssp=0xb746ffd8, 
contained=1) at syntax.c:6068
        retval = -1217440600
        scl_list = 0xbfffec7c
        item = 0
        id = 86
        depth = 2
        r = 139586720
#1  0x081cb01b in in_id_list (cur_si=0x0, list=0x8961312, ssp=0xb746ffd8, 
contained=1) at syntax.c:6110
        retval = 1
        scl_list = 0x61a8
        item = 25010
        id = 86
        depth = 2
        r = 302
#2  0x081cb01b in in_id_list (cur_si=0x851ec60, list=0x8584148, ssp=0xb746ffd8, 
contained=1) at syntax.c:6110
        retval = 1
        scl_list = 0x895d230
        item = 25000
        id = 86
        depth = 2
        r = 136738104
#3  0x081c3caa in syn_current_attr (syncing=0, displaying=1, 
can_spell=0xbfffef28, keep_state=0) at syntax.c:2040
        syn_id = 0
        endpos = {lnum = 10099, col = 1}
        hl_startpos = {lnum = 10099, col = 0}
        hl_endpos = {lnum = 10099, col = 1}
        eos_pos = {lnum = 10099, col = 1}
        eoe_pos = {lnum = 0, col = 0}
        end_idx = 0
        idx = 30007
        spp = 0xb746ffcc
        cur_si = 0x851ec60
---Type <return> to continue, or q <return> to quit---
        sip = 0x0
        startcol = 0
        endcol = -58
        flags = 0
        cchar = 136683432
        next_list = 0x8c
        found_match = 0
        try_next_column = 0
        do_keywords = 1
        regmatch = {regprog = 0x8583ad0, startpos = {{lnum = 10099, col = 0}, 
{lnum = -1, col = -1}, {lnum = -1, col = -1}, {
              lnum = -1, col = -1}, {lnum = -1, col = -1}, {lnum = -1, col = 
-1}, {lnum = -1, col = -1}, {lnum = -1, 
              col = -1}, {lnum = -1, col = -1}, {lnum = -1, col = -1}}, endpos 
= {{lnum = 10099, col = 1}, {lnum = -1, 
              col = -1}, {lnum = -1, col = -1}, {lnum = -1, col = -1}, {lnum = 
-1, col = -1}, {lnum = -1, col = -1}, {
              lnum = -1, col = -1}, {lnum = -1, col = -1}, {lnum = -1, col = 
-1}, {lnum = -1, col = -1}}, rmm_ic = 0, 
          rmm_maxcol = 3000}
        pos = {lnum = 10099, col = 0}
        lc_col = 0
        cur_extmatch = 0x0
        line = 0x8580098 
"\":;.<;.[;.};.|;.1;.2;.3;.4;.5;.6;.7;.8;.9;.0;.a;.b;.c;.d;.e;.f;.g;.h;.i;.j;.k;.l;.m;.n;.o;.p;.q;.r;.s;.t;.u;.v;.w;.x;.y;.z;.A;.B;.C;.D;.E;.F;.G;.H;.I;.J;.K;.L;.M;.N;.O;.P;.Q;.R;.S;.T;.U;.V;.W;.X;.Y;.Z"...
        keep_next_list = 0
        zero_width_next_list = 0
        zero_width_next_ga = {ga_len = 0, ga_maxlen = 0, ga_itemsize = 4, 
ga_growsize = 10, ga_data = 0x0}
#4  0x081c374d in get_syntax_attr (col=0, can_spell=0xbfffef28, keep_state=0) 
at syntax.c:1817
        attr = 0
#5  0x0818c0bc in win_line (wp=0x8266550, lnum=10099, startrow=0, endrow=32, 
nochange=1) at screen.c:4073
        can_spell = 1
        col = 0
        off = 4191
        c = 34
        vcol = 0
        vcol_prev = -1
---Type <return> to continue, or q <return> to quit---
        line = 0x8580098 
"\":;.<;.[;.};.|;.1;.2;.3;.4;.5;.6;.7;.8;.9;.0;.a;.b;.c;.d;.e;.f;.g;.h;.i;.j;.k;.l;.m;.n;.o;.p;.q;.r;.s;.t;.u;.v;.w;.x;.y;.z;.A;.B;.C;.D;.E;.F;.G;.H;.I;.J;.K;.L;.M;.N;.O;.P;.Q;.R;.S;.T;.U;.V;.W;.X;.Y;.Z"...
        ptr = 0x8580099 
":;.<;.[;.};.|;.1;.2;.3;.4;.5;.6;.7;.8;.9;.0;.a;.b;.c;.d;.e;.f;.g;.h;.i;.j;.k;.l;.m;.n;.o;.p;.q;.r;.s;.t;.u;.v;.w;.x;.y;.z;.A;.B;.C;.D;.E;.F;.G;.H;.I;.J;.K;.L;.M;.N;.O;.P;.Q;.R;.S;.T;.U;.V;.W;.X;.Y;.Z;"...
        row = 0
        screen_row = 0
        extra = "\377\277\000\000\000\000P\213;\b\001\000\000\000\340\236%\b"
        n_extra = 0
        p_extra = 0x0
        c_extra = 0
        extra_attr = 0
        at_end_str = 0x822af2f ""
        lcs_eol_one = 36
        lcs_prec_todo = 0
        saved_n_extra = 0
        saved_p_extra = 0x0
        saved_c_extra = 0
        saved_char_attr = 0
        n_attr = 0
        saved_attr2 = 0
        n_attr3 = 0
        saved_attr3 = 0
        n_skip = 0
        fromcol = -10
        tocol = 2147483647
        fromcol_prev = -2
        noinvcur = 0
        top = 0xded
        bot = 0xbffff038
        lnum_in_visual_area = 0
        pos = {lnum = 137, col = 24, coladd = 14701504}
        v = 1
---Type <return> to continue, or q <return> to quit---
        char_attr = 0
        attr_pri = 0
        area_highlighting = 0
        attr = 0
        area_attr = 0
        search_attr = 0
        vcol_save_attr = 0
        syntax_attr = 0
        has_syntax = 1
        save_did_emsg = 0
        eol_hl_off = 0
        draw_color_col = 0
        color_cols = 0x0
        has_spell = 1
        nextline = ".K;.L;.M;.N;.O;.P;.Q;.R;.S;.T;.U;.V;.W;.X;.Y;.Z;.`;. 
>..>.+>.@>.#>.$>.%>.&>.*>.=>.->.;>.>>.,>.'>.)>.!>.~>.{>.]>.^>./>.(>._>.:>.<>.[>.}>.|>.1>.2>.3>.\",
  4>.5>.6>.7>.8>.9>.0>.a>.b>.c>.d>.e>.f>.g>.h>.i>."...
        nextlinecol = 153
        nextline_idx = 151
        spell_attr = 0
        word_end = 0
        checked_lnum = 0
        checked_col = 0
        cap_col = -1
        capcol_lnum = 0
        cur_checked_col = 0
        extra_check = 1
        multi_attr = 0
        mb_l = 1
        mb_c = 34
        mb_utf8 = 0
        u8cc = {136812460, 0, -1073746136, 15234884, 139138392, 140005600}
        filler_lines = 0
---Type <return> to continue, or q <return> to quit---
        filler_todo = 0
        diff_hlf = HLF_8
        change_start = 2147483647
        change_end = -1
        trailcol = 2147483647
        need_showbreak = 0
        line_attr = 0
        cur = 0x0
        shl = 0x8259ee0
        shl_flag = 1
        prevcol_hl_flag = 15256215
        prev_c = 34
        prev_c1 = 0
        did_line_attr = 0
        draw_state = 6
        feedback_col = 0
        feedback_old_attr = -1
        syntax_flags = 0
        syntax_seqnr = 0
        prev_syntax_id = 0
        conceal_attr = 91
        is_concealing = 0
        boguscols = 0
        vcol_off = 0
        did_wcol = 0
#6  0x08187c7e in win_update (wp=0x8266550) at screen.c:1850
        buf = 0x8267538
        type = 50
        top_end = 0
        mid_start = 0
        mid_end = 32
        bot_start = 999
---Type <return> to continue, or q <return> to quit---
        scrolled_down = 0
        cur = 0x8259ee0
        top_to_mod = 0
        row = 0
        lnum = 10099
        idx = 0
        srow = 0
        eof = 0
        didline = 0
        i = 0
        j = 1
        recursive = 0
        old_botline = 10104
        fold_count = 0
        did_update = 1
        syntax_last_parsed = 0
        mod_top = 0
        mod_bot = 0
        save_got_int = 0
#7  0x08185c0e in update_screen (type=40) at screen.c:531
        wp = 0x8266550
        did_intro = 0
        did_one = 1
#8  0x0810818c in main_loop (cmdwin=0, noexmode=0) at main.c:1161
        oa = {op_type = 0, regname = 0, motion_type = 0, motion_force = 0, 
use_reg_one = 0, inclusive = 0, end_adjusted = 0, 
          start = {lnum = 0, col = 0, coladd = 0}, end = {lnum = 0, col = 0, 
coladd = 0}, cursor_start = {lnum = 0, col = 0, 
            coladd = 0}, line_count = 0, empty = 0, is_VIsual = 0, block_mode = 
0, start_vcol = 0, end_vcol = 0, 
          prev_opcount = 0, prev_count0 = 0}
        previous_got_int = 0
        conceal_old_cursor_line = 0
        conceal_new_cursor_line = 0
        conceal_update_lines = 0
---Type <return> to continue, or q <return> to quit---
#9  0x08107dc9 in main (argc=3, argv=0xbffff574) at main.c:961
        fname = 0x82689e8 "100x100.xpm"
        params = {argc = 3, argv = 0xbffff574, evim_mode = 0, use_vimrc = 0x0, 
n_commands = 0, commands = {0x0, 0x0, 0x0, 
            0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, cmds_tofree = 
"\000\000\000\000\000\000\000\000\000", n_pre_commands = 0, 
          pre_commands = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}, 
edit_type = 1, tagname = 0x0, use_ef = 0x0, 
          want_full_screen = 1, stdout_isatty = 1, term = 0x0, ask_for_key = 0, 
no_swap_file = 0, use_debug_break_level = -1, 
          window_count = 1, window_layout = 0, serverArg = 0, serverName_arg = 
0x0, serverStr = 0x0, serverStrEnc = 0x0, 
          servername = 0x8269d58 "", diff_mode = 0}
        i = 3
(gdb) quit
A debugging session is active.

        Inferior 1 [process 3565] will be killed.

Quit anyway? (y or n) y

Raspunde prin e-mail lui