unofficial mirror of bug-gnu-emacs@gnu.org 
 help / color / mirror / code / Atom feed
* bug#15405: 24.3; #[] freezes emacs
@ 2013-09-18  1:50 Leo Liu
  2013-09-18  7:23 ` Andreas Schwab
  2013-09-18 14:36 ` Barry OReilly
  0 siblings, 2 replies; 32+ messages in thread
From: Leo Liu @ 2013-09-18  1:50 UTC (permalink / raw)
  To: 15405

1. M-: #[] RET
2. M-: #[] RET

Emacs frozen.





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18  1:50 bug#15405: 24.3; #[] freezes emacs Leo Liu
@ 2013-09-18  7:23 ` Andreas Schwab
  2013-09-18 14:36 ` Barry OReilly
  1 sibling, 0 replies; 32+ messages in thread
From: Andreas Schwab @ 2013-09-18  7:23 UTC (permalink / raw)
  To: Leo Liu; +Cc: 15405

Leo Liu <sdl.web@gmail.com> writes:

> 1. M-: #[] RET
> 2. M-: #[] RET
>
> Emacs frozen.

I cannot reproduce that.

Andreas.

-- 
Andreas Schwab, SUSE Labs, schwab@suse.de
GPG Key fingerprint = 0196 BAD8 1CE9 1970 F4BE  1748 E4D4 88E3 0EEA B9D7
"And now for something completely different."





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18  1:50 bug#15405: 24.3; #[] freezes emacs Leo Liu
  2013-09-18  7:23 ` Andreas Schwab
@ 2013-09-18 14:36 ` Barry OReilly
  2013-09-18 15:07   ` Eli Zaretskii
  1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 14:36 UTC (permalink / raw)
  To: sdl.web, 15405

[-- Attachment #1: Type: text/plain, Size: 4509 bytes --]

I didn't witness a freeze, but I opened emacs -Q, did M-: #[] twice,
moved point around without a problem, then did C-x 3 and Emacs core
dumped.

Core was generated by `emacs --reverse-video -Q'.
Program terminated with signal 11, Segmentation fault.
#0  0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
(gdb) bt
#0  0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
#1  0x00000000004d0e35 in terminate_due_to_signal (sig=11,
backtrace_limit=40) at emacs.c:369
#2  0x00000000004ea6fe in handle_fatal_signal (sig=11227) at sysdep.c:1626
#3  0x00000000004eaab3 in deliver_thread_signal (sig=11) at sysdep.c:1600
#4  deliver_fatal_thread_signal (sig=11) at sysdep.c:1638
#5  <signal handler called>
#6  0x0000000000554a72 in AREF (f=0x11093b0, spec=11925893) at lisp.h:1170
#7  font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
#8  font_list_entities (f=0x11093b0, spec=11925893) at font.c:2747
#9  0x0000000000558574 in font_find_for_lface (f=0x11093b0,
attrs=0x7fff12382d00, spec=11845218, c=-1) at font.c:3206
#10 0x0000000000558a6b in font_load_for_lface (f=0x8091c5, attrs=0xb8c2f2,
spec=8425920) at font.c:3276
#11 0x00000000004a1882 in realize_x_face (cache=0xd8eb80,
attrs=0x7fff12382d00, former_face_id=<value optimized out>) at xfaces.c:5529
#12 realize_face (cache=0xd8eb80, attrs=0x7fff12382d00,
former_face_id=<value optimized out>) at xfaces.c:5422
#13 0x00000000004a2661 in lookup_face (f=<value optimized out>,
attr=0x7fff12382d00) at xfaces.c:4411
#14 0x00000000004a36b1 in face_at_string_position (w=<value optimized out>,
string=<value optimized out>, pos=<value optimized out>, bufpos=0,
region_beg=-1, region_end=-1, endptr=0x7fff12382e10,
    base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0) at xfaces.c:6194
#15 0x000000000044688c in display_string (string=0xb533e8 "*scratch*",
lisp_string=11874225, face_string=15529169, face_string_pos=1, start=<value
optimized out>, it=0x7fff12383050, field_width=12, precision=-8,
    max_x=<value optimized out>, multibyte=0) at xdisp.c:22278
#16 0x0000000000446f3c in display_mode_element (it=0x7fff12383050, depth=4,
field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
risky=0) at xdisp.c:21031
#17 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=3,
field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
risky=0) at xdisp.c:21203
#18 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=1,
field_width=0, precision=0, elt=<value optimized out>, props=11845218,
risky=0) at xdisp.c:21203
#19 0x0000000000447e44 in display_mode_line (w=<value optimized out>,
face_id=MODE_LINE_INACTIVE_FACE_ID, format=15394390) at xdisp.c:20720
#20 0x0000000000448120 in display_mode_lines (w=0x1140870) at xdisp.c:20665
#21 0x0000000000453710 in redisplay_window (window=18090101,
just_this_one_p=0) at xdisp.c:16104
#22 0x0000000000456ad6 in redisplay_window_0 (window=8425925) at
xdisp.c:13800
#23 0x0000000000541e33 in internal_condition_case_1 (bfun=0x456ab0
<redisplay_window_0>, arg=18090101, handlers=12055734, hfun=0x425e60
<redisplay_window_error>) at eval.c:1376
#24 0x000000000043275d in redisplay_windows (window=12108530) at
xdisp.c:13780
#25 0x0000000000432724 in redisplay_windows (window=12108530) at
xdisp.c:13774
#26 0x00000000004579ca in redisplay_internal () at xdisp.c:13393
#27 0x00000000004debaa in read_char (commandflag=1, map=20004342,
prev_event=11845218, used_mouse_menu=0x7fff123894ef, end_time=0x0) at
keyboard.c:2551
#28 0x00000000004e0381 in read_key_sequence (keybuf=0x7fff12389550,
bufsize=30, prompt=11845218, dont_downcase_last=false,
can_return_switch_frame=true, fix_current_buffer=true) at keyboard.c:9057
#29 0x00000000004e1fc7 in command_loop_1 () at keyboard.c:1434
#30 0x0000000000541cde in internal_condition_case (bfun=0x4e1d40
<command_loop_1>, handlers=11904962, hfun=0x4d9110 <cmd_error>) at
eval.c:1339
#31 0x00000000004d929a in command_loop_2 (ignore=<value optimized out>) at
keyboard.c:1161
#32 0x0000000000541b9b in internal_catch (tag=<value optimized out>,
func=0x4d9280 <command_loop_2>, arg=11845218) at eval.c:1113
#33 0x00000000004d8660 in command_loop () at keyboard.c:1140
#34 recursive_edit_1 () at keyboard.c:779
#35 0x00000000004d9f86 in Frecursive_edit () at keyboard.c:843
#36 0x00000000004d1b0d in main (argc=<value optimized out>,
argv=0x7fff12389b28) at emacs.c:1570
(gdb)

This was a build of commit d6daa95f46bf36fc4428b511040d97153a6f8dab of
the Savannah Git repo, dated Aug 30.

