Subject: Re: bug#26961: 26.0.50; Possible timming issue in regex-tests.el

From: Eli Zaretskii <[email-masked]>
Date: Sat, 20 May 2017 13:04:38 +0300

> From: Tino Calancha <[email-masked]>
> Cc: [email-masked],  [email-masked], [email-masked]
> Date: Fri, 19 May 2017 20:38:40 +0900
> 
> Eli Zaretskii <[email-masked]> writes:
> 
> >> +  AUTO_STRING (inner_format, "`?%c'");
> >>    CALLN (Fmessage,
> >>           format, file,
> >> -         Fmapconcat (Qstring,
> >> +         Fmapconcat (list3 (Qlambda, list1 (Qchar),
> >> +                            list3 (Qformat, inner_format, Qchar)),
> >>                       Fsort (Vlread_unescaped_character_literals, Qlss),
> >>                       separator));
> >>  }
> >> 
> >> Do you think this code is wrong?
> >
> > This does indeed look dangerous: we are in effect consing Lisp data
> > structures from stack-based Lisp objects, and then process them in a
> > way that could leave some of them lying around when this function
> > returns, and its stack becomes invalid.
> >
> > Can you present the evidence that caused you to suspect this
> > particular change?  Were the "unescaped character literals" warning
> > displayed during the session which crashed?
> Yes, such warning always appear in the crash session.

Does the problem go away if you replace each AUTO_STRING in
load_warn_unescaped_character_literals with build_string?  IOW,
instead of this:

  AUTO_STRING (separator, ", ");

use this:

  Lisp_Object separator = build_string (", ");

and similarly for all the other strings used in the CALLN call in
load_warn_unescaped_character_literals.