emacs-pretest-bug
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

RE: Error in menu-bar-update-hook: (error Point before start of p rope r


From: Marshall, Simon
Subject: RE: Error in menu-bar-update-hook: (error Point before start of p rope rties)
Date: Fri, 21 Jul 2006 17:43:09 +0100

> The anomaly here is in the original error.  I am not sure 
> whether that error ought to be possible at all.
> 
> How about if you run with a breakpoint at the line in 
> intervals.c which gets that error?  When you get there, look 
> at the value of POS.
> Then examine the existing buffer properties.  You can do that 
> at the C level, or continue into the Lisp debugger and do it there.

This time it happened while I was doing C-k C-k C-y C-y to copy a line.
(Though I guess the edit is irrelevant - the error is during a buffer-wide
imenu update.)  The caller is update_syntax_table():

  if (NULL_INTERVAL_P (i))
    error ("Error in syntax_table logic for to-the-end intervals");
  else if (charpos < i->position)               /* Move left.  */
    {
      if (count > 0)
        error ("Error in syntax_table logic for intervals <-");
      /* Update the interval.  */
==>      i = update_interval (i, charpos);
      if (INTERVAL_LAST_POS (i) != gl_state.b_property)
        {
          invalidate = 0;
          gl_state.forward_i = i;
          gl_state.e_property = INTERVAL_LAST_POS (i) - gl_state.offset;
        }
    }

Here's some hopefully useful info from the stack:

(dbx) frame 1
Current function is update_interval
(dbx) print pos
pos = 30065
(dbx) print i
i = 0xb46710
(dbx) print *i
*i = {
    total_length  = 357181U
    position      = 144991U
    (*i).left     = 0x110ba4c
    (*i).right    = 0x1113f10
    up            = {
        (*i).up.interval = 0x80f1e800
        obj      = -2131630080
    }
    up_obj        = 1U
    gcmarkbit     = 0
    write_protect = 0
    visible       = 0
    front_sticky  = 0
    rear_sticky   = 0
    plist         = 541931520
}
(dbx) print *i->left
*i->left = {
    total_length  = 145078U
    position      = 76520U
    (*i->left).left = 0x10d5684
    (*i->left).right = 0x10adb80
    up            = {
        (*i->left).up.interval = 0xb46710
        obj      = 11822864
    }
    up_obj        = 0
    gcmarkbit     = 0
    write_protect = 0
    visible       = 0
    front_sticky  = 0
    rear_sticky   = 0
    plist         = 541931520
}
(dbx) print *i->right
*i->right = {
    total_length  = 212060U
    position      = 252468U
    (*i->right).left = 0x10b00c4
    (*i->right).right = 0x105348c
    up            = {
        (*i->right).up.interval = 0xb46710
        obj      = 11822864
    }
    up_obj        = 0
    gcmarkbit     = 0
    write_protect = 0
    visible       = 0
    front_sticky  = 0
    rear_sticky   = 0
    plist         = 541931520
}
(dbx) frame 2
Current function is update_syntax_table
(dbx) print i
i = 0x10d5684
(dbx) print *i
*i = {
    total_length  = 76563U
    position      = 30107U
    (*i).left     = 0xfc0bb8
    (*i).right    = 0x113eed8
    up            = {
        (*i).up.interval = 0x110ba4c
        obj      = 17873484
    }
    up_obj        = 0
    gcmarkbit     = 0
    write_protect = 0
    visible       = 0
    front_sticky  = 0
    rear_sticky   = 0
    plist         = 541931520
}
(dbx) 

What should I look for re the buffer text properties?  The buffer is full of
them - it's visiting a C++ file.

The full backtrace is:
 
(dbx) where
=>[1] update_interval(i = 0xb46710, pos = 30065), line 784 in "intervals.c"
  [2] update_syntax_table(charpos = 30065, count = -1, init = 0, object =
541931520), line 179 in "syntax.c"
  [3] re_match_2_internal(bufp = 0x4c1084, string1 = 0x1d8dcd0 "[...]" ...,
size2 = 344731, pos = 30064, regs = 0x4b5ce4, stop = 357181), line 5861 in
"regex.c"
  [4] re_search_2(bufp = 0x4c1084, str1 = 0x1d8dcd0 "[...]" ..., size2 =
344731, startpos = 30064, range = -30064, regs = 0x4b5ce4, stop = 357181),
line 4383 in "regex.c"
  [5] search_buffer(string = 1626133504, pos = 357182, pos_byte = 357182,
lim = 1, lim_byte = 1, n = -1, RE = 1, trt = 541931520, inverse_trt =
541931520, posix = 0), line 1109 in "search.c"
  [6] search_command(string = 1626133504, bound = 541931520, noerror =
541931568, count = 541931520, direction = -1, RE = 1, posix = 0), line 947
in "search.c"
  [7] Fre_search_backward(regexp = 1626133504, bound = 541931520, noerror =
541931568, count = 541931520), line 2192 in "search.c"
  [8] Ffuncall(nargs = 4, args = 0xffbec660), line 2926 in "eval.c"
  [9] Fbyte_code(bytestr = 1621738544, vector = -2137846272, maxdepth = 8),
line 679 in "bytecode.c"
  [10] funcall_lambda(fun = -2136168768, nargs = 1, arg_vector =
0xffbec95c), line 3104 in "eval.c"
  [11] Ffuncall(nargs = 2, args = 0xffbec958), line 2961 in "eval.c"
  [12] Fbyte_code(bytestr = 1621738496, vector = -2137082880, maxdepth = 3),
line 679 in "bytecode.c"
  [13] funcall_lambda(fun = -2136168352, nargs = 0, arg_vector =
0xffbecc44), line 3104 in "eval.c"
  [14] Ffuncall(nargs = 1, args = 0xffbecc40), line 2961 in "eval.c"
  [15] Fbyte_code(bytestr = 1621741376, vector = -2137082688, maxdepth = 2),
line 679 in "bytecode.c"
  [16] funcall_lambda(fun = -2136167200, nargs = 1, arg_vector =
0xffbecf24), line 3104 in "eval.c"
  [17] Ffuncall(nargs = 2, args = 0xffbecf20), line 2961 in "eval.c"
  [18] Fbyte_code(bytestr = 1621739216, vector = -2136238208, maxdepth = 5),
line 679 in "bytecode.c"
  [19] funcall_lambda(fun = -2136170304, nargs = 0, arg_vector =
0xffbed2bc), line 3104 in "eval.c"
  [20] Ffuncall(nargs = 1, args = 0xffbed2b8), line 2961 in "eval.c"
  [21] run_hook_with_args(nargs = 1, args = 0xffbed2b8, cond =
to_completion), line 2574 in "eval.c"
  [22] Frun_hooks(nargs = 1, args = 0xffbed3ec), line 2437 in "eval.c"
  [23] Ffuncall(nargs = 2, args = 0xffbed3e8), line 2896 in "eval.c"
  [24] call1(fn = 542022568, arg1 = 542148848), line 2696 in "eval.c"
  [25] safe_run_hooks_1(hook = 0), line 2037 in "keyboard.c"
  [26] internal_condition_case(bfun = 0x1bea68 =
&`emacs`keyboard.c`safe_run_hooks_1(Lisp_Object hook), handlers = 541931568,
hfun = 0x1beab8 = &`emacs`keyboard.c`safe_run_hooks_error(Lisp_Object
data)), line 1473 in "eval.c"
  [27] safe_run_hooks(hook = 542148848), line 2065 in "keyboard.c"
  [28] update_menu_bar(f = 0x957a00, save_match_data = 0), line 9173 in
"xdisp.c"
  [29] prepare_menu_bars(), line 9059 in "xdisp.c"
  [30] redisplay_internal(preserve_echo_area = 0), line 10874 in "xdisp.c"
  [31] redisplay(), line 10463 in "xdisp.c"
  [32] read_char(commandflag = 1, nmaps = 3, maps = 0xffbedd40, prev_event =
541931520, used_mouse_menu = 0xffbeddc4), line 2550 in "keyboard.c"
  [33] read_key_sequence(keybuf = 0xffbedf30, bufsize = 30, prompt =
541931520, dont_downcase_last = 0, can_return_switch_frame = 1,
fix_current_buffer = 1), line 8863 in "keyboard.c"
  [34] command_loop_1(), line 1538 in "keyboard.c"
  [35] internal_condition_case(bfun = 0x1bb738 = &command_loop_1(), handlers
= 541988464, hfun = 0x1badf0 = &cmd_error(Lisp_Object data)), line 1473 in
"eval.c"
  [36] command_loop_2(), line 1328 in "keyboard.c"
  [37] internal_catch(tag = 541989888, func = 0x1bb350 = &command_loop_2(),
arg = 541931520), line 1213 in "eval.c"
  [38] command_loop(), line 1307 in "keyboard.c"
  [39] recursive_edit_1(), line 1000 in "keyboard.c"
  [40] Frecursive_edit(), line 1061 in "keyboard.c"
  [41] main(argc = 1, argv = 0xffbee43c), line 1794 in "emacs.c"
(dbx) 




reply via email to

[Prev in Thread] Current Thread [Next in Thread]