Hi Bjarni,

At 2026-02-20T21:28:08+0000, Bjarni Ingi Gislason wrote:
> After cloning groff
> 
> commit ed68a4670c002a07cbaeba9e27d1ac2925449bf7 (HEAD
> -> master, tag: 1.24.0.rc4, origin/master, origin/HEAD)
> Author: G. Branden Robinson <[email protected]>
> Date:   Fri Feb 20 12:01:27 2026 -0600
> 
> , bootlogging and configuring (in directory build) with
> 
> GNU roff version 1.24.0.rc4 configuration summary
> ----------------------------------------------------------------------
>  installation directory prefix    : /usr/local
>  C++ compiler and options         : /usr/bin/g++-15 -Walloc-zero -Walloca
> -Wall -Wextra -Wformat=2 -Wattribute-warning -Wdate-time -Wformat-security
> -Wfree-nonheap-object -Winit-self -Wparentheses -Wpedantic
> -Wredundant-decls -Wshadow -Wsign-compare -Wstack-protector
> -Wstringop-overflow=4 -Wtype-limits -Wuninitialized -Wunused
> -Wunused-function -Wunused-parameter -Wvla -Wvla-parameter 
> -Wno-format-nonliteral  -fdiagnostics-generate-patch -fhardened
> -freport-bug -fsanitize=bool -fsanitize=enum
> -fsanitize=integer-divide-by-zero,shift,null -fsanitize-trap=all
> -fno-omit-frame-pointer -fsanitize=signed-integer-overflow
> -fsanitize=return
> -fsanitize=alignment,object-size,vptr,pointer-overflow -fno-common -ftrapv
> -fvar-tracking-assignments -fsanitize=null -fsanitize=nonnull-attribute
> -fsanitize-address-use-after-scope -ftree-vrp -funsigned-char   -O2 
> -Wmismatched-new-delete -Wdelete-incomplete -Wextra-semi -fcheck-new
> -std=gnu++23 -Woverloaded-virtual -Wc++20-extensions -Wc++23-extensions  
> -DGCC_LINT -DGNULIB_NO_VLA -Dlint
>  use libgroff's memory allocator  : no
>  C compiler and options           : /usr/bin/gcc-15 -Walloc-zero -Walloca
> -Wall -Wextra -Wformat=2 -Wattribute-warning -Wdate-time -Wformat-security
> -Wfree-nonheap-object -Winit-self -Wparentheses -Wpedantic
> -Wredundant-decls -Wshadow -Wsign-compare -Wstack-protector
> -Wstringop-overflow=4 -Wtype-limits -Wuninitialized -Wunused
> -Wunused-function -Wunused-parameter -Wvla -Wvla-parameter 
> -Wno-format-nonliteral  -fdiagnostics-generate-patch -fhardened
> -freport-bug -fsanitize=bool -fsanitize=enum
> -fsanitize=integer-divide-by-zero,shift,null -fsanitize-trap=all
> -fno-omit-frame-pointer -fsanitize=signed-integer-overflow
> -fsanitize=return
> -fsanitize=alignment,object-size,vptr,pointer-overflow -fno-common -ftrapv
> -fvar-tracking-assignments -fsanitize=null -fsanitize=nonnull-attribute
> -fsanitize-address-use-after-scope -ftree-vrp -funsigned-char   -O2  
> -Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes
> -Wnested-externs -Wold-style-definition -Wstrict-prototypes 
> -Wold-style-declaration  -std=gnu23 -Wflex-array-member-not-at-end
> -fharden-control-flow-redundancy -Wreturn-mismatch
> -Wincompatible-pointer-types   -DGCC_LINT -DGNULIB_NO_VLA -Dlint
>  Perl interpreter version         : 5.40.1
>  Ghostscript command              : gs
>  URW fonts directory              : /usr/share/fonts/type1/urw-base35/
>  gropdf service level             : full
>  X11 support                      : enabled
>  X11 app defaults directory       : /usr/local/lib/X11/app-defaults
>  default paper format             : A4
>  'groff -l' uses print spooler    : no
>  preconv can use uchardet library : yes
>  can build groff.{info,html,txt}  : yes
>  can build groff.{dvi,pdf}        : yes
> ----------------------------------------------------------------------
> configure: Default X11 application defaults directory assumed.
> 
>   The application defaults files for gxditview (GXditview and
>   GXditview-color) will be installed in the following directory.
> 
>     /usr/local/lib/X11/app-defaults
> 
> -.-
> 
> Error message:
> 
>   GROFF    doc/webpage.html
> pre-grohtml: fatal error: 'pre-grohtml' exited with status 4; re-run with a
> different output driver to see diagnostic messages

I can't account for this.  No logic in pre-grohtml explicitly exits with
status 4 under any cirumstances.

There is a curious wrapper macro and function in
"src/preproc/html/pushback.cpp":

    48  #   define ERROR(X)   (void)(fprintf(stderr, "%s:%d error %s\n", 
__FILE__, __LINE__, X) && \
    49                              (fflush(stderr)) && localexit(1))
...
    96  /*
    97   *  localexit - wraps exit with a return code to aid the ERROR macro.
    98   */
    99
   100  int localexit (int i)
   101  {
   102    exit(i);
   103    return( 1 );
   104  }

For one thing, line 103 should be unreachable.

But I suppose this doesn't account for the problem either, because the
only caller of "localexit" is shown above (the function could have been
declared `static`); the function is only ever passed the value "1".

Unless more people can reproduce this, perhaps with compiler options
that less closely resemble Cyril Figgis laying down suppressing fire,[1]
I don't regard your report as gating the groff 1.24.0 release.

Regards,
Branden

