On Tue, Feb 24, 2026 at 06:43:52PM +0000, Gavin Smith wrote:
> > We packaged the pre-releases in Debian and did some tests build of
> > Debian packages using the pretest version to figure, if the new
> > version breaks things in the Debian archive.  We found that the
> > gcc-12-doc_12.2.0-1 fails to build:
> > 
> > gcc/ada/gnat_ugn.texi:24453: warning: @emph should not appear in @code
> > gcc/ada/gnat_ugn.texi:24473: warning: @emph should not appear in @code
> > gcc/ada/gnat_ugn.texi:28375: warning: @emph should not appear in @code
> > Segmentation fault (core dumped)
> > make[2]: *** [debian/Makefile:116: gnat_ugn.html] Error 139
> 
> Thanks for running these tests and reporting this.  We definitely don't
> want to be releasing a program that segfaults on input, especially on
> gcc documentation.
> 
> I've been able to reproduce the segmentation fault.  I tried building
> gnat_ugn.texi after downloading manual sources from
> https://gcc.gnu.org/onlinedocs/12.2.0/.
> 
> I had to use the full command line from your coredumpctl output below,
> with the addition of a --force option to account for a missing input file:
> 
> perl ../../tta/perl/texi2any.pl -D $'fncpp cpp' -D $'fncppint cppinternals' 
> -D $'fngcc gcc' -D $'fngxx g++' -D $'fngccint gccint' -D $'fngccinstall 
> gccinstall' -D $'fngfortran gfortran' -D $'fntreelang treelang' -D $'fngnatrm 
> gnat_rm' -D $'fngnatrmlong GNAT Reference Manual' -D $'fngnatugn gnat_ugn' -D 
> $'fngnatugnlong GNAT User\'s Guide' -D $'fngnatstyle gnat-style' -D $'fngccgo 
> gccgo' -D $'fngcov gcov' -D $'fngcovtool gcov-tool' -D $'fngcovdump 
> gcov-dump' -D $'fnlibgomp libgomp' -D $'fnlibitm libitm' -D $'fnlibquadmath 
> libquadmath' -D $'fnltodump lto-dump' -D $'BUGURL http://bugs.debian.org/' 
> --no-split -Igcc/doc -Igcc/doc/include --html -o gnat_ugn.html 
> gcc/ada/gnat_ugn.texi --force
> 

I've cut it down to a much smaller input file and invocation.  Indeed, it is
related to the strange warnings about the nesting of @emph.

I believe the reason these warnings were issued is because @emph was defined
with @definfoenclose!

The failing gnat_ugn.texi file was generated by Sphinx, which used to use
@definfoenclose in its output to customize the output for @emph and @strong.
(I believe newer releases of Sphinx stopped using @definfoenclose in its
Texinfo output, once we marked the command as deprecated.)

I'd hoped that one day we could remove the @definfoenclose command from Texinfo,
as it adds a lot of complexity to allow definining new Texinfo commands, for
no real benefit.  But if it's baked into the documentation for old gcc releases,
this could be a problem, in case somebody was wanting to use Texinfo to build
this older documentation.

Evidently the HTML output code does not cope well with a @definfoenclose-defined
command on a @subsection line.

--------------------------------------------------------------------
\input texinfo   @c -*-texinfo-*-
@setfilename gnat_ugn.info
@documentencoding UTF-8
@settitle GNAT User's Guide for Native Platforms

@definfoenclose strong,`,'
@definfoenclose emph,`,'

@node Using the next Command in a Function,Stopping When Ada Exceptions Are 
Raised,Calling User-Defined Subprograms,Running and Debugging Ada Programs
@anchor{gnat_ugn/gnat_and_program_execution 
id8}@anchor{158}@anchor{gnat_ugn/gnat_and_program_execution 
using-the-next-command-in-a-function}@anchor{159}
@subsection Using the @emph{next} Command in a Function


When you use the @code{next} command in a function, the current source
location will advance to the next statement as usual. A special case
arises in the case of a @code{return} statement.

@bye
--------------------------------------------------------------------

$ perl ../../tta/perl/texi2any.pl  --html -o fail.html fail.texi --force
fail.texi:6: warning: @definfoenclose is obsolete
fail.texi:7: warning: @definfoenclose is obsolete
fail.texi:11: warning: @emph should not appear on @subsection line
fail.texi:9: Next reference to nonexistent `Stopping When Ada Exceptions Are 
Raised'
fail.texi:9: Prev reference to nonexistent `Calling User-Defined Subprograms'
fail.texi:9: Up reference to nonexistent `Running and Debugging Ada Programs'
Segmentation fault (core dumped)



Reply via email to