emacs-devel
[Top][All Lists]
Advanced

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

Re: 23.0.60; Crash on w32 related to invisible text


From: Lennart Borgman (gmail)
Subject: Re: 23.0.60; Crash on w32 related to invisible text
Date: Mon, 24 Mar 2008 02:29:33 +0100
User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.9) Gecko/20071031 Thunderbird/2.0.0.9 Mnenhy/0.7.5.666

Stefan Monnier wrote:
I get crashes in org-mode when I do things in a region with invisible
text. I have not made any simple test case, but from my testing I can see
this:
- There is something strange with the display in org-mode an items content
is hidden. You can position point after the three dots ... If you do that
and check (current-column) you get 0.
- In code if you in org-mode do
(while (my-invisible-p (point))
(forward-line 1))
until point is on a visible char and there insert an overlay with an
after-string it crashes.
Please make the "insert an overlay with an
after-string" more precise, e.g. actual Elisp code.

It looks similar to this, I have not tested if propertize is involved:

  (setq ovl-str (concat "before"
                      (propertize "txt" 'face 'highlight-popup)
                      "after"))
  (overlay-put ovl 'after-string ovl-str)
  (overlay-put ovl 'display "")

See also the attached file. The crash happens in tabkey2-overlay-message if
you let it take the path avoided right under the comment:

      ;; Fix-me: Emacs bug workaround
      (if nil ;;(tabkey2-invisible-p (1- (point)))


Also, does it happen with any Org-mode buffer, or is the
contents/setup important?

It does not seem to be dependent on the buffers content.

Finally, please provide a backtrace.

Sorry, it is compiled with debug info, but there is no backtrace.

You need to run it under a debugger, of course, in order to get
a backtrace.  Please read etc/DEBUG for more info about it.

My memory is short. Jason and Eli told me this a while ago. Here is the traceback:

(gdb) bt
#0  0x0103ab55 in next_element_from_display_vector (it=0x82e600)
    at xdisp.c:6210
#1  0x01039b3b in get_next_display_element (it=0x82e600) at xdisp.c:5734
#2  0x0104ff1b in display_line (it=0x82e600) at xdisp.c:16252
#3  0x0104d64e in try_window_id (w=0x25b7a00) at xdisp.c:14984
#4  0x01048e25 in redisplay_window (window=39549444, just_this_one_p=1)
    at xdisp.c:13389
#5  0x01045435 in redisplay_window_1 (window=39549444) at xdisp.c:12051
#6  0x01020ad5 in internal_condition_case_1 (
    bfun=0x1045403 <redisplay_window_1>, arg=39549444, handlers=24208661,
    hfun=0x10453a9 <redisplay_window_error>) at eval.c:1542
#7  0x010447ab in redisplay_internal (preserve_echo_area=0) at xdisp.c:11664
#8  0x01042d2d in redisplay () at xdisp.c:10809
#9  0x01008d00 in read_char (commandflag=1, nmaps=16, maps=0x82f9c0,
    prev_event=24225793, used_mouse_menu=0x82fb1c, end_time=0x0)
    at keyboard.c:2722
#10 0x0101269d in read_key_sequence (keybuf=0x82fc60, bufsize=30,
    prompt=24225793, dont_downcase_last=0, can_return_switch_frame=1,
    fix_current_buffer=1) at keyboard.c:9458
#11 0x01006351 in command_loop_1 () at keyboard.c:1653
#12 0x010209c5 in internal_condition_case (bfun=0x1006032 <command_loop_1>,
    handlers=24292473, hfun=0x1005a32 <cmd_error>) at eval.c:1494
#13 0x01005d9b in command_loop_2 () at keyboard.c:1370
---Type <return> to continue, or q <return> to quit---
#14 0x010204b6 in internal_catch (tag=24285497,
    func=0x1005d78 <command_loop_2>, arg=24225793) at eval.c:1230
#15 0x01005d51 in command_loop () at keyboard.c:1349
#16 0x0100564e in recursive_edit_1 () at keyboard.c:958
#17 0x010057b2 in Frecursive_edit () at keyboard.c:1020
#18 0x0100279f in main (argc=1, argv=0xa82720) at emacs.c:1784
#19 0x0100124b in __mingw_CRTStartup ()
#20 0x01001298 in mainCRTStartup ()
(gdb)


I'm sorry, but you presume I'm much more intelligent than I am.
I do not understand what tabkey2.el has to do with it all and how to
create an Org-mode buffer that will trigger the crash.

Forgive my stupidness. With tabkey2.el there is a convenient way to get the crash, but I forgot to add it:

- Change the line I pointed to above ("Emacs bug workaround")
- Bring up any org-mode file.
- Make sure you are on a line with its contents hidden. This is what I use when I got it to crash right now (the traceback above is from when I used a bigger file containing this, but I think the crash is similar):

>>>>>>>> test.org >>>>>>>>>>>>>
** Fri Nov 02 23:45:07 2007 (Why does not cua--ena-cua-keys-keymap override viper's defin)
   Why does not cua--ena-cua-keys-keymap override Viper's definition
   of BS, DEL etc? This keymap is in cua--keymap-alist. This alist is
   before viper in emulation-mode-map-alists. So what happens?

** Sun Nov 04 01:59:17 2007 (Kim's key-sequence widget)
   Kim's key-sequence widget
   - Add ks-to-vec. => store vec format
   - Some cleanup.
   - History keys?
   - Different input formats? Use space at the beginning to force desc
     style. Or C-t to toggle, put ^V first?

** Sun Nov 04 12:58:01 2007 (New versions from GnuWin32 to EmacsW32)
   New versions from GnuWin32 to EmacsW32
<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

Only the "**" rows should be visible. (You can toggle that by pressing TAB.) Place point on after at k in "Kim's key-sequence". Turn on tabkey2-mode:

   eval tabkey2.el <-- forgot to add (eval-when-compile (require 'cl))
   M-x tabkey2-mode
   F8

Now it should crash. Eh, perhaps rather "it crashes". On my pc, w32.



So, please give us a recipe starting from `emacs -Q' with *every single
step* necessary to trigger the crash.  Including a small sample
Org-mode file.  It's always safer to assume we're complete idiots.


        Stefan





reply via email to

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