Hello,
i'm reporting here instead of on Savannah because Savannah is so slow
that i cannot use it. Details at the very end of this posting.
In groff-1.22.4, an empty tbl(7) table resulted in a blank output
line in terminal output. In groff-1.23.0, it no longer results
in anything whatsoever, not even in an output line break.
Here is what i mean by "empty table":
.TH TBL-DATA-EMPTY 1 "January 28, 2015"
.SH NAME
tbl-data-empty \- empty table
.SH DESCRIPTION
normal text
.TS
box; l.
.TE
normal text
With groff-1.22.4, the output was:
DESCRIPTION
normal text
normal text
With groff-1.23.0 and groff-1.25.0rc2, the output is:
DESCRIPTION
normal text normal text
I think this is wrong and the output should be:
DESCRIPTION
normal text
normal text
The blank line goes away because groff-1.23.0 changed the rules for
vertical spacing around tables, but the line break should not go
away: the beginning and the end of every table still implies a break,
tables never appear on the same output line as preceding or following
text.
As the root cause, based on this -W all output,
tbl:"empty.in:9: error: no data in table
tbl:"empty.in:9: error: giving up on this table region
an.tmac:empty.in:9: warning: tbl preprocessor failed,
or it or soelim was not run; table(s) likely not rendered
(TE macro called with TW register undefined)
i suspect a parser regression. Probably a condition that would
indeed warrant a warning was inadvertently turned into a fatal error.
Right now, mandoc is still compattible with groff-1.22.4 in this
respect. My preference would be to change it to do what i
displayed below "should be" above, hoping that groff might
eventually fix the regression.
Then again, if you feel very strongly that the behaviour in
groff-1.25.0rc2 is correct and should not be changed, i'll just shrug
and let mandoc follow groff in this respect.
I originally found this regression on July 24, 2025, but never
found the time to properly report it.
I'm reporting it now because i need to touch the code that deals
with empty tables in mandoc anyway (in the context of adjacent
bugfixes), so deciding now what the desired behaviour is would be
welcome.
Yours,
Ingo
P.S.
I managed to build 1.25.0rc2 after fighting with the groff build
system for a few hours. The worst problem is this:
It appears that the dependency on soelim somehow causes the command
list for each of the files listed in $(GROFF_MAN_PAGES_ALL) to become
empty and the ".man:" inference rule to no longer take effect,
thus killing the build because the *.1 files never get built
and then the targets needing them fail.
I did not yet manage to figure out what exactly goes wrong,
mostly because the groff Makefile is so wordy and so full of
indirections that it's very hard to debug.
In the end, i gave up for now and worked around the problem in an
extremely hackish way without understanding the root cause.
I'm not planning to do systematic testing of 1.25 at this time -
but i obviously had to check whether the 1.23 regression is
still present in 1.25.0rc2 before reporting, which it is.
P.P.S.
Regarding Savannah:
At 12:57:42, trying to open a new ticket via the "Bugs >> Submit New"
menu entry timed out after 80 seconds.
I checked with tcpdump(8) that my browser sent several SYN packets to
Savannah, never receiving any SYN packat back, before giving up.
I also tried searching for existing tickets using the query form.
After several tries, that finally worked, but even then, getting
responses to these request typically took around 20-40 seconds.