Eli Zaretskii writes: >> From: Rainer M Krug >> Cc: 21428@debbugs.gnu.org, mituharu+bug-gnu-emacs-mac@math.s.chiba-u.ac.jp >> Date: Wed, 30 Sep 2015 11:49:10 +0200 >> >> >> No, I mean continue running with them set to t, and see if the crashes >> >> in get_glyph_face_and_encoding are prevented by disabling these >> >> redisplay optimizations. >> > >> > OK - got it. So continue the initial plan. >> >> They are all set to t and I got the following crash: > > One more theory eats dust. > >> Let me know if you need any further info - I will leave the session >> open. > > Just for the record, please show the usual data about this crash: the > 'used' count of the frame's face cache and the output of "pgrow" > command in frame #4. OK: ,---- | (gdb) frame 4 | #4 0x000000010006fb19 in draw_glyphs (w=0x11226a6b8, x=8, row=0x11fa6e100, area=TEXT_AREA, start=0, end=42, hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:25242 | 25242 BUILD_GLYPH_STRINGS (i, end, head, tail, hl, x, last_x); | (gdb) pgrow | TEXT: 42 glyphs | 0 0: CHAR[#] pos=1 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 1 8: CHAR[+] pos=2 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 2 16: CHAR[S] pos=3 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 3 24: CHAR[E] pos=4 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 4 32: CHAR[T] pos=5 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 5 40: CHAR[U] pos=6 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 6 48: CHAR[P] pos=7 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 7 56: CHAR[F] pos=8 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 8 64: CHAR[I] pos=9 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 9 72: CHAR[L] pos=10 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 10 80: CHAR[E] pos=11 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 11 88: CHAR[:] pos=12 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 12 96: CHAR[ ] pos=13 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 13 104: CHAR[.] pos=14 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 14 112: CHAR[/] pos=15 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 15 120: CHAR[E] pos=16 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 16 128: CHAR[n] pos=17 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 17 136: CHAR[e] pos=18 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 18 144: CHAR[r] pos=19 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 19 152: CHAR[g] pos=20 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 20 160: CHAR[y] pos=21 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 21 168: CHAR[B] pos=22 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 22 176: CHAR[a] pos=23 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 23 184: CHAR[l] pos=24 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 24 192: CHAR[a] pos=25 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 25 200: CHAR[n] pos=26 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 26 208: CHAR[c] pos=27 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 27 216: CHAR[e] pos=28 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 28 224: CHAR[S] pos=29 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 29 232: CHAR[E] pos=30 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 30 240: CHAR[T] pos=31 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 31 248: CHAR[U] pos=32 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 32 256: CHAR[P] pos=33 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 33 264: CHAR[F] pos=34 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 34 272: CHAR[I] pos=35 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 35 280: CHAR[L] pos=36 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 36 288: CHAR[E] pos=37 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 37 296: CHAR[.] pos=38 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 38 304: CHAR[o] pos=39 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 39 312: CHAR[r] pos=40 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 40 320: CHAR[g] pos=41 blev=0,btyp=L w=8 a+d=14+4 face=48 MB | 41 328: CHAR[ ] pos=0 blev=0,btyp=B w=8 a+d=14+4 MB | (gdb) frame 2 | #2 0x0000000100065467 in get_glyph_face_and_encoding (f=0x104811630, glyph=0x11ca93400, char2b=0x7fff5fbfb660) at xdisp.c:24350 | 24350 eassert (face != NULL); | (gdb) p f->face_cache->used | $1 = 36 | (gdb) frame 4 | #4 0x000000010006fb19 in draw_glyphs (w=0x11226a6b8, x=8, row=0x11fa6e100, area=TEXT_AREA, start=0, end=42, hl=DRAW_NORMAL_TEXT, overlaps=0) at xdisp.c:25242 | 25242 BUILD_GLYPH_STRINGS (i, end, head, tail, hl, x, last_x); | (gdb) xbacktrace | "redisplay_internal (C function)" (0x0) | (gdb) `---- face info of the text: ,---- | Face: org-meta-line (sample) (customize this face) | | Documentation: | Face for meta lines starting with "#+". | | Defined in ‘org-faces.el’. | | Family: unspecified | Foundry: unspecified | Width: unspecified | Height: unspecified | Weight: unspecified | Slant: normal | Foreground: #008ED1 | DistantForeground: unspecified | Background: #EAEAFF | Underline: unspecified | Overline: unspecified | Strike-through: unspecified | Box: unspecified | Inverse: unspecified | Stipple: unspecified | Font: unspecified | Fontset: unspecified | Inherit: unspecified `---- ,---- | There are text properties here: | face org-meta-line | font-lock-fontified t | fontified t | line-prefix "" | org-category "constrOptim" | wrap-prefix "" | | [back] `---- > > I guess we are down to using the brute-force approach after all. I > will prepare a series of GDB commands that you need to invoke before > running a new Emacs session under GDB. The output will be recorded in > a file, which I will ask you to send me for analysis when a crash > happens. OK - no problem. > > To prepare those GDB commands, I need to know how many different > frames you are normally using. If only one, the job of preparing > those commands is easier. Now we have luck: very seldom more than one, and the crashes occured all with only one frame used during the whole session. > If you normally use more than one frame, do the crashes happen when > you edit in a particular one of them? IOW, would it be easy for you > to switch to the frame where the crashes are expected, in order to > invoke those GDB commands for that one frame? You don't have to rush with the instructions, as I will only be able to continue working in emacs tomorrow morning. Thanks, Rainer > > Thanks. -- Rainer M. Krug, PhD (Conservation Ecology, SUN), MSc (Conservation Biology, UCT), Dipl. Phys. (Germany) Centre of Excellence for Invasion Biology Stellenbosch University South Africa Tel : +33 - (0)9 53 10 27 44 Cell: +33 - (0)6 85 62 59 98 Fax : +33 - (0)9 58 10 27 44 Fax (D): +49 - (0)3 21 21 25 22 44 email: Rainer@krugs.de Skype: RMkrug PGP: 0x0F52F982