[1] Nevertehless I just did a "paranoid" build as follows, which
    requires a high-capacity magazine, and can't reproduce the problem.

...
GNU roff version 1.24.0.rc4.8-765892 configuration summary
----------------------------------------------------------------------
 installation directory prefix    : /home/branden/groff-HEAD
 C++ compiler and options         : g++ -g -O2 
 use libgroff's memory allocator  : no
 C compiler and options           : gcc -g -O2 
 Perl interpreter version         : 5.32.1
 Ghostscript command              : gs
 URW fonts directory              : /usr/share/fonts/type1/urw-base35/
 gropdf service level             : full
 X11 support                      : enabled
 X11 app defaults directory       : 
/home/branden/groff-HEAD/lib/X11/app-defaults
 default paper format             : letter
 'groff -l' uses print spooler    : lpr
 preconv can use uchardet library : yes
 can build groff.{info,html,txt}  : yes
 can build groff.{dvi,pdf}        : yes
----------------------------------------------------------------------
configure: Buggy version of Ghostscript detected.

  Ghostscript versions 9.00 <= x < 9.54 suffer from a rendering glitch
  that affects the AT&T troff (and groff) special character '\(lh'; see
  <https://bugs.ghostscript.com/show_bug.cgi?id=703187>.  If your
  version of Ghostscript has not been patched to fix this problem, you
  may need to work around it in groff documents you render for the
  PostScript (and, for tbl(1) tables, HTML) output devices.
  
+ export CFLAGS CXXFLAGS
+ echo CFLAGS=-flto=auto -fcf-protection -fno-common 
-fsanitize=signed-integer-overflow -fsanitize-undefined-trap-on-error 
-fstack-protector-strong -fstack-clash-protection -ftrapv -funsigned-char 
-fvar-tracking-assignments -Wall -Wbuiltin-declaration-mismatch -Wextra -Werror 
-Wformat=2 -Wformat-overflow -Walloc-zero -Wanalyzer-file-leak 
-Werror=format-security -Werror=return-type -Wredundant-decls -Wsign-compare 
-Wstringop-overflow=4 -Wshadow -Wunused -Wunused-parameter -O0 -Og -ggdb 
-D_FORTIFY_SOURCE=2 -Wdiscarded-qualifiers -Wenum-conversion 
-Wincompatible-pointer-types -Wmissing-prototypes -Wnested-externs 
-Wold-style-declaration -Wold-style-definition -Wstrict-prototypes -std=c99
CFLAGS=-flto=auto -fcf-protection -fno-common 
-fsanitize=signed-integer-overflow -fsanitize-undefined-trap-on-error 
-fstack-protector-strong -fstack-clash-protection -ftrapv -funsigned-char 
-fvar-tracking-assignments -Wall -Wbuiltin-declaration-mismatch -Wextra -Werror 
-Wformat=2 -Wformat-overflow -Walloc-zero -Wanalyzer-file-leak 
-Werror=format-security -Werror=return-type -Wredundant-decls -Wsign-compare 
-Wstringop-overflow=4 -Wshadow -Wunused -Wunused-parameter -O0 -Og -ggdb 
-D_FORTIFY_SOURCE=2 -Wdiscarded-qualifiers -Wenum-conversion 
-Wincompatible-pointer-types -Wmissing-prototypes -Wnested-externs 
-Wold-style-declaration -Wold-style-definition -Wstrict-prototypes -std=c99
+ echo CXXFLAGS=-flto=auto -fcf-protection -fno-common 
-fsanitize=signed-integer-overflow -fsanitize-undefined-trap-on-error 
-fstack-protector-strong -fstack-clash-protection -ftrapv -funsigned-char 
-fvar-tracking-assignments -Wall -Wbuiltin-declaration-mismatch -Wextra -Werror 
-Wformat=2 -Wformat-overflow -Walloc-zero -Wanalyzer-file-leak 
-Werror=format-security -Werror=return-type -Wredundant-decls -Wsign-compare 
-Wstringop-overflow=4 -Wshadow -Wunused -Wunused-parameter -O0 -Og -ggdb 
-D_FORTIFY_SOURCE=2 -fcheck-new -std=c++98 -pedantic -pedantic-errors 
-D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 
-D_LIBCPP_ENABLE_HARDENED_MODE=1
CXXFLAGS=-flto=auto -fcf-protection -fno-common 
-fsanitize=signed-integer-overflow -fsanitize-undefined-trap-on-error 
-fstack-protector-strong -fstack-clash-protection -ftrapv -funsigned-char 
-fvar-tracking-assignments -Wall -Wbuiltin-declaration-mismatch -Wextra -Werror 
-Wformat=2 -Wformat-overflow -Walloc-zero -Wanalyzer-file-leak 
-Werror=format-security -Werror=return-type -Wredundant-decls -Wsign-compare 
-Wstringop-overflow=4 -Wshadow -Wunused -Wunused-parameter -O0 -Og -ggdb 
-D_FORTIFY_SOURCE=2 -fcheck-new -std=c++98 -pedantic -pedantic-errors 
-D_GLIBCXX_ASSERTIONS=1 -D_LIBCPP_ENABLE_THREAD_SAFETY_ANNOTATIONS=1 
-D_LIBCPP_ENABLE_HARDENED_MODE=1
+ make -j10 check
...
============================================================================
Testsuite summary for GNU roff 1.24.0.rc4.8-765892
============================================================================
# TOTAL: 314
# PASS:  309
# SKIP:  0
# XFAIL: 5
# FAIL:  0
# XPASS: 0
# ERROR: 0
============================================================================
...

Attachment: signature.asc
Description: PGP signature

Reply via email to