[-- Attachment #2: Type: text/html, Size: 4870 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 14:36 ` Barry OReilly
@ 2013-09-18 15:07   ` Eli Zaretskii
  2013-09-18 15:14     ` Barry OReilly
  0 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 15:07 UTC (permalink / raw)
  To: Barry OReilly; +Cc: 15405, sdl.web

> Date: Wed, 18 Sep 2013 10:36:36 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
> 
> I didn't witness a freeze, but I opened emacs -Q, did M-: #[] twice,
> moved point around without a problem, then did C-x 3 and Emacs core
> dumped.

Doesn't happen here, but my Emacs is compiled without optimizations,
FWIW.

> Core was generated by `emacs --reverse-video -Q'.
> Program terminated with signal 11, Segmentation fault.
> #0  0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
> (gdb) bt
> #0  0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
> #1  0x00000000004d0e35 in terminate_due_to_signal (sig=11,
> backtrace_limit=40) at emacs.c:369
> #2  0x00000000004ea6fe in handle_fatal_signal (sig=11227) at sysdep.c:1626
> #3  0x00000000004eaab3 in deliver_thread_signal (sig=11) at sysdep.c:1600
> #4  deliver_fatal_thread_signal (sig=11) at sysdep.c:1638
> #5  <signal handler called>
> #6  0x0000000000554a72 in AREF (f=0x11093b0, spec=11925893) at lisp.h:1170
> #7  font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
> #8  font_list_entities (f=0x11093b0, spec=11925893) at font.c:2747
> #9  0x0000000000558574 in font_find_for_lface (f=0x11093b0,
> attrs=0x7fff12382d00, spec=11845218, c=-1) at font.c:3206
> #10 0x0000000000558a6b in font_load_for_lface (f=0x8091c5, attrs=0xb8c2f2,
> spec=8425920) at font.c:3276
> #11 0x00000000004a1882 in realize_x_face (cache=0xd8eb80,
> attrs=0x7fff12382d00, former_face_id=<value optimized out>) at xfaces.c:5529
> #12 realize_face (cache=0xd8eb80, attrs=0x7fff12382d00,
> former_face_id=<value optimized out>) at xfaces.c:5422
> #13 0x00000000004a2661 in lookup_face (f=<value optimized out>,
> attr=0x7fff12382d00) at xfaces.c:4411
> #14 0x00000000004a36b1 in face_at_string_position (w=<value optimized out>,
> string=<value optimized out>, pos=<value optimized out>, bufpos=0,
> region_beg=-1, region_end=-1, endptr=0x7fff12382e10,
>     base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0) at xfaces.c:6194
> #15 0x000000000044688c in display_string (string=0xb533e8 "*scratch*",
> lisp_string=11874225, face_string=15529169, face_string_pos=1, start=<value
> optimized out>, it=0x7fff12383050, field_width=12, precision=-8,
>     max_x=<value optimized out>, multibyte=0) at xdisp.c:22278
> #16 0x0000000000446f3c in display_mode_element (it=0x7fff12383050, depth=4,
> field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
> risky=0) at xdisp.c:21031
> #17 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=3,
> field_width=0, precision=-8, elt=<value optimized out>, props=11845218,
> risky=0) at xdisp.c:21203
> #18 0x0000000000447570 in display_mode_element (it=0x7fff12383050, depth=1,
> field_width=0, precision=0, elt=<value optimized out>, props=11845218,
> risky=0) at xdisp.c:21203
> #19 0x0000000000447e44 in display_mode_line (w=<value optimized out>,
> face_id=MODE_LINE_INACTIVE_FACE_ID, format=15394390) at xdisp.c:20720

This crash happens when Emacs tries to display the mode line of the
non-selected window.  Can you show the values of vec and of i in frame
#7?





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 15:07   ` Eli Zaretskii
@ 2013-09-18 15:14     ` Barry OReilly
  2013-09-18 15:27       ` Eli Zaretskii
  0 siblings, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 15:14 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: 15405, sdl.web

[-- Attachment #1: Type: text/plain, Size: 241 bytes --]

(gdb) f 7
#7  font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
warning: Source file is more recent than executable.
2624          entity = AREF (vec, i);
(gdb) p vec
$1 = <value optimized out>
(gdb) p i
$2 = 201326591
(gdb)

[-- Attachment #2: Type: text/html, Size: 304 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 15:14     ` Barry OReilly
@ 2013-09-18 15:27       ` Eli Zaretskii
  2013-09-18 15:41         ` Stephen Berman
  0 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 15:27 UTC (permalink / raw)
  To: Barry OReilly; +Cc: 15405, sdl.web

> Date: Wed, 18 Sep 2013 11:14:58 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
> Cc: sdl.web@gmail.com, 15405@debbugs.gnu.org
> 
> (gdb) f 7
> #7  font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
> warning: Source file is more recent than executable.
> 2624          entity = AREF (vec, i);
> (gdb) p vec
> $1 = <value optimized out>
> (gdb) p i
> $2 = 201326591
> (gdb)

Unhelpful, sigh...  Can you try reproducing this in an unoptimized
build, where GDB will show values we can trust?

Thanks.





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 15:27       ` Eli Zaretskii
@ 2013-09-18 15:41         ` Stephen Berman
  2013-09-18 16:26           ` Eli Zaretskii
  0 siblings, 1 reply; 32+ messages in thread
From: Stephen Berman @ 2013-09-18 15:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Barry OReilly, 15405, sdl.web

On Wed, 18 Sep 2013 18:27:19 +0300 Eli Zaretskii <eliz@gnu.org> wrote:

>> Date: Wed, 18 Sep 2013 11:14:58 -0400
>> From: Barry OReilly <gundaetiapo@gmail.com>
>> Cc: sdl.web@gmail.com, 15405@debbugs.gnu.org
>> 
>> (gdb) f 7
>> #7  font_delete_unmatched (f=0x11093b0, spec=11925893) at font.c:2624
>> warning: Source file is more recent than executable.
>> 2624          entity = AREF (vec, i);
>> (gdb) p vec
>> $1 = <value optimized out>
>> (gdb) p i
>> $2 = 201326591
>> (gdb)
>
> Unhelpful, sigh...  Can you try reproducing this in an unoptimized
> build, where GDB will show values we can trust?
>
> Thanks.

I also get a segfault with emacs -Q, M-: #[], M-: #[], C-x 3; backtrace below.

In GNU Emacs 24.3.50.4 (x86_64-suse-linux-gnu, GTK+ Version 3.4.4)
 of 2013-09-12 on rosalinde
Bzr revision: 114244 xfq.free@gmail.com-20130912122217-i1l0xo8mslcti8bu
Windowing system distributor `The X.Org Foundation', version 11.0.11203000
System Description:	openSUSE 12.2 (x86_64)

Configured using:
 `configure --without-toolkit-scroll-bars 'CFLAGS=-g3 -O0''

Important settings:
  value of $LANG: en_US.UTF-8
  value of $XMODIFIERS: @im=local
  locale-coding-system: utf-8-unix
  default enable-multibyte-characters: t

(gdb) r -Q
Starting program: /data/steve/lib/emacs/gtk/src/emacs -Q
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib64/libthread_db.so.1".
[New Thread 0x7fffec4d9700 (LWP 12680)]
Detaching after fork from child process 12681.
Detaching after fork from child process 12682.
[New Thread 0x7fffe9935700 (LWP 12683)]
[New Thread 0x7fffe9134700 (LWP 12684)]
Detaching after fork from child process 12685.
[New Thread 0x7fffd95af700 (LWP 12686)]

Program received signal SIGSEGV, Segmentation fault.
0x0000000000595b98 in AREF (array=9179653, idx=201326591)
    at /data/steve/bzr/emacs/quickfixes/src/lisp.h:1170
1170      return XVECTOR (array)->contents[idx];
(gdb) bt full
#0  0x0000000000595b98 in AREF (array=9179653, idx=201326591)
    at /data/steve/bzr/emacs/quickfixes/src/lisp.h:1170
No locals.
#1  0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=19000077, 
    size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
        entity = 12809621
        val = 12612338
        prop = 32767
        i = 201326591
#2  0x00000000005d1c6c in font_list_entities (f=0x11ccd30, spec=19000077)
    at /data/steve/bzr/emacs/quickfixes/src/font.c:2747
        cache = 16364646
        driver_list = 0x1574990
        ftype = 12612338
        val = 9179653
        list = 20752454
        size = 0
        need_filtering = true
        i = 0
#3  0x00000000005d35fa in font_find_for_lface (f=0x11ccd30, attrs=
    0x7fffffff9050, spec=23956789, c=-1)
    at /data/steve/bzr/emacs/quickfixes/src/font.c:3206
        work = 19000077
        entities = 5750772
---Type <return> to continue, or q <return> to quit---
        val = 24014354                                                          
        foundry = {16211730, 9179653, 140737488326256}                          
        family = 0x7fffffff8d70                                                 
        registry = {12916738, 9179653, 0}                                       
        adstyle = {12612338, 9179653, 77}                                       
        pixel_size = 15                                                         
        i = 0                                                                   
        j = 0                                                                   
        k = 0                                                                   
        l = 0                                                                   
        sa_count = 8                                                            
        sa_must_free = false                                                    
#4  0x00000000005d38f6 in font_load_for_lface (f=0x11ccd30, attrs=              
    0x7fffffff9050, spec=23956789)                                              
    at /data/steve/bzr/emacs/quickfixes/src/font.c:3276                         
        entity = 23956789                                                       
        name = 5856228                                                          
#5  0x00000000004eb6fd in realize_x_face (cache=0xcb50c0, attrs=0x7fffffff9050) 
    at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:5531                       
        fontset = 2                                                             
        face = 0x1c16fb0                                                        
        default_face = 0x16b34f0                                                
        f = 0x11ccd30                                                           
        stipple = 12654370                                                      
---Type <return> to continue, or q <return> to quit---                          
        underline = 9696737                                                     
        overline = 12654370                                                     
        strike_through = 12654370                                               
        box = 0                                                                 
#6  0x00000000004eb3a8 in realize_face (cache=0xcb50c0, attrs=0x7fffffff9050,   
    former_face_id=-1) at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:5423    
        face = 0x0                                                              
#7  0x00000000004e8fe9 in lookup_face (f=0x11ccd30, attr=0x7fffffff9050)        
    at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:4412                       
        cache = 0xcb50c0                                                        
        hash = 1192808                                                          
        i = 617                                                                 
        face = 0x0                                                              
#8  0x00000000004eccea in face_at_string_position (w=0x121e960, string=         
    16184305, pos=1, bufpos=0, region_beg=-1, region_end=-1, endptr=            
    0x7fffffff9188, base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0)
    at /data/steve/bzr/emacs/quickfixes/src/xfaces.c:6195
        prop = 16081570
        position = 4
        end = 16
        limit = 16
        f = 0x11ccd30
        attrs = {12612914, 13247729, 9437897, 12653794, 452, 12654034, 
    12653794, 12612338, 12612338, 9696673, 9696737, 12612338, 12612338, 
---Type <return> to continue, or q <return> to quit---
    12612338, 9696566, 23956789, 12612338, 13248193}
        base_face = 0xce7de0
        multibyte_p = false
        prop_name = 12612914
#9  0x0000000000467fe0 in display_string (string=0xc0e818 "*scratch*", 
    lisp_string=12641249, face_string=16184305, face_string_pos=1, start=0, it=
    0x7fffffff9650, field_width=12, precision=-8, max_x=0, multibyte=0)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:22284
        endptr = 4
        face = 0x595a2a <SDATA+24>
        hpos_at_start = 8
        saved_face_id = 2
        row = 0x1c19e60
        it_charpos = 12641249
#10 0x0000000000464dec in display_mode_element (it=0x7fffffff9650, depth=4, 
    field_width=0, precision=-8, elt=16184305, props=12612338, risky=0)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:21036
        nglyphs_before = 8
        nwritten = -6
        multibyte = false
        bytepos = 1
        charpos = 1
        spec = 0xc0e818 "*scratch*"
        string = 12641249
---Type <return> to continue, or q <return> to quit---
        percent_position = 1
        last_offset = 0
        c = 98 'b'
        offset = 4
        n = 0
        field = 12
        prec = -8
        literal = 0
#11 0x0000000000465303 in display_mode_element (it=0x7fffffff9650, depth=3, 
    field_width=0, precision=-8, elt=16129126, props=12612338, risky=0)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:21208
        halftail = 16129126
        len = 0
        car = 0
        tem = 4289776
        n = 0
        field = 0
        prec = 0
        literal = 0
#12 0x0000000000465303 in display_mode_element (it=0x7fffffff9650, depth=1, 
    field_width=0, precision=0, elt=16234998, props=12612338, risky=0)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:21208
        halftail = 16235526
        len = 7
---Type <return> to continue, or q <return> to quit---
        car = 16083841
        tem = 4289776
        n = 8
        field = 5780140
        prec = 0
        literal = 0
#13 0x0000000000464269 in display_mode_line (w=0x121e960, face_id=
    MODE_LINE_INACTIVE_FACE_ID, format=16235606)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:20725
        it = {
          window = 18999653, 
          w = 0x121e960, 
          f = 0x11ccd30, 
          method = GET_FROM_STRING, 
          stop_charpos = 12, 
          prev_stop = 0, 
          base_level_stop = 0, 
          end_charpos = 12, 
          s = 0x0, 
          string_nchars = 9, 
          region_beg_charpos = -1, 
          region_end_charpos = -1, 
          redisplay_end_trigger_charpos = 0, 
          multibyte_p = 0, 
---Type <return> to continue, or q <return> to quit---
          header_line_p = 0, 
          string_from_display_prop_p = 0, 
          string_from_prefix_prop_p = 0, 
          from_disp_prop_p = 0, 
          ellipsis_p = 0, 
          avoid_cursor_p = 0, 
          dp = 0x0, 
          dpvec = 0x0, 
          dpend = 0x0, 
          dpvec_char_len = 0, 
          dpvec_face_id = 0, 
          saved_face_id = 2, 
          ctl_chars = {0 <repeats 16 times>}, 
          start = {
            pos = {
              charpos = 0, 
              bytepos = 0
            }, 
            overlay_string_index = 0, 
            string_pos = {
              charpos = 0, 
              bytepos = 0
            }, 
            dpvec_index = 0
---Type <return> to continue, or q <return> to quit---
          }, 
          current = {
            pos = {
              charpos = 0, 
              bytepos = 0
            }, 
            overlay_string_index = -1, 
            string_pos = {
              charpos = 0, 
              bytepos = 0
            }, 
            dpvec_index = -1
          }, 
          n_overlay_strings = 0, 
          overlay_strings_charpos = 0, 
          overlay_strings = {0 <repeats 16 times>}, 
          string_overlays = {0 <repeats 16 times>}, 
          string = 12641249, 
          from_overlay = 0, 
          stack = {{
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
---Type <return> to continue, or q <return> to quit---
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
---Type <return> to continue, or q <return> to quit---
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                comp = {
                  object = 0
                }, 
                stretch = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
---Type <return> to continue, or q <return> to quit---
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
---Type <return> to continue, or q <return> to quit---
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
---Type <return> to continue, or q <return> to quit---
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                comp = {
                  object = 0
                }, 
                stretch = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
---Type <return> to continue, or q <return> to quit---
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
---Type <return> to continue, or q <return> to quit---
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
---Type <return> to continue, or q <return> to quit---
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                comp = {
                  object = 0
                }, 
                stretch = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
---Type <return> to continue, or q <return> to quit---
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
---Type <return> to continue, or q <return> to quit---
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
---Type <return> to continue, or q <return> to quit---
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                comp = {
                  object = 0
                }, 
                stretch = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
---Type <return> to continue, or q <return> to quit---
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }, {
              string = 0, 
              string_nchars = 0, 
              end_charpos = 0, 
              stop_charpos = 0, 
---Type <return> to continue, or q <return> to quit---
              prev_stop = 0, 
              base_level_stop = 0, 
              cmp_it = {
                stop_pos = 0, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 0, 
              u = {
                image = {
                  object = 0, 
                  slice = {
                    x = 0, 
                    y = 0, 
---Type <return> to continue, or q <return> to quit---
                    width = 0, 
                    height = 0
                  }, 
                  image_id = 0
                }, 
                comp = {
                  object = 0
                }, 
                stretch = {
                  object = 0
                }
              }, 
              position = {
                charpos = 0, 
                bytepos = 0
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 0
                }, 
                overlay_string_index = 0, 
                string_pos = {
                  charpos = 0, 
---Type <return> to continue, or q <return> to quit---
                  bytepos = 0
                }, 
                dpvec_index = 0
              }, 
              from_overlay = 0, 
              area = LEFT_MARGIN_AREA, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = NEUTRAL_DIR, 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 0
            }}, 
          sp = 0, 
          selective = 0, 
          what = IT_EOB, 
          face_id = 2, 
---Type <return> to continue, or q <return> to quit---
          selective_display_ellipsis_p = 1, 
          ctl_arrow_p = 1, 
          face_box_p = 1, 
          start_of_box_run_p = 0, 
          end_of_box_run_p = 0, 
          overlay_strings_at_end_processed_p = 0, 
          ignore_overlay_strings_at_pos_p = 0, 
          glyph_not_available_p = 0, 
          starts_in_middle_of_char_p = 0, 
          face_before_selective_p = 0, 
          constrain_row_ascent_descent_p = 0, 
          line_wrap = TRUNCATE, 
          base_face_id = 2, 
          c = 32, 
          len = 1, 
          cmp_it = {
            stop_pos = 0, 
            id = -1, 
            ch = -2, 
            rule_idx = 0, 
            lookback = 0, 
            nglyphs = 0, 
            reversed_p = false, 
            charpos = 0, 
---Type <return> to continue, or q <return> to quit---
            nchars = 0, 
            nbytes = 0, 
            from = 0, 
            to = 0, 
            width = 0
          }, 
          char_to_display = 32, 
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE, 
          image_id = 0, 
          slice = {
            x = 12612338, 
            y = 12612338, 
            width = 12612338, 
            height = 12612338
          }, 
          space_width = 12612338, 
          voffset = 0, 
          tab_width = 8, 
          font_height = 12612338, 
          object = 9447465, 
          position = {
            charpos = 1, 
            bytepos = 1
          }, 
---Type <return> to continue, or q <return> to quit---
          truncation_pixel_width = 9, 
          continuation_pixel_width = 0, 
          first_visible_x = 0, 
          last_visible_x = 378, 
          last_visible_y = 594, 
          extra_line_spacing = 0, 
          max_extra_line_spacing = 0, 
          override_ascent = -1, 
          override_descent = 0, 
          override_boff = 0, 
          glyph_row = 0x1c19e60, 
          area = TEXT_AREA, 
          nglyphs = 1, 
          pixel_width = 9, 
          ascent = 14, 
          descent = 4, 
          max_ascent = 14, 
          max_descent = 4, 
          phys_ascent = 0, 
          phys_descent = 0, 
          max_phys_ascent = 11, 
          max_phys_descent = 0, 
          current_x = 73, 
          continuation_lines_width = 0, 
---Type <return> to continue, or q <return> to quit---
          eol_pos = {
            charpos = 0, 
            bytepos = 0
          }, 
          current_y = 0, 
          first_vpos = 0, 
          vpos = 0, 
          hpos = 8, 
          left_user_fringe_bitmap = 0, 
          right_user_fringe_bitmap = 0, 
          left_user_fringe_face_id = 0, 
          right_user_fringe_face_id = 0, 
          bidi_p = 1, 
          bidi_it = {
            bytepos = 0, 
            charpos = 0, 
            ch = -1, 
            nchars = -1, 
            ch_len = 1, 
            type = NEUTRAL_B, 
            type_after_w1 = NEUTRAL_B, 
            orig_type = NEUTRAL_B, 
            resolved_level = 0, 
            invalid_levels = 0, 
---Type <return> to continue, or q <return> to quit---
            invalid_rl_levels = -1, 
            prev = {
              bytepos = 1, 
              charpos = 1, 
              type = UNKNOWN_BT, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            last_strong = {
              bytepos = 0, 
              charpos = 0, 
              type = UNKNOWN_BT, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_neutral = {
              bytepos = 0, 
              charpos = -1, 
              type = UNKNOWN_BT, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            prev_for_neutral = {
              bytepos = 2, 
---Type <return> to continue, or q <return> to quit---
              charpos = -1, 
              type = UNKNOWN_BT, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            next_for_ws = {
              bytepos = 2, 
              charpos = 2, 
              type = NEUTRAL_B, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = UNKNOWN_BT
            }, 
            next_en_pos = 0, 
            next_en_type = UNKNOWN_BT, 
            ignore_bn_limit = -1, 
            sor = L2R, 
            scan_dir = 1, 
            disp_pos = -1, 
            disp_prop = 0, 
            stack_idx = 0, 
            level_stack = {{
                level = 0, 
                override = NEUTRAL_DIR
              } <repeats 64 times>}, 
---Type <return> to continue, or q <return> to quit---
            string = {
              lstring = 12641249, 
              s = 0x0, 
              schars = 9, 
              bufpos = 0, 
              from_disp_str = 0, 
              unibyte = 1
            }, 
            w = 0x121e960, 
            paragraph_dir = NEUTRAL_DIR, 
            separator_limit = -1, 
            prev_was_pdf = 0, 
            first_elt = 1, 
            new_paragraph = 1, 
            frame_window_p = 1
          }, 
          paragraph_embedding = L2R
        }
        face = 0x59668c <BUFFERP+29>
        count = 6
#14 0x000000000046401b in display_mode_lines (w=0x121e960)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:20670
        sel_w = 0x11ccf18
        old_selected_window = 18665245
---Type <return> to continue, or q <return> to quit---
        old_selected_frame = 18664757
        new_frame = 18664757
        old_frame_selected_window = 18665245
        n = 0
#15 0x0000000000455e7c in redisplay_window (window=18999653, just_this_one_p=0)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:16114
        w = 0x121e960
        f = 0x11ccd30
        buffer = 0xc10c40
        old = 0xc10c40
        lpoint = {
          charpos = 192, 
          bytepos = 192
        }
        opoint = {
          charpos = 192, 
          bytepos = 192
        }
        startp = {
          charpos = 1, 
          bytepos = 1
        }
        update_mode_line = 1
        tem = 0
---Type <return> to continue, or q <return> to quit---
        it = {
          window = 0, 
          w = 0x0, 
          f = 0x64, 
          method = 1634230119, 
          stop_charpos = 0, 
          prev_stop = 0, 
          base_level_stop = 0, 
          end_charpos = 0, 
          s = 0x3ff0000000000000 <Address 0x3ff0000000000000 out of bounds>, 
          string_nchars = 0, 
          region_beg_charpos = 4607182418800017408, 
          region_end_charpos = 140737250186747, 
          redisplay_end_trigger_charpos = 0, 
          multibyte_p = 0, 
          header_line_p = 0, 
          string_from_display_prop_p = 0, 
          string_from_prefix_prop_p = 0, 
          from_disp_prop_p = 0, 
          ellipsis_p = 0, 
          avoid_cursor_p = 0, 
          dp = 0x15782f4, 
          dpvec = 0xffffffffffffffff, 
          dpend = 0x1578280, 
---Type <return> to continue, or q <return> to quit---
          dpvec_char_len = -283754549, 
          dpvec_face_id = 32767, 
          saved_face_id = 0, 
          ctl_chars = {0, 0, 23559200, 2, 22607072, 140737488335736, 23559200, 
    2, 22607072, 140737488335736, 0, 2147483647, 140737279606278, 4403, 
    22512280, 140737488335736}, 
          start = {
            pos = {
              charpos = 23559200, 
              bytepos = 2
            }, 
            overlay_string_index = 140737279606409, 
            string_pos = {
              charpos = 29445024, 
              bytepos = 23301808
            }, 
            dpvec_index = 2
          }, 
          current = {
            pos = {
              charpos = 140737279509068, 
              bytepos = 0
            }, 
            overlay_string_index = 140737279621622, 
---Type <return> to continue, or q <return> to quit---
            string_pos = {
              charpos = 140737488335736, 
              bytepos = 23301808
            }, 
            dpvec_index = 1
          }, 
          n_overlay_strings = 140737279508075, 
          overlay_strings_charpos = 23301808, 
          overlay_strings = {0, 23301808, 140737279512008, 0, 23313952, 
    22607072, 140737302643873, 0, 23313952, 22607072, 0, 23319408, 
    140737302643825, 22607072, 0, 23319408}, 
          string_overlays = {140737302643825, 23319408, 140737302398525, 
    22607072, 2147483647, 2, 22607072, 22607072, 12884901888, 18664752, 
    140737488335832, 5858739, 16993912649, 18664757, 2, 18664752}, 
          string = 140737488335856, 
          from_overlay = 5859080, 
          stack = {{
              string = 18664757, 
              string_nchars = -19440, 
              end_charpos = 4380087, 
              stop_charpos = 22512256, 
              prev_stop = 18664752, 
              base_level_stop = 140737488336016, 
              cmp_it = {
---Type <return> to continue, or q <return> to quit---
                stop_pos = 5454175, 
                id = 0, 
                ch = 0, 
                rule_idx = 0, 
                lookback = 0, 
                nglyphs = 0, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 0, 
                nbytes = 0, 
                from = 0, 
                to = 0, 
                width = 0
              }, 
              face_id = 8, 
              u = {
                image = {
                  object = 4294967296, 
                  slice = {
                    x = 4294948096, 
                    y = 0, 
                    width = 0, 
                    height = 5730352
                  }, 
---Type <return> to continue, or q <return> to quit---
                  image_id = 140737488336048
                }, 
                comp = {
                  object = 4294967296
                }, 
                stretch = {
                  object = 4294967296
                }
              }, 
              position = {
                charpos = 5454899, 
                bytepos = 140737488346592
              }, 
              current = {
                pos = {
                  charpos = 0, 
                  bytepos = 140737488336064
                }, 
                overlay_string_index = 5454932, 
                string_pos = {
                  charpos = 140737488336096, 
                  bytepos = 5454976
                }, 
                dpvec_index = 0
---Type <return> to continue, or q <return> to quit---
              }, 
              from_overlay = 0, 
              area = -19216, 
              method = 32767, 
              paragraph_embedding = (L2R | R2L | unknown: 5455008), 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = (unknown: 4294948144), 
              voffset = 32767, 
              space_width = 5303462, 
              font_height = 12612338
            }, {
              string = 12974034, 
              string_nchars = 71303170, 
              end_charpos = 313, 
              stop_charpos = 22505920, 
              prev_stop = 21842112, 
              base_level_stop = 140737488336512, 
              cmp_it = {
---Type <return> to continue, or q <return> to quit---
                stop_pos = 6009011, 
                id = 12038920, 
                ch = 17162134, 
                rule_idx = 0, 
                lookback = 140737488336544, 
                nglyphs = 10582078, 
                reversed_p = false, 
                charpos = 12974034, 
                nchars = 12612338, 
                nbytes = 0, 
                from = 12038920, 
                to = 0, 
                width = 12796946
              }, 
              face_id = 5858894, 
              u = {
                image = {
                  object = 21842112, 
                  slice = {
                    x = 140737488336608, 
                    y = 6009011, 
                    width = 140737488336336, 
                    height = 140737488336224
                  }, 
---Type <return> to continue, or q <return> to quit---
                  image_id = 2
                }, 
                comp = {
                  object = 21842112
                }, 
                stretch = {
                  object = 21842112
                }
              }, 
              position = {
                charpos = 10583006, 
                bytepos = 5858365
              }, 
              current = {
                pos = {
                  charpos = 17162134, 
                  bytepos = 140737488336672
                }, 
                overlay_string_index = 6006667, 
                string_pos = {
                  charpos = 5855786, 
                  bytepos = 10823793
                }, 
                dpvec_index = -18064
---Type <return> to continue, or q <return> to quit---
              }, 
              from_overlay = 10582094, 
              area = 16, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = (unknown: 4294950456), 
              multibyte_p = 1, 
              string_from_display_prop_p = 1, 
              string_from_prefix_prop_p = 1, 
              display_ellipsis_p = 1, 
              avoid_cursor_p = 1, 
              bidi_p = 1, 
              from_disp_prop_p = 1, 
              line_wrap = TRUNCATE, 
              voffset = 0, 
              space_width = 0, 
              font_height = 12612338
            }, {
              string = 4, 
              string_nchars = 12973378, 
              end_charpos = 51550431345, 
              stop_charpos = 10582894, 
              prev_stop = 42960496753, 
              base_level_stop = 12030128, 
              cmp_it = {
---Type <return> to continue, or q <return> to quit---
                stop_pos = 12612338, 
                id = 12612386, 
                ch = 9166453, 
                rule_idx = 0, 
                lookback = 12612386, 
                nglyphs = 4289776, 
                reversed_p = false, 
                charpos = 140737488336592, 
                nchars = 5994053, 
                nbytes = 0, 
                from = 12612338, 
                to = 56, 
                width = 12651584
              }, 
              face_id = -18752, 
              u = {
                image = {
                  object = 5901477, 
                  slice = {
                    x = 0, 
                    y = 1, 
                    width = 140737488336624, 
                    height = 5903153
                  }, 
---Type <return> to continue, or q <return> to quit---
                  image_id = 140737488336928
                }, 
                comp = {
                  object = 5901477
                }, 
                stretch = {
                  object = 5901477
                }
              }, 
              position = {
                charpos = 12672978, 
                bytepos = 140737488336944
              }, 
              current = {
                pos = {
                  charpos = 12672976, 
                  bytepos = 140737488336672
                }, 
                overlay_string_index = 5903186, 
                string_pos = {
                  charpos = 12029984, 
                  bytepos = 12672978
                }, 
                dpvec_index = 16791554
---Type <return> to continue, or q <return> to quit---
              }, 
              from_overlay = 12612338, 
              area = -18320, 
              method = 32767, 
              paragraph_embedding = (L2R | R2L | unknown: 6006664), 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = (unknown: 4294948736), 
              voffset = 32767, 
              space_width = 6050398, 
              font_height = 140737488336824
            }, {
              string = 12672978, 
              string_nchars = 12612386, 
              end_charpos = 140737488336656, 
              stop_charpos = 2, 
              prev_stop = 10582894, 
              base_level_stop = 9282989, 
              cmp_it = {
---Type <return> to continue, or q <return> to quit---
                stop_pos = 140737247946272, 
                id = 5, 
                ch = 5, 
                rule_idx = 0, 
                lookback = 140737488346592, 
                nglyphs = 10581982, 
                reversed_p = false, 
                charpos = 12673170, 
                nchars = 10582974, 
                nbytes = 0, 
                from = 5, 
                to = 0, 
                width = -18336
              }, 
              face_id = 5, 
              u = {
                image = {
                  object = 8, 
                  slice = {
                    x = 12788562, 
                    y = 12030133, 
                    width = 1305670057987, 
                    height = 12651584
                  }, 
---Type <return> to continue, or q <return> to quit---
                  image_id = 140737488336912
                }, 
                comp = {
                  object = 8
                }, 
                stretch = {
                  object = 8
                }
              }, 
              position = {
                charpos = 10581982, 
                bytepos = 12612386
              }, 
              current = {
                pos = {
                  charpos = 51551646141, 
                  bytepos = 10578318
                }, 
                overlay_string_index = 42953962736, 
                string_pos = {
                  charpos = 12030032, 
                  bytepos = 12612338
                }, 
                dpvec_index = 12612338
---Type <return> to continue, or q <return> to quit---
              }, 
              from_overlay = 12612338, 
              area = -18320, 
              method = 32767, 
              paragraph_embedding = (L2R | unknown: 6026992), 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = (unknown: 12030032), 
              voffset = 0, 
              space_width = 10578318, 
              font_height = 1
            }, {
              string = 21842048, 
              string_nchars = -17984, 
              end_charpos = 6009011, 
              stop_charpos = 10626221, 
              prev_stop = 10626221, 
              base_level_stop = 140737488336144, 
              cmp_it = {
---Type <return> to continue, or q <return> to quit---
                stop_pos = 10578302, 
                id = 12612338, 
                ch = 10626301, 
                rule_idx = 0, 
                lookback = 140737488337200, 
                nglyphs = 6015870, 
                reversed_p = false, 
                charpos = 0, 
                nchars = 10626221, 
                nbytes = 0, 
                from = 21657602, 
                to = 0, 
                width = 12
              }, 
              face_id = 12612338, 
              u = {
                image = {
                  object = 140737488337056, 
                  slice = {
                    x = 1, 
                    y = 12612338, 
                    width = 12612338, 
                    height = 12612386
                  }, 
---Type <return> to continue, or q <return> to quit---
                  image_id = 140737488337216
                }, 
                comp = {
                  object = 140737488337056
                }, 
                stretch = {
                  object = 140737488337056
                }
              }, 
              position = {
                charpos = 140737488338928, 
                bytepos = 140737488337216
              }, 
              current = {
                pos = {
                  charpos = 21842016, 
                  bytepos = 140737488337424
                }, 
                overlay_string_index = 10578318, 
                string_pos = {
                  charpos = 140737488337424, 
                  bytepos = 6014199
                }, 
                dpvec_index = 17485824
---Type <return> to continue, or q <return> to quit---
              }, 
              from_overlay = 16, 
              area = 12612338, 
              method = GET_FROM_BUFFER, 
              paragraph_embedding = (unknown: 12449664), 
              multibyte_p = 0, 
              string_from_display_prop_p = 0, 
              string_from_prefix_prop_p = 0, 
              display_ellipsis_p = 0, 
              avoid_cursor_p = 0, 
              bidi_p = 0, 
              from_disp_prop_p = 0, 
              line_wrap = (unknown: 4294949344), 
              voffset = 32767, 
              space_width = 5901785, 
              font_height = 12651584
            }}, 
          sp = 12449664, 
          selective = 140737488337328, 
          what = 12612338, 
          face_id = 0, 
          selective_display_ellipsis_p = 0, 
          ctl_arrow_p = 1, 
          face_box_p = 0, 
---Type <return> to continue, or q <return> to quit---
          start_of_box_run_p = 0, 
          end_of_box_run_p = 0, 
          overlay_strings_at_end_processed_p = 1, 
          ignore_overlay_strings_at_pos_p = 0, 
          glyph_not_available_p = 0, 
          starts_in_middle_of_char_p = 1, 
          face_before_selective_p = 1, 
          constrain_row_ascent_descent_p = 0, 
          line_wrap = TRUNCATE, 
          base_face_id = 12030037, 
          c = 6, 
          len = 12612338, 
          cmp_it = {
            stop_pos = 4289776, 
            id = 12449664, 
            ch = -17952, 
            rule_idx = 32767, 
            lookback = 5858604, 
            nglyphs = 12612338, 
            reversed_p = false, 
            charpos = 140737488337504, 
            nchars = 5904382, 
            nbytes = 0, 
            from = 12038584, 
---Type <return> to continue, or q <return> to quit---
            to = 0, 
            width = 12612338
          }, 
          char_to_display = 12612338, 
          glyphless_method = GLYPHLESS_DISPLAY_THIN_SPACE, 
          image_id = 12788418, 
          slice = {
            x = 140737488337760, 
            y = 6009011, 
            width = 12449664, 
            height = 12651584
          }, 
          space_width = 140737488337568, 
          voffset = 30606, 
          tab_width = 161, 
          font_height = 12651584, 
          object = 12788416, 
          position = {
            charpos = 12651584, 
            bytepos = 12612338
          }, 
          truncation_pixel_width = -17792, 
          continuation_pixel_width = -1, 
          first_visible_x = 32767, 
---Type <return> to continue, or q <return> to quit---
          last_visible_x = 5903272, 
          last_visible_y = 0, 
          extra_line_spacing = 5858604, 
          max_extra_line_spacing = 0, 
          override_ascent = 12612338, 
          override_descent = 0, 
          override_boff = -17712, 
          glyph_row = 0x5a1c2c <Fset_default+586>, 
          area = 12612338, 
          nglyphs = 0, 
          pixel_width = 12788418, 
          ascent = 0, 
          descent = -17632, 
          max_ascent = 32767, 
          max_descent = 5904382, 
          phys_ascent = 0, 
          phys_descent = 12449664, 
          max_phys_ascent = 0, 
          max_phys_descent = 12612338, 
          current_x = 0, 
          continuation_lines_width = 12612338, 
          eol_pos = {
            charpos = 12788416, 
            bytepos = 140737488337760
---Type <return> to continue, or q <return> to quit---
          }, 
          current_y = 6017714, 
          first_vpos = 0, 
          vpos = 12612386, 
          hpos = 0, 
          left_user_fringe_bitmap = 10, 
          right_user_fringe_bitmap = 0, 
          left_user_fringe_face_id = 0, 
          right_user_fringe_face_id = 5, 
          bidi_p = 0, 
          bidi_it = {
            bytepos = 5, 
            charpos = 12449664, 
            ch = 8, 
            nchars = 12788562, 
            ch_len = 21841984, 
            type = 4294949728, 
            type_after_w1 = 32767, 
            orig_type = 6016934, 
            resolved_level = 0, 
            invalid_levels = 12612338, 
            invalid_rl_levels = 0, 
            prev = {
              bytepos = 12067632, 
---Type <return> to continue, or q <return> to quit---
              charpos = 140737488337840, 
              type = 5901785, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = 12651584
            }, 
            last_strong = {
              bytepos = 12067632, 
              charpos = 140737488337808, 
              type = 6006107, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = 12612338
            }, 
            next_for_neutral = {
              bytepos = 25780385678, 
              charpos = 12612338, 
              type = RLE, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = 12067632
            }, 
            prev_for_neutral = {
              bytepos = 140737488337840, 
              charpos = 5858604, 
              type = 12612338, 
              type_after_w1 = UNKNOWN_BT, 
---Type <return> to continue, or q <return> to quit---
              orig_type = 4294949936
            }, 
            next_for_ws = {
              bytepos = 5904382, 
              charpos = 5458739, 
              type = 12612338, 
              type_after_w1 = UNKNOWN_BT, 
              orig_type = 12612338
            }, 
            next_en_pos = 12910626, 
            next_en_type = 12671826, 
            ignore_bn_limit = 12612338, 
            sor = (unknown: 12067632), 
            scan_dir = 0, 
            disp_pos = 12651584, 
            disp_prop = -10064, 
            stack_idx = 32767, 
            level_stack = {{
                level = 5901785, 
                override = NEUTRAL_DIR
              }, {
                level = 12612338, 
                override = NEUTRAL_DIR
              }, {
---Type <return> to continue, or q <return> to quit---
                level = 12910624, 
                override = NEUTRAL_DIR
              }, {
                level = -10016, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 12612338, 
                override = NEUTRAL_DIR
              }, {
                level = -17328, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 5903272, 
                override = NEUTRAL_DIR
              }, {
                level = 5858604, 
                override = NEUTRAL_DIR
              }, {
                level = 12612338, 
                override = NEUTRAL_DIR
              }, {
                level = -17248, 
                override = (L2R | R2L | unknown: 32764)
              }, {
---Type <return> to continue, or q <return> to quit---
                level = 5905452, 
                override = NEUTRAL_DIR
              }, {
                level = 12612338, 
                override = NEUTRAL_DIR
              }, {
                level = 12910626, 
                override = NEUTRAL_DIR
              }, {
                level = 0, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 5904382, 
                override = NEUTRAL_DIR
              }, {
                level = 12067632, 
                override = NEUTRAL_DIR
              }, {
                level = 12612338, 
                override = NEUTRAL_DIR
              }, {
                level = 12612386, 
                override = NEUTRAL_DIR
              }, {
---Type <return> to continue, or q <return> to quit---
                level = 12910624, 
                override = NEUTRAL_DIR
              }, {
                level = -17104, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 6017714, 
                override = NEUTRAL_DIR
              }, {
                level = 12612386, 
                override = NEUTRAL_DIR
              }, {
                level = 9, 
                override = NEUTRAL_DIR
              }, {
                level = 5, 
                override = NEUTRAL_DIR
              }, {
                level = 5, 
                override = NEUTRAL_DIR
              }, {
                level = 12067632, 
                override = (R2L | unknown: 4)
              }, {
---Type <return> to continue, or q <return> to quit---
                level = 20757718, 
                override = NEUTRAL_DIR
              }, {
                level = 10519605, 
                override = NEUTRAL_DIR
              }, {
                level = 16923442, 
                override = NEUTRAL_DIR
              }, {
                level = -17056, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 5493178, 
                override = NEUTRAL_DIR
              }, {
                level = -17151, 
                override = (unknown: 32512)
              }, {
                level = 16923442, 
                override = NEUTRAL_DIR
              }, {
                level = 18862653, 
                override = NEUTRAL_DIR
              }, {
---Type <return> to continue, or q <return> to quit---
                level = -17088, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 5856265, 
                override = NEUTRAL_DIR
              }, {
                level = 12612386, 
                override = NEUTRAL_DIR
              }, {
                level = 10, 
                override = NEUTRAL_DIR
              }, {
                level = 18862653, 
                override = NEUTRAL_DIR
              }, {
                level = -17056, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 5856148, 
                override = NEUTRAL_DIR
              }, {
                level = 2, 
                override = NEUTRAL_DIR
              }, {
---Type <return> to continue, or q <return> to quit---
                level = 18862653, 
                override = NEUTRAL_DIR
              }, {
                level = -16880, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 5465101, 
                override = NEUTRAL_DIR
              }, {
                level = 12612338, 
                override = NEUTRAL_DIR
              }, {
                level = 16923442, 
                override = NEUTRAL_DIR
              }, {
                level = 20879878, 
                override = NEUTRAL_DIR
              }, {
                level = 29424961, 
                override = NEUTRAL_DIR
              }, {
                level = 29426336, 
                override = NEUTRAL_DIR
              }, {
---Type <return> to continue, or q <return> to quit---
                level = 29645253, 
                override = NEUTRAL_DIR
              }, {
                level = 12662322, 
                override = NEUTRAL_DIR
              }, {
                level = 16540550, 
                override = NEUTRAL_DIR
              }, {
                level = 16540166, 
                override = NEUTRAL_DIR
              }, {
                level = 12612338, 
                override = NEUTRAL_DIR
              }, {
                level = -16928, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 6045971, 
                override = NEUTRAL_DIR
              }, {
                level = 12662322, 
                override = NEUTRAL_DIR
              }, {
---Type <return> to continue, or q <return> to quit---
                level = 12654562, 
                override = NEUTRAL_DIR
              }, {
                level = -16832, 
                override = (L2R | R2L | unknown: 32764)
              }, {
                level = 5450759, 
                override = NEUTRAL_DIR
              }, {
                level = 17308406, 
                override = NEUTRAL_DIR
              }, {
                level = 17308406, 
                override = NEUTRAL_DIR
              }, {
                level = -16784, 
                override = (L2R | R2L | unknown: 32764)
              }}, 
            string = {
              lstring = 5493178, 
              s = 0x13cda01  <incomplete sequence \304>, 
              schars = 12612338, 
              bufpos = 20765238, 
              from_disp_str = 0, 
---Type <return> to continue, or q <return> to quit---
              unibyte = 1
            }, 
            w = 0x7fffffffbff0, 
            paragraph_dir = (unknown: 4289776), 
            separator_limit = 139646566645360, 
            prev_was_pdf = 0, 
            first_elt = 1, 
            new_paragraph = 0, 
            frame_window_p = 0
          }, 
          paragraph_embedding = (unknown: 18664752)
        }
        current_matrix_up_to_date_p = 0
        used_current_matrix_p = 0
        buffer_unchanged_p = 0
        temp_scroll_step = 0
        count = 5
        rc = 6
        centering_position = -1
        last_line_misfit = 0
        beg_unchanged = 191
        end_unchanged = 0
        frame_line_height = 18
#16 0x000000000044ee00 in redisplay_window_0 (window=18999653)
---Type <return> to continue, or q <return> to quit---
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13811
No locals.
#17 0x00000000005b911b in internal_condition_case_1 (bfun=
    0x44edbe <redisplay_window_0>, arg=18999653, handlers=12874982, hfun=
    0x44ed8d <redisplay_window_error>)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:1376
        val = 12651589
        c = {
          tag = 12612338, 
          val = 12612338, 
          next = 0x7fffffffd8e0, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {0, 8304084069479131285, 4289776, 140737488346592, 0, 
    0, 8304084066473912469, -8304084390187849579}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {12858368, 12912992, 12612338, 140737488339152, 
    5903272, 5858604, 12612338, 140737488339232, 5905452, 12612338, 12858370, 
    140737488339312, 25775708158, 12651584, 140737488339256, 5858739}
              }
            }}, 
          handlerlist = 0x7fffffffd8b0, 
          lisp_eval_depth = 0, 
---Type <return> to continue, or q <return> to quit---
          pdlcount = 5, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
        h = {
          handler = 12874982, 
          var = 12612338, 
          chosen_clause = 12524480, 
          tag = 0x7fffffffc030, 
          next = 0x7fffffffd8b0
        }
#18 0x000000000044ed6e in redisplay_windows (window=18999653)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13791
        w = 0x121e960
#19 0x000000000044ed24 in redisplay_windows (window=29341981)
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13785
        w = 0x1bfb918
#20 0x000000000044e090 in redisplay_internal ()
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:13402
        f = 0x11ccd30
        w = 0x11ccf18
        sw = 0x11ccf18
        fr = 0x11ccd30
---Type <return> to continue, or q <return> to quit---
        pending = 0
        must_finish = false
        match_p = true
        tlbufpos = {
          charpos = 192, 
          bytepos = 192
        }
        tlendpos = {
          charpos = 0, 
          bytepos = 0
        }
        number_of_visible_frames = 1
        count = 2
        sf = 0x11ccd30
        polling_stopped_here = 0
        tail = 16381046
        frame = 18664757
        consider_all_windows_p = 1
        update_miniwindow_p = 0
#21 0x000000000044c57b in redisplay ()
    at /data/steve/bzr/emacs/quickfixes/src/xdisp.c:12690
No locals.
#22 0x000000000052c14d in read_char (commandflag=1, map=20758678, prev_event=
    12612338, used_mouse_menu=0x7fffffffd54f, end_time=0x0)
---Type <return> to continue, or q <return> to quit---
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:2553
        echo_current = true
        c = 12612338
        jmpcount = 20758528
        local_getcjmp = {{
            __jmpbuf = {5858956, 12657154, 140737488343600, 5936417, 16, 
    12651589, 140737488343536, 5902566}, 
            __mask_was_saved = 16856048, 
            __saved_mask = {
              __val = {17256320, 12612096, 12612338, 18446744073709551615, 
    16856048, 140737488343584, 5903131, 192, 17256322, 16856048, 17256320, 
    140737488343728, 5504237, 12612338, 2, 12612338}
            }
          }}
        save_jump = {{
            __jmpbuf = {2, 2, 6801108, 140737488342768, 2, 12612338, 12612338, 
    6006528}, 
            __mask_was_saved = -11792, 
            __saved_mask = {
              __val = {10073253, 52, 21841792, 140737488343456, 6014077, 
    140737488343456, 25775708158, 12651584, 30064759144, 12651584, 
    140737488343416, 5858739, 25782605618, 12651589, 12651584, 12651584}
            }
          }}
---Type <return> to continue, or q <return> to quit---
        tem = 140737488343824
        save = 5855468
        previous_echo_area_message = 12612338
        also_record = 12612338
        reread = false
        gcpro1 = {
          next = 0x1003802, 
          var = 0x5, 
          nvars = 140737488343232
        }
        gcpro2 = {
          next = 0xc072f2, 
          var = 0xf72a82, 
          nvars = 16791554
        }
        polling_stopped_here = false
        orig_kboard = 0x1676210
#23 0x0000000000537956 in read_key_sequence (keybuf=0x7fffffffd720, bufsize=
    30, prompt=12612338, dont_downcase_last=false, can_return_switch_frame=
    true, fix_current_buffer=true)
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:9066
        interrupted_kboard = 0x1676210
        interrupted_frame = 0x11ccd30
        key = 6016934
---Type <return> to continue, or q <return> to quit---
        used_mouse_menu = false
        echo_local_start = 0
        last_real_key_start = 0
        keys_local_start = 0
        new_binding = 5858604
        count = 2
        t = 0
        echo_start = 0
        keys_start = 0
        current_binding = 20758678
        first_event = 12612338
        first_unbound = 31
        mock_input = 0
        fkey = {
          parent = 20575894, 
          map = 20575894, 
          start = 0, 
          end = 0
        }
        keytran = {
          parent = 12591686, 
          map = 12591686, 
          start = 0, 
          end = 0
---Type <return> to continue, or q <return> to quit---
        }
        indec = {
          parent = 20575878, 
          map = 20575878, 
          start = 0, 
          end = 0
        }
        shift_translated = false
        delayed_switch_frame = 12612338
        original_uppercase = 12787376
        original_uppercase_position = -1
        dummyflag = false
        starting_buffer = 0xc10c40
        fake_prefixed_keys = 12612338
        gcpro1 = {
          next = 0x7fffffffd5d0, 
          var = 0x5a17fe <set_internal+1104>, 
          nvars = 5858739
        }
#24 0x0000000000529ab4 in command_loop_1 ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1436
        cmd = 16791554
        keybuf = {96, 204, 12612386, 20677878, 119, 12612338, 140737488344928, 
    5455011, 140737488344960, 9193134, 12671922, 18664752, 140737488345008, 
---Type <return> to continue, or q <return> to quit---
    5114937, 0, 6810581, 1, 12612338, 12612338, 9193145, 140737488345040, 0, 
    140737488345104, 5411694, 140737488345136, 20677878, 12612338, 18664752, 
    140737488345104, 0}
        i = 2
        prev_modiff = 10
        prev_buffer = 0xc10c40
        already_adjusted = false
#25 0x00000000005b8fc4 in internal_condition_case (bfun=
    0x529700 <command_loop_1>, handlers=12671826, hfun=0x529053 <cmd_error>)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:1339
        val = 0
        c = {
          tag = 12612338, 
          val = 12612338, 
          next = 0x7fffffffda60, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {0, 8304084069791606933, 4289776, 140737488346592, 0, 
    0, 8304084069739178133, -8304084391050434411}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {10142659682659117205, 0, 140737298756521, 4294967295, 
    140737257761200, 140737298753776, 9143960, 0, 140737488346592, 0, 0, 
    140737488345968, 140737351945093, 5, 0, 5}
---Type <return> to continue, or q <return> to quit---
              }
            }}, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
        h = {
          handler = 12671826, 
          var = 12612338, 
          chosen_clause = 12612386, 
          tag = 0x7fffffffd8e0, 
          next = 0x0
        }
#26 0x000000000052945d in command_loop_2 (ignore=12612338)
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1163
        val = 0
#27 0x00000000005b8a0e in internal_catch (tag=12667714, func=
    0x529437 <command_loop_2>, arg=12612338)
    at /data/steve/bzr/emacs/quickfixes/src/eval.c:1113
        c = {
          tag = 12667714, 
---Type <return> to continue, or q <return> to quit---
          val = 12612338, 
          next = 0x0, 
          gcpro = 0x0, 
          jmp = {{
              __jmpbuf = {0, 8304084069810481301, 4289776, 140737488346592, 0, 
    0, 8304084069783218325, -8304084390975723371}, 
              __mask_was_saved = 0, 
              __saved_mask = {
                __val = {21841696, 140737488345936, 5904382, 4294967296, 
    12612338, 12612338, 12910626, 25769794336, 12651584, 12067632, 12651584, 
    5, 5, 12067632, 12910624, 5858604}
              }
            }}, 
          handlerlist = 0x0, 
          lisp_eval_depth = 0, 
          pdlcount = 2, 
          poll_suppress_count = 1, 
          interrupt_input_blocked = 0, 
          byte_stack = 0x0
        }
#28 0x000000000052940d in command_loop ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:1142
No locals.
#29 0x0000000000528c4e in recursive_edit_1 ()
---Type <return> to continue, or q <return> to quit---
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:781
        count = 1
        val = 12612338
#30 0x0000000000528dbb in Frecursive_edit ()
    at /data/steve/bzr/emacs/quickfixes/src/keyboard.c:845
        count = 0
        buffer = 12612338
#31 0x0000000000526d18 in main (argc=2, argv=0x7fffffffdde8)
    at /data/steve/bzr/emacs/quickfixes/src/emacs.c:1570
        dummy = 140737488346624
        stack_bottom_variable = 0 '\000'
        do_initial_setlocale = true
        dumping = false
        skip_args = 0
        rlim = {
          rlim_cur = 8720000, 
          rlim_max = 18446744073709551615
        }
        no_loadup = false
        junk = 0x0
        dname_arg = 0x0
        ch_to_dir = 0x0

Lisp Backtrace:
---Type <return> to continue, or q <return> to quit---
"redisplay_internal (C function)" (0xbf7c90)





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 15:41         ` Stephen Berman
@ 2013-09-18 16:26           ` Eli Zaretskii
  2013-09-18 17:31             ` Barry OReilly
  2013-09-18 17:57             ` Stephen Berman
  0 siblings, 2 replies; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 16:26 UTC (permalink / raw)
  To: Stephen Berman; +Cc: gundaetiapo, 15405, sdl.web

> From: Stephen Berman <stephen.berman@gmx.net>
> Cc: Barry OReilly <gundaetiapo@gmail.com>,  15405@debbugs.gnu.org,  sdl.web@gmail.com
> Date: Wed, 18 Sep 2013 17:41:42 +0200
> 
> #1  0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=19000077, 
>     size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
>         entity = 12809621
>         val = 12612338
>         prop = 32767
>         i = 201326591

Can you show the value of vec, as a Lisp vector, and in particular its
size?  If the value of i is indeed that large, there's something
strange happening in that loop.

The value zero of the argument 'size' also looks strange.





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 16:26           ` Eli Zaretskii
@ 2013-09-18 17:31             ` Barry OReilly
  2013-09-18 19:26               ` Eli Zaretskii
  2013-09-18 17:57             ` Stephen Berman
  1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 17:31 UTC (permalink / raw)
  To: Eli Zaretskii, Leo Liu, 15405, stephen.berman

[-- Attachment #1: Type: text/plain, Size: 5264 bytes --]

FWIW, only one M-: #[] is necessary in the reproduction recipe.

I used:

diff --git a/src/font.c b/src/font.c
index 68db9f2..0f2d24f 100644
--- a/src/font.c
+++ b/src/font.c
@@ -2619,6 +2619,12 @@ font_delete_unmatched (Lisp_Object vec, Lisp_Object
spec, int size)
   enum font_property_index prop;
   int i;

+  bool noninteractive_old = noninteractive;
+  { struct timespec debug_ts; char debug_dateStr[20]; {
clock_gettime(CLOCK_REALTIME, &debug_ts); struct tm mytm;
localtime_r(&debug_ts.tv_sec, &mytm); strftime(debug_dateStr, 20,
"%Y-%m-%dT%H:%M:%S", &mytm); }
+       printf( "%s.%09ld|pid:%d|tid:%ld|%s|%d| DEBUG: vec size=%ld\n", //
TODO: debugging
+                         debug_dateStr, debug_ts.tv_nsec, getpid(),
pthread_self(), __FILE__, __LINE__, ASIZE(vec) ); fflush(stdout); }
+  Fprin1(vec, Qnil);
+  noninteractive = noninteractive_old;
   for (val = Qnil, i = ASIZE (vec) - 1; i >= 0; i--)
     {
       entity = AREF (vec, i);

Got:
2013-09-18T13:15:22.845944000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
vec size=4
2013-09-18T13:15:22.847422000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
vec size=4611686018628714496
Fatal error 11: Segmentation fault

Clearly the value of i was a 32 bit truncation of that larger value.

#0  0x00000031cfc0e7fd in raise () from /lib64/libpthread.so.0
#1  0x00000000004ced25 in terminate_due_to_signal (sig=11,
backtrace_limit=40) at emacs.c:369
#2  0x00000000004e823e in handle_fatal_signal (sig=15650) at sysdep.c:1626
#3  0x00000000004e85f3 in deliver_thread_signal (sig=11) at sysdep.c:1600
#4  deliver_fatal_thread_signal (sig=11) at sysdep.c:1638
#5  <signal handler called>
#6  0x0000000000552715 in font_delete_unmatched (f=0x1102af0,
spec=18316141) at lisp.h:1170
#7  font_list_entities (f=0x1102af0, spec=18316141) at font.c:2753
#8  0x0000000000556224 in font_find_for_lface (f=0x1102af0,
attrs=0x7fffa07f03d0, spec=11832930, c=-1) at font.c:3212
#9  0x000000000055671b in font_load_for_lface (f=0xe81112, attrs=0xcd4400,
spec=8413600) at font.c:3282
#10 0x000000000049fc62 in realize_x_face (cache=0xd654b0,
attrs=0x7fffa07f03d0, former_face_id=<value optimized out>) at xfaces.c:5526
#11 realize_face (cache=0xd654b0, attrs=0x7fffa07f03d0,
former_face_id=<value optimized out>) at xfaces.c:5419
#12 0x00000000004a0a41 in lookup_face (f=<value optimized out>,
attr=0x7fffa07f03d0) at xfaces.c:4408
#13 0x00000000004a1a91 in face_at_string_position (w=<value optimized out>,
string=<value optimized out>, pos=<value optimized out>, bufpos=0,
region_beg=-1, region_end=-1, endptr=0x7fffa07f0508,
    base_face_id=MODE_LINE_INACTIVE_FACE_ID, mouse_p=0) at xfaces.c:6191
#14 0x0000000000444f45 in display_string (string=0xb503e8 "*scratch*",
lisp_string=11861937, face_string=<value optimized out>, face_string_pos=1,
start=0, it=0x7fffa07f0750, field_width=12, precision=-8,
    max_x=<value optimized out>, multibyte=0) at xdisp.c:22291
#15 0x000000000044582c in display_mode_element (it=0x7fffa07f0750, depth=4,
field_width=0, precision=-8, elt=<value optimized out>, props=11832930,
risky=0) at xdisp.c:21044
#16 0x0000000000445e5c in display_mode_element (it=0x7fffa07f0750, depth=3,
field_width=0, precision=-8, elt=<value optimized out>, props=11832930,
risky=0) at xdisp.c:21216
#17 0x0000000000445e5c in display_mode_element (it=0x7fffa07f0750, depth=1,
field_width=0, precision=0, elt=<value optimized out>, props=11832930,
risky=0) at xdisp.c:21216
#18 0x0000000000446734 in display_mode_line (w=<value optimized out>,
face_id=MODE_LINE_INACTIVE_FACE_ID, format=15318150) at xdisp.c:20733
#19 0x0000000000446a10 in display_mode_lines (w=0x1177950) at xdisp.c:20678
#20 0x0000000000451ee4 in redisplay_window (window=18315605,
just_this_one_p=0) at xdisp.c:16122
#21 0x0000000000455386 in redisplay_window_0 (window=15208722) at
xdisp.c:13819
#22 0x000000000053f9e3 in internal_condition_case_1 (bfun=0x455360
<redisplay_window_0>, arg=18315605, handlers=12043382, hfun=0x425800
<redisplay_window_error>) at eval.c:1376
#23 0x0000000000431a8d in redisplay_windows (window=13452288) at
xdisp.c:13799
#24 0x0000000000431a54 in redisplay_windows (window=13452288) at
xdisp.c:13793
#25 0x0000000000456191 in redisplay_internal () at xdisp.c:13410
#26 0x00000000004dc905 in read_char (commandflag=1, map=19881590,
prev_event=11832930, used_mouse_menu=0x7fffa07f6baf, end_time=0x0) at
keyboard.c:2553
#27 0x00000000004de0f1 in read_key_sequence (keybuf=0x7fffa07f6c10,
bufsize=30, prompt=11832930, dont_downcase_last=false,
can_return_switch_frame=true, fix_current_buffer=true) at keyboard.c:9066
#28 0x00000000004dfb07 in command_loop_1 () at keyboard.c:1436
#29 0x000000000053f88e in internal_condition_case (bfun=0x4df880
<command_loop_1>, handlers=11892674, hfun=0x4d6e70 <cmd_error>) at
eval.c:1339
#30 0x00000000004d6ffa in command_loop_2 (ignore=<value optimized out>) at
keyboard.c:1163
#31 0x000000000053f74b in internal_catch (tag=<value optimized out>,
func=0x4d6fe0 <command_loop_2>, arg=11832930) at eval.c:1113
#32 0x00000000004d63c0 in command_loop () at keyboard.c:1142
#33 recursive_edit_1 () at keyboard.c:781
#34 0x00000000004d7ce6 in Frecursive_edit () at keyboard.c:845
#35 0x00000000004cf9fd in main (argc=<value optimized out>,
argv=0x7fffa07f71e8) at emacs.c:1570

[-- Attachment #2: Type: text/html, Size: 5749 bytes --]

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 16:26           ` Eli Zaretskii
  2013-09-18 17:31             ` Barry OReilly
@ 2013-09-18 17:57             ` Stephen Berman
  1 sibling, 0 replies; 32+ messages in thread
From: Stephen Berman @ 2013-09-18 17:57 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: gundaetiapo, 15405, sdl.web

On Wed, 18 Sep 2013 19:26:50 +0300 Eli Zaretskii <eliz@gnu.org> wrote:

>> From: Stephen Berman <stephen.berman@gmx.net>
>> Cc: Barry OReilly <gundaetiapo@gmail.com>,  15405@debbugs.gnu.org,  sdl.web@gmail.com
>> Date: Wed, 18 Sep 2013 17:41:42 +0200
>> 
>> #1  0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=19000077, 
>>     size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
>>         entity = 12809621
>>         val = 12612338
>>         prop = 32767
>>         i = 201326591
>
> Can you show the value of vec, as a Lisp vector, and in particular its
> size?  If the value of i is indeed that large, there's something
> strange happening in that loop.
>
> The value zero of the argument 'size' also looks strange.

In case the followup by Barry OReilly didn't already give you what you
need to know, are these the values you asked for, or if not, how do I
show them?

(gdb) f 1
#1  0x00000000005d15e9 in font_delete_unmatched (vec=9179653, spec=18992085, 
    size=0) at /data/steve/bzr/emacs/quickfixes/src/font.c:2624
2624          entity = AREF (vec, i);
(gdb) p vec
$1 = 9179653
(gdb) pr
#[]
(gdb) p i
$2 = 201326591
(gdb) pr
#<INVALID_LISP_OBJECT 0x0bffffff>
(gdb) p ASIZE (vec)
$3 = 4611686018628714496
(gdb) pr
1152921504657178624

Steve Berman





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 17:31             ` Barry OReilly
@ 2013-09-18 19:26               ` Eli Zaretskii
  2013-09-18 23:20                 ` Barry OReilly
  2013-09-18 23:41                 ` Barry OReilly
  0 siblings, 2 replies; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-18 19:26 UTC (permalink / raw)
  To: Barry OReilly; +Cc: stephen.berman, 15405, sdl.web

> Date: Wed, 18 Sep 2013 13:31:56 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
> 
> FWIW, only one M-: #[] is necessary in the reproduction recipe.
> 
> I used:
> 
> diff --git a/src/font.c b/src/font.c
> index 68db9f2..0f2d24f 100644
> --- a/src/font.c
> +++ b/src/font.c
> @@ -2619,6 +2619,12 @@ font_delete_unmatched (Lisp_Object vec, Lisp_Object
> spec, int size)
>    enum font_property_index prop;
>    int i;
> 
> +  bool noninteractive_old = noninteractive;
> +  { struct timespec debug_ts; char debug_dateStr[20]; {
> clock_gettime(CLOCK_REALTIME, &debug_ts); struct tm mytm;
> localtime_r(&debug_ts.tv_sec, &mytm); strftime(debug_dateStr, 20,
> "%Y-%m-%dT%H:%M:%S", &mytm); }
> +       printf( "%s.%09ld|pid:%d|tid:%ld|%s|%d| DEBUG: vec size=%ld\n", //
> TODO: debugging
> +                         debug_dateStr, debug_ts.tv_nsec, getpid(),
> pthread_self(), __FILE__, __LINE__, ASIZE(vec) ); fflush(stdout); }
> +  Fprin1(vec, Qnil);
> +  noninteractive = noninteractive_old;
>    for (val = Qnil, i = ASIZE (vec) - 1; i >= 0; i--)
>      {
>        entity = AREF (vec, i);
> 
> Got:
> 2013-09-18T13:15:22.845944000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
> vec size=4
> 2013-09-18T13:15:22.847422000|pid:15278|tid:2868504832|font.c|2625| DEBUG:
> vec size=4611686018628714496
> Fatal error 11: Segmentation fault
> 
> Clearly the value of i was a 32 bit truncation of that larger value.

The next step is to put a hardware watchpoint on that vector, and see
who thrashes it.





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 19:26               ` Eli Zaretskii
@ 2013-09-18 23:20                 ` Barry OReilly
  2013-09-19  7:00                   ` Eli Zaretskii
  2013-09-18 23:41                 ` Barry OReilly
  1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 23:20 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu

[-- Attachment #1: Type: text/plain, Size: 1157 bytes --]

What I've found so far is that the return from the font_list_entities
function's call to font_get_cache is as follows

C-x 3 without evalling #[] (Emacs behaves correctly):
(1 (#<font-spec x unknown DejaVu\ LGC\ Sans\ Mono nil iso10646-1 nil nil
nil nil nil 100 nil ((user-spec . "Monospace 10"))> . []) (#<font-spec x
nil Monospace nil iso8859-1 nil nil nil nil nil nil nil ((:name .
"Monospace 10"))> . []))

M-: #[] then C-x 3 (Emacs core dumps):
(1 (#<font-spec x unknown DejaVu\ LGC\ Sans\ Mono nil iso10646-1 nil nil
nil nil nil 100 nil ((user-spec . "Monospace 10"))> . #[]) (#<font-spec x
nil Monospace nil iso8859-1 nil nil nil nil nil nil nil ((:name .
"Monospace 10"))> . #[]))

The out of place #[] becomes the val input to font_delete_unmatched.

Separately, I found that calling (eq #[] #[]) also causes the problem.
So another reproduction recipe is to let file empty-byte-code.el have
content:

  (eq #[] #[])
  (split-window-right)

Then: emacs -Q --load empty-byte-code.el

Core dump results.

The eq function seems pretty harmless, so perhaps it's worth looking
at the reader that makes a Lisp_Object out of #[]. Where would I find
that?

[-- Attachment #2: Type: text/html, Size: 1382 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 19:26               ` Eli Zaretskii
  2013-09-18 23:20                 ` Barry OReilly
@ 2013-09-18 23:41                 ` Barry OReilly
  1 sibling, 0 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-18 23:41 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu

[-- Attachment #1: Type: text/plain, Size: 122 bytes --]

> I found that calling (eq #[] #[]) also causes the problem.

I realized eq evals its args, so (eval #[]) is more direct.

[-- Attachment #2: Type: text/html, Size: 160 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-18 23:20                 ` Barry OReilly
@ 2013-09-19  7:00                   ` Eli Zaretskii
  2013-09-20 15:33                     ` Barry OReilly
  0 siblings, 1 reply; 32+ messages in thread
From: Eli Zaretskii @ 2013-09-19  7:00 UTC (permalink / raw)
  To: Barry OReilly; +Cc: stephen.berman, 15405, sdl.web

> Date: Wed, 18 Sep 2013 19:20:35 -0400
> From: Barry OReilly <gundaetiapo@gmail.com>
> Cc: Leo Liu <sdl.web@gmail.com>, 15405@debbugs.gnu.org, stephen.berman@gmx.net
> 
> The eq function seems pretty harmless, so perhaps it's worth looking
> at the reader that makes a Lisp_Object out of #[]. Where would I find
> that?

In lread.c:readevalloop, I guess.  Specifically, anything that begins
with "#[" is handled in read1 around line 2595.





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-19  7:00                   ` Eli Zaretskii
@ 2013-09-20 15:33                     ` Barry OReilly
  2013-09-20 16:13                       ` Barry OReilly
  2013-09-20 19:09                       ` Stefan Monnier
  0 siblings, 2 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 15:33 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu

[-- Attachment #1: Type: text/plain, Size: 1167 bytes --]

Here's what happens:
   - read1 reads the #[] and proceeds to create a vector of zero
     length
   - allocate_vectorlike has a special case for zero length vectors:
       if (len == 0)
         p = XVECTOR (zero_vector);
   - zero_vector is a global variable, so all zero length vectors
     point to it. This can be seen when evalling:
       (eq [] []) ; Evalutes to t
       (eq [1 2 3] [1 2 3]) ; Evaluates to nil
   - After read1 creates the zero_vector, it sets bits in the size
     field to indicate it is a PVEC_COMPILED pseudo vector
   - The global zero_vector is thereafter a PVEC_COMPILED pseudo
     vector, including the empty vector of the font data
   - Later, the font_list_entities function checks the size of the
     font data vector using ASIZE. It does not expect a pseudo vector,
     so it makes no such checks.
   - Because the pseudo vector bits are set, the size is very large
   - Indexing too far into the font data vector results in a core dump

What should the behavior be? Perhaps (eval #[]) should evaluate to []
instead of #[]?

Maybe an eassert in font_list_entities that its vector is not a pseudo
vector couldn't hurt either?

[-- Attachment #2: Type: text/html, Size: 1287 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-20 15:33                     ` Barry OReilly
@ 2013-09-20 16:13                       ` Barry OReilly
  2013-09-20 16:21                         ` Drew Adams
  2013-09-20 19:09                       ` Stefan Monnier
  1 sibling, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 16:13 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu

[-- Attachment #1: Type: text/plain, Size: 228 bytes --]

> Perhaps (eval #[]) should evaluate to [] instead of #[]?

An alternative is to fix the counter intuitive fact that (eq [] [])
is t. Doing so could break Elisp code that relies on the behavior, and
possibly impact performance.

[-- Attachment #2: Type: text/html, Size: 273 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-20 16:13                       ` Barry OReilly
@ 2013-09-20 16:21                         ` Drew Adams
  0 siblings, 0 replies; 32+ messages in thread
From: Drew Adams @ 2013-09-20 16:21 UTC (permalink / raw)
  To: Barry OReilly, Eli Zaretskii; +Cc: stephen.berman, 15405, Leo Liu

>> Perhaps (eval #[]) should evaluate to [] instead of #[]?
>
> An alternative is to fix the counter intuitive fact that (eq [] [])
> is t. Doing so could break Elisp code that relies on the behavior, and
> possibly impact performance.

FWIW, this behavior was introduced only recently: 24.3.  It is true for
only this one Emacs release (so far).  It is an incompatible change from
Emacs prior to 24.3, where (eq [] []) is nil.





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-20 15:33                     ` Barry OReilly
  2013-09-20 16:13                       ` Barry OReilly
@ 2013-09-20 19:09                       ` Stefan Monnier
  2013-09-20 19:43                         ` Barry OReilly
  1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-20 19:09 UTC (permalink / raw)
  To: Barry OReilly; +Cc: stephen.berman, 15405, Leo Liu

> What should the behavior be?

(eq #[] #[]) is OK.
(eq [] []) is OK.
(eq #[] []) is not.

So we should fix the code so that there are at least "one empty vector
per vector type".


        Stefan





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-20 19:09                       ` Stefan Monnier
@ 2013-09-20 19:43                         ` Barry OReilly
  2013-09-20 21:26                           ` Stefan Monnier
  0 siblings, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 19:43 UTC (permalink / raw)
  To: Stefan Monnier, dmantipov; +Cc: stephen.berman, 15405, Leo Liu

[-- Attachment #1: Type: text/plain, Size: 763 bytes --]

> FWIW, this behavior was introduced only recently: 24.3. It is true
> for only this one Emacs release (so far). It is an incompatible
> change from Emacs prior to 24.3, where (eq [] []) is nil.

I found the emacs-devel thread for that:
  http://lists.gnu.org/archive/html/emacs-devel/2011-12/msg00112.html
  http://lists.gnu.org/archive/html/emacs-devel/2012-06/msg00112.html

The addition of the zero_vector was tied into other changes of vector
allocation, so I don't suppose there were benchmarks specifically for
the zero_vector addition?

> So we should fix the code so that there are at least "one empty
> vector per vector type".

Thanks for the allowance of "at least". It would be good to assess the
performance impact of "(eq [] []) evaluates to nil".

[-- Attachment #2: Type: text/html, Size: 1060 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-20 19:43                         ` Barry OReilly
@ 2013-09-20 21:26                           ` Stefan Monnier
  2013-09-20 21:38                             ` Barry OReilly
  0 siblings, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-20 21:26 UTC (permalink / raw)
  To: Barry OReilly; +Cc: dmantipov, 15405, Leo Liu, stephen.berman

> Thanks for the allowance of "at least". It would be good to assess the
> performance impact of "(eq [] []) evaluates to nil".

I don't think it has any performance impact whatsoever.


        Stefan





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-20 21:26                           ` Stefan Monnier
@ 2013-09-20 21:38                             ` Barry OReilly
  2013-09-21  1:28                               ` Dmitry Antipov
  0 siblings, 1 reply; 32+ messages in thread
From: Barry OReilly @ 2013-09-20 21:38 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: dmantipov, 15405, Leo Liu, stephen.berman

[-- Attachment #1: Type: text/plain, Size: 129 bytes --]

> I don't think it has any performance impact whatsoever.

If performance didn't motivate making a global zero_vector, what did?

[-- Attachment #2: Type: text/html, Size: 175 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-20 21:38                             ` Barry OReilly
@ 2013-09-21  1:28                               ` Dmitry Antipov
  2013-09-21  1:39                                 ` Dmitry Antipov
  2013-09-21  2:51                                 ` Stefan Monnier
  0 siblings, 2 replies; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-21  1:28 UTC (permalink / raw)
  To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu

On 09/21/2013 01:38 AM, Barry OReilly wrote:

> If performance didn't motivate making a global zero_vector, what did?

1) Small memory saving, like with empty strings.
2) Simple implementation - (eq [] []) is trivial.

BTW, I have no ideas who and why produces empty bytecode strings.
Shouldn't it be disallowed/optimized away? IIUC this is the
only PVEC_xxx type which can be zero-sized.

Dmitry






^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-21  1:28                               ` Dmitry Antipov
@ 2013-09-21  1:39                                 ` Dmitry Antipov
  2013-09-21  2:51                                 ` Stefan Monnier
  1 sibling, 0 replies; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-21  1:39 UTC (permalink / raw)
  To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu

On 09/21/2013 05:28 AM, Dmitry Antipov wrote:

> BTW, I have no ideas who and why produces empty bytecode strings.
> Shouldn't it be disallowed/optimized away? IIUC this is the
> only PVEC_xxx type which can be zero-sized.

I.e. if empty bytecode strings are never produced by the bytecomp and
never used otherwise, shouldn't we just disallow #[] object, like we
disallow an integers too large (or too small) for Lisp_Object?

Dmitry








^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-21  1:28                               ` Dmitry Antipov
  2013-09-21  1:39                                 ` Dmitry Antipov
@ 2013-09-21  2:51                                 ` Stefan Monnier
  2013-09-25 15:22                                   ` Barry OReilly
  1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-21  2:51 UTC (permalink / raw)
  To: Dmitry Antipov; +Cc: Barry OReilly, 15405, Leo Liu, stephen.berman

>> If performance didn't motivate making a global zero_vector, what did?

IIRC such small objects were too small for the memory allocation
routines, so it was easier to handle them this way.


        Stefan





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-21  2:51                                 ` Stefan Monnier
@ 2013-09-25 15:22                                   ` Barry OReilly
  2013-09-25 16:12                                     ` Dmitry Antipov
  2013-09-25 17:10                                     ` Stefan Monnier
  0 siblings, 2 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-25 15:22 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman

[-- Attachment #1: Type: text/plain, Size: 1675 bytes --]

From the code, I thought I could make the following change and have
zero vectors participate in the vector_free_lists.

--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2626,7 +2626,7 @@ verify (VECTOR_BLOCK_SIZE <= (1 <<
PSEUDOVECTOR_SIZE_BITS));

 /* Size of the minimal vector allocated from block.  */

-#define VBLOCK_BYTES_MIN vroundup_ct (header_size + sizeof (Lisp_Object))
+#define VBLOCK_BYTES_MIN vroundup_ct (header_size)

 /* Size of the largest vector allocated from block.  */

After debugging the subsequent core dumping, I found it doesn't work
because Lisp_Vector is defined by:

struct Lisp_Vector
  {
    struct vectorlike_header header;
    union {
      /* ...but sometimes there is also a pointer internally used in
     vector allocation code.  Usually you don't want to touch this.  */
      struct Lisp_Vector *next;

      /* We can't use FLEXIBLE_ARRAY_MEMBER here.  */
      Lisp_Object contents[1];
    } u;
  };

Without any special casing of zero vectors, the allocator calls
SETUP_ON_FREE_LIST for a zero vector and sets v->u.next. But for a
zero vector the allocator only allows enough memory for the header, so
setting the next pointer corrupts other memory.

Of course when a non zero vector is taken from the free list, the next
pointer is no longer needed and can be overridden by the contents.
Clever use of space.

Which of these solutions would be most palatable?
  - Allocate zero vectors as "large_vectors", but with appropriate
    renaming of "large".
  - Allocate separately as a MEM_TYPE_VECTORLIKE, maintain a list of
    zero_vectors for GC
  - Smuggle zero vectors on the vector_free_lists with same allocation
    size as a 1-vector

[-- Attachment #2: Type: text/html, Size: 1908 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-25 15:22                                   ` Barry OReilly
@ 2013-09-25 16:12                                     ` Dmitry Antipov
  2013-09-25 17:35                                       ` Stefan Monnier
  2013-09-25 17:10                                     ` Stefan Monnier
  1 sibling, 1 reply; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-25 16:12 UTC (permalink / raw)
  To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu

On 09/25/2013 07:22 PM, Barry OReilly wrote:

>  From the code, I thought I could make the following change and have
> zero vectors participate in the vector_free_lists.

Of course, this is technically possible. <IMHO> But I don't see a reason for
this at all. Unlike 0 (zero) for arithmetic, "" for string operations,
() (or nil) for lists, etc., #[] (empty bytecode string) makes no sense at all.
Again, if bytecomp never produces such an objects and they're never used
somewhere else, it should be treated as "impossible" object and error should
be signaled once such an object is found. </IMHO>.

Dmitry






^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-25 15:22                                   ` Barry OReilly
  2013-09-25 16:12                                     ` Dmitry Antipov
@ 2013-09-25 17:10                                     ` Stefan Monnier
  1 sibling, 0 replies; 32+ messages in thread
From: Stefan Monnier @ 2013-09-25 17:10 UTC (permalink / raw)
  To: Barry OReilly; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman

> Without any special casing of zero vectors, the allocator calls
> SETUP_ON_FREE_LIST for a zero vector and sets v->u.next.  But for a
> zero vector the allocator only allows enough memory for the header, so
> setting the next pointer corrupts other memory.

Yes, that's why we have special cased the zero-length vectors.

How many different zero vectors do we need?  We at least need 2 (the []
and the #[]), but do we need others?  If not, let's try and change the
code so that we can have those two pre-allocated and use the right one
at the right place.


        Stefan





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-25 16:12                                     ` Dmitry Antipov
@ 2013-09-25 17:35                                       ` Stefan Monnier
  2013-09-25 19:09                                         ` Barry OReilly
  0 siblings, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-25 17:35 UTC (permalink / raw)
  To: Dmitry Antipov; +Cc: Barry OReilly, 15405, Leo Liu, stephen.berman

> Of course, this is technically possible. <IMHO> But I don't see
> a reason for this at all. Unlike 0 (zero) for arithmetic, "" for
> string operations, () (or nil) for lists, etc., #[] (empty bytecode
> string) makes no sense at all.  Again, if bytecomp never produces such
> an objects and they're never used somewhere else, it should be treated
> as "impossible" object and error should be signaled once such an
> object is found. </IMHO>.

Indeed, we could also disallow them.  If that's simpler, I'm fine with
this solution.


        Stefan





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-25 17:35                                       ` Stefan Monnier
@ 2013-09-25 19:09                                         ` Barry OReilly
  2013-09-25 21:50                                           ` Dmitry Antipov
  2013-09-26  1:15                                           ` Stefan Monnier
  0 siblings, 2 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-25 19:09 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman

[-- Attachment #1: Type: text/plain, Size: 1458 bytes --]

How's this?

Also, when I was looking over the vector alloc code, I found a case
where I think int should be size_t.

diff --git a/src/alloc.c b/src/alloc.c
index ca21ba2..5b63383 100644
--- a/src/alloc.c
+++ b/src/alloc.c
@@ -2889,7 +2889,7 @@ sweep_vectors (void)
                free_this_block = 1;
              else
                {
-                 int tmp;
+                 size_t tmp;
                  SETUP_ON_FREE_LIST (vector, total_bytes, tmp);
                }
            }
@@ -3132,6 +3132,8 @@ usage: (vector &rest OBJECTS)  */)
 void
 make_byte_code (struct Lisp_Vector *v)
 {
+  /* Don't allow the global zero_vector to become a byte code object. */
+  eassert(v->header.size!=0);
   if (v->header.size > 1 && STRINGP (v->u.contents[1])
       && STRING_MULTIBYTE (v->u.contents[1]))
     /* BYTECODE-STRING must have been produced by Emacs 20.2 or the
diff --git a/src/lread.c b/src/lread.c
index 017dfcb..fe2b92a 100644
--- a/src/lread.c
+++ b/src/lread.c
@@ -2597,7 +2597,10 @@ read1 (Lisp_Object readcharfun, int *pch, bool
first_in_list)
             build them using function calls.  */
          Lisp_Object tmp;
          tmp = read_vector (readcharfun, 1);
-         make_byte_code (XVECTOR (tmp));
+         struct Lisp_Vector* vec = XVECTOR (tmp);
+         if (vec->header.size==0)
+           invalid_syntax ("Empty byte-code object");
+         make_byte_code (vec);
          return tmp;
        }
       if (c == '(')

[-- Attachment #2: Type: text/html, Size: 1690 bytes --]

^ permalink raw reply related	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-25 19:09                                         ` Barry OReilly
@ 2013-09-25 21:50                                           ` Dmitry Antipov
  2013-09-26  1:15                                           ` Stefan Monnier
  1 sibling, 0 replies; 32+ messages in thread
From: Dmitry Antipov @ 2013-09-25 21:50 UTC (permalink / raw)
  To: Barry OReilly, Stefan Monnier; +Cc: stephen.berman, 15405, Leo Liu

On 09/25/2013 11:09 PM, Barry OReilly wrote:

> How's this?

OK for me, except...

> @@ -3132,6 +3132,8 @@ usage: (vector &rest OBJECTS)  */)
>   void
>   make_byte_code (struct Lisp_Vector *v)
>   {
> +  /* Don't allow the global zero_vector to become a byte code object. */
> +  eassert(v->header.size!=0);

Since v->header.size is signed (ptrdiff_t), I would suggest

eassert (v->header.size > 0)

for the better catch of bogus values.

Thanks,
Dmitry







^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-25 19:09                                         ` Barry OReilly
  2013-09-25 21:50                                           ` Dmitry Antipov
@ 2013-09-26  1:15                                           ` Stefan Monnier
  2013-09-26  3:51                                             ` Barry OReilly
  1 sibling, 1 reply; 32+ messages in thread
From: Stefan Monnier @ 2013-09-26  1:15 UTC (permalink / raw)
  To: Barry OReilly; +Cc: Dmitry Antipov, 15405, Leo Liu, stephen.berman

> +  /* Don't allow the global zero_vector to become a byte code object. */
> +  eassert(v->header.size!=0);

Sounds good (and Dmitry's version is even better).

> -         make_byte_code (XVECTOR (tmp));
> +         struct Lisp_Vector* vec = XVECTOR (tmp);
> +         if (vec->header.size==0)
> +           invalid_syntax ("Empty byte-code object");
> +         make_byte_code (vec);

Looks good, tho please keep spaces around infix operators (like `==' above).
Can someone install this?


        Stefan





^ permalink raw reply	[flat|nested] 32+ messages in thread

* bug#15405: 24.3; #[] freezes emacs
  2013-09-26  1:15                                           ` Stefan Monnier
@ 2013-09-26  3:51                                             ` Barry OReilly
  0 siblings, 0 replies; 32+ messages in thread
From: Barry OReilly @ 2013-09-26  3:51 UTC (permalink / raw)
  Cc: 15405-done

[-- Attachment #1: Type: text/plain, Size: 14 bytes --]

revno: 114459

[-- Attachment #2: Type: text/html, Size: 74 bytes --]

^ permalink raw reply	[flat|nested] 32+ messages in thread

end of thread, other threads:[~2013-09-26  3:51 UTC | newest]

Thread overview: 32+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2013-09-18  1:50 bug#15405: 24.3; #[] freezes emacs Leo Liu
2013-09-18  7:23 ` Andreas Schwab
2013-09-18 14:36 ` Barry OReilly
2013-09-18 15:07   ` Eli Zaretskii
2013-09-18 15:14     ` Barry OReilly
2013-09-18 15:27       ` Eli Zaretskii
2013-09-18 15:41         ` Stephen Berman
2013-09-18 16:26           ` Eli Zaretskii
2013-09-18 17:31             ` Barry OReilly
2013-09-18 19:26               ` Eli Zaretskii
2013-09-18 23:20                 ` Barry OReilly
2013-09-19  7:00                   ` Eli Zaretskii
2013-09-20 15:33                     ` Barry OReilly
2013-09-20 16:13                       ` Barry OReilly
2013-09-20 16:21                         ` Drew Adams
2013-09-20 19:09                       ` Stefan Monnier
2013-09-20 19:43                         ` Barry OReilly
2013-09-20 21:26                           ` Stefan Monnier
2013-09-20 21:38                             ` Barry OReilly
2013-09-21  1:28                               ` Dmitry Antipov
2013-09-21  1:39                                 ` Dmitry Antipov
2013-09-21  2:51                                 ` Stefan Monnier
2013-09-25 15:22                                   ` Barry OReilly
2013-09-25 16:12                                     ` Dmitry Antipov
2013-09-25 17:35                                       ` Stefan Monnier
2013-09-25 19:09                                         ` Barry OReilly
2013-09-25 21:50                                           ` Dmitry Antipov
2013-09-26  1:15                                           ` Stefan Monnier
2013-09-26  3:51                                             ` Barry OReilly
2013-09-25 17:10                                     ` Stefan Monnier
2013-09-18 23:41                 ` Barry OReilly
2013-09-18 17:57             ` Stephen Berman

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).