From: Eli Zaretskii <eliz@gnu.org>
To: Markus Hoenicka <markus.hoenicka@mhoenicka.de>
Cc: 17753@debbugs.gnu.org
Subject: bug#17753: Cygwin emacs-X11 core dump
Date: Thu, 09 Oct 2014 14:55:18 +0300 [thread overview]
Message-ID: <837g09ihjt.fsf@gnu.org> (raw)
In-Reply-To: <295e34582a7c09b3453833837f084e1d@mhoenicka.de>
> Date: Thu, 09 Oct 2014 13:47:34 +0200
> From: Markus Hoenicka <markus.hoenicka@mhoenicka.de>
> Cc: kbrown@cornell.edu, 17753@debbugs.gnu.org
>
> Am 2014-10-09 13:22, schrieb Eli Zaretskii:
> >> Date: Thu, 09 Oct 2014 12:44:44 +0200
> >> From: Markus Hoenicka <markus.hoenicka@mhoenicka.de>
> >> Cc: kbrown@cornell.edu, 17753@debbugs.gnu.org
> >>
> >> (gdb) print (it->f)->face_cache->used
> >> $4 = 31
> >
> > ??? That's unexpected. What about this one:
> >
> > (gdb) print (it->f)->face_cache->faces_by_id[it->face_id]
> >
> > (The above is the expansion of the call to the FACE_FROM_ID macro,
> > which, judging by your backtrace, yielded a NULL pointer.)
>
> This one yields:
>
> (gdb) print (it->f)->face_cache->faces_by_id[it->face_id]
> $5 = (struct face *) 0x60128bad0
So maybe this crash _is_ for the same reason that caused the other
crashes in this bug report. Observe what the relevant portion of
get_next_display_element (the function in frame #1 of your backtrace)
does:
if ((it->what == IT_CHARACTER || it->what == IT_COMPOSITION)
&& it->multibyte_p
&& success_p
&& FRAME_WINDOW_P (it->f))
{
struct face *face = FACE_FROM_ID (it->f, it->face_id);
if (it->what == IT_COMPOSITION && it->cmp_it.ch >= 0)
{
/* Automatic composition with glyph-string. */
Lisp_Object gstring = composition_gstring_from_id (it->cmp_it.id);
it->face_id = face_for_font (it->f, LGSTRING_FONT (gstring), face);
}
else
{
ptrdiff_t pos = (it->s ? -1
: STRINGP (it->string) ? IT_STRING_CHARPOS (*it)
: IT_CHARPOS (*it));
int c;
if (it->what == IT_CHARACTER)
c = it->char_to_display;
else
{
struct composition *cmp = composition_table[it->cmp_it.id];
int i;
c = ' ';
for (i = 0; i < cmp->glyph_len; i++)
/* TAB in a composition means display glyphs with
padding space on the left or right. */
if ((c = COMPOSITION_GLYPH (cmp, i)) != '\t')
break;
}
it->face_id = FACE_FOR_CHAR (it->f, face, c, pos, it->string);
The last line is the one that called face_for_char with the 'face'
argument a NULL pointer. But the value of 'face' was computed by this
line:
struct face *face = FACE_FROM_ID (it->f, it->face_id);
which, if you repeat it in GDB, yields a non-NULL pointer. So how
could it become a NULL pointer when the code was executed?? Am I
missing something here?
next prev parent reply other threads:[~2014-10-09 11:55 UTC|newest]
Thread overview: 56+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-06-09 21:55 bug#17753: Cygwin emacs-X11 core dump markus.hoenicka
2014-06-11 2:51 ` Eli Zaretskii
2014-06-11 6:16 ` Markus Hoenicka
2014-06-11 14:47 ` Eli Zaretskii
2014-06-13 22:53 ` markus.hoenicka
2014-06-11 12:28 ` Ken Brown
2014-06-11 15:03 ` Eli Zaretskii
2014-07-04 21:21 ` markus.hoenicka
2014-07-05 14:03 ` Ken Brown
2014-07-07 21:31 ` markus.hoenicka
2014-07-09 13:57 ` Ken Brown
2014-07-09 14:30 ` Markus Hoenicka
2014-09-17 9:45 ` Markus Hoenicka
2014-09-17 10:16 ` Eli Zaretskii
2014-09-17 10:52 ` Eli Zaretskii
2014-09-17 11:04 ` Markus Hoenicka
2014-09-17 15:17 ` Ken Brown
2014-09-17 17:06 ` Eli Zaretskii
2014-09-22 7:14 ` Markus Hoenicka
2014-09-22 13:32 ` Ken Brown
2014-09-22 14:04 ` Markus Hoenicka
2014-09-22 14:48 ` Eli Zaretskii
2014-10-07 7:02 ` Markus Hoenicka
2014-10-07 14:56 ` Ken Brown
2014-10-07 15:05 ` Eli Zaretskii
2014-10-07 16:05 ` Markus Hoenicka
2014-10-07 17:04 ` Eli Zaretskii
2014-10-07 20:48 ` Markus Hoenicka
2014-10-09 8:17 ` Markus Hoenicka
2014-10-09 8:56 ` Eli Zaretskii
2014-10-09 9:08 ` Markus Hoenicka
2014-10-09 10:35 ` Eli Zaretskii
2014-10-09 10:44 ` Markus Hoenicka
2014-10-09 11:22 ` Eli Zaretskii
2014-10-09 11:47 ` Markus Hoenicka
2014-10-09 11:55 ` Eli Zaretskii [this message]
2014-10-11 15:31 ` Ken Brown
2014-10-12 0:07 ` Markus Hoenicka
2014-10-20 10:59 ` Markus Hoenicka
2014-10-20 11:29 ` Ken Brown
2014-10-20 12:04 ` martin rudalics
2014-10-20 13:05 ` Ken Brown
2014-10-20 14:11 ` Markus Hoenicka
2014-10-20 14:37 ` Markus Hoenicka
2014-10-20 15:24 ` Eli Zaretskii
2014-10-20 15:29 ` Markus Hoenicka
2014-10-24 21:27 ` Ken Brown
2014-10-24 21:42 ` Markus Hoenicka
2014-12-03 12:43 ` Markus Hoenicka
2014-12-03 14:12 ` Ken Brown
2014-10-20 15:29 ` Eli Zaretskii
2014-10-07 16:05 ` Markus Hoenicka
2014-07-28 22:45 ` markus.hoenicka
2014-08-06 22:02 ` markus.hoenicka
2014-10-07 16:47 ` Achim Gratz
2014-10-07 18:43 ` Ken Brown
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=837g09ihjt.fsf@gnu.org \
--to=eliz@gnu.org \
--cc=17753@debbugs.gnu.org \
--cc=markus.hoenicka@mhoenicka.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.