[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
bug#52461: spontaneous crash with portable dumper
From: |
YAMAMOTO Mitsuharu |
Subject: |
bug#52461: spontaneous crash with portable dumper |
Date: |
Tue, 14 Dec 2021 17:04:48 +0900 |
User-agent: |
Wanderlust/2.15.9 (Almost Unreal) SEMI-EPG/1.14.7 (Harue) FLIM-LB/1.14.9 (Gojō) APEL-LB/10.8 EasyPG/1.0.0 Emacs/27.2 (x86_64-pc-linux-gnu) MULE/6.0 (HANACHIRUSATO) |
On Mon, 13 Dec 2021 22:31:09 +0900,
Eli Zaretskii wrote:
>
> FWIW, on my system, charset_table_used is 179, so maybe the mac port
> defines some additional charsets?
Yes.
On Tue, 14 Dec 2021 01:52:51 +0900,
Eli Zaretskii wrote:
>
> > From: Pip Cet <pipcet@gmail.com>
> > Date: Mon, 13 Dec 2021 14:43:55 +0000
> > Cc: YAMAMOTO Mitsuharu <mituharu@math.s.chiba-u.ac.jp>,
> > 52461@debbugs.gnu.org
> >
> > What we can try is debugging the crashing temacs binary, setting a
> > breakpoint to the point where define-charset-internal calls xpalloc
> > (in a very strange manner), at about line 1126 in charset.c, and zero
> > the memory after the call by executing
> > memset (new_table, 0, new_size * sizeof (new_table[0]))
> > in the debugger (I don't use lldb so I'm not sure precisely how to do
> > that), then continuing to the memcpy.
> >
> > If that fixes things, we should make the obvious change, I think.
>
> Sounds like a plan, thanks.
I directly inserted the memset line just after the xpalloc call in
charset.c, and dumped 10 times. No crash occured.
I also tried the change below, and it seems to work, too.
YAMAMOTO Mitsuharu
mituharu@math.s.chiba-u.ac.jp
diff --git a/src/charset.c b/src/charset.c
index 7cd0fa78f0..670fd48a2d 100644
--- a/src/charset.c
+++ b/src/charset.c
@@ -63,7 +63,7 @@ Copyright (C) 2003, 2004
/* Table of struct charset. */
struct charset *charset_table;
int charset_table_size;
-static int charset_table_used;
+int charset_table_used;
/* Special charsets corresponding to symbols. */
int charset_ascii;
diff --git a/src/charset.h b/src/charset.h
index 97122d82a6..8c538234d8 100644
--- a/src/charset.h
+++ b/src/charset.h
@@ -249,6 +249,7 @@ #define EMACS_CHARSET_H
/* Table of struct charset. */
extern struct charset *charset_table;
extern int charset_table_size;
+extern int charset_table_used;
#define CHARSET_FROM_ID(id) (charset_table + (id))
diff --git a/src/pdumper.c b/src/pdumper.c
index 98c760162e..2782648e7a 100644
--- a/src/pdumper.c
+++ b/src/pdumper.c
@@ -3174,7 +3174,7 @@ dump_charset (struct dump_context *ctx, int cs_i)
DUMP_FIELD_COPY (&out, cs, hash_index);
DUMP_FIELD_COPY (&out, cs, dimension);
memcpy (out.code_space, &cs->code_space, sizeof (cs->code_space));
- if (cs->code_space_mask)
+ if (cs_i < charset_table_used && cs->code_space_mask)
dump_field_fixup_later (ctx, &out, cs, &cs->code_space_mask);
DUMP_FIELD_COPY (&out, cs, code_linear_p);
DUMP_FIELD_COPY (&out, cs, iso_chars_96);
@@ -3195,7 +3195,7 @@ dump_charset (struct dump_context *ctx, int cs_i)
memcpy (out.fast_map, &cs->fast_map, sizeof (cs->fast_map));
DUMP_FIELD_COPY (&out, cs, code_offset);
dump_off offset = dump_object_finish (ctx, &out, sizeof (out));
- if (cs->code_space_mask)
+ if (cs_i < charset_table_used && cs->code_space_mask)
dump_remember_cold_op (ctx, COLD_OP_CHARSET,
Fcons (dump_off_to_lisp (cs_i),
dump_off_to_lisp (offset)));
- bug#52461: spontaneous crash with portable dumper, YAMAMOTO Mitsuharu, 2021/12/12
- bug#52461: spontaneous crash with portable dumper, YAMAMOTO Mitsuharu, 2021/12/12
- bug#52461: spontaneous crash with portable dumper, Eli Zaretskii, 2021/12/13
- bug#52461: spontaneous crash with portable dumper, Pip Cet, 2021/12/13
- bug#52461: spontaneous crash with portable dumper, Eli Zaretskii, 2021/12/13
- bug#52461: spontaneous crash with portable dumper,
YAMAMOTO Mitsuharu <=
- bug#52461: spontaneous crash with portable dumper, Eli Zaretskii, 2021/12/14
- bug#52461: spontaneous crash with portable dumper, YAMAMOTO Mitsuharu, 2021/12/14
- bug#52461: spontaneous crash with portable dumper, YAMAMOTO Mitsuharu, 2021/12/14
- bug#52461: spontaneous crash with portable dumper, Eli Zaretskii, 2021/12/14
- bug#52461: spontaneous crash with portable dumper, YAMAMOTO Mitsuharu, 2021/12/14