Update of bug #68252 (group groff):

             Assigned to:                    None => gbranden

    _______________________________________________________

Follow-up Comment #1:

Aha!  The problem is with the always devilish `bd` request.

Hmm, I seem to have boned this up pretty badly.  The problem is not
macro-package- or output-device-specific.

The assertion failure is only in compatibility mode, but even in "groff mode",
the request handler is not acquitting itself well.


$ echo '.bd S 3 3' | ./build/test-groff -C
troff: ../src/roff/troff/input.cpp:2946: bool
token::is_usable_as_delimiter(bool, delimiter_context): Assertion `context !=
DELIMITER_GROFF_EXPRESSION' failed.
/home/branden/src/GIT/groff/build/groff: error: troff: Aborted (core dumped)
$ echo '.bd S 3 3' | ./build/test-groff
troff:<standard input>:1: warning: ignoring third argument to font emboldening
request when first interpreted as mounting position and second as emboldening
amount [-w font]


The longest warning diagnostic I've ever written and I didn't even get it
right.  The first argument should **NOT** have been interpreted as a mounting
position, so either a test is wrong or the warning message is inapposite.
Maybe both.

Well, at least the regression test will be easy to write.

Clem, either using _groff_ 1.23.0 or putting a comment escape sequence after
the second dot on this line:


$ nl -ba SPECIMENS/clem-man-page/750ops.8 | grep -w bd
    23  .ift \{.bd S 3 3


...should avoid the assertion failure.

There's a deeper problem, though.

This man page replaces the `TH` macro, and the replacement assumes the
existence of Seventh Edition Unix _man_(7) internal macro names.

There is therefore no hope of it rendering well with any version of _groff
man_.  The replacement of `TH` completely breaks the foundational basis of the
"mandoc" macro file (in either its
[https://minnie.tuhs.org/cgi-bin/utree.pl?file=4.3BSD-Reno/share/tmac/tmac.andoc
BSD] or
[https://cgit.git.savannah.gnu.org/cgit/groff.git/tree/tmac/andoc.tmac?h=1.24.1
GNU] incarnation), and while it renders a _little_ better with the `-man`
option instead to compel the package macros to actually load, there are pretty
bad problems with trap placement because, again, the document uses _man_(7)
internal register names like `:m`.

In 1982 I guess people hadn't yet learned as deeply the wisdom of respecting
the boundaries of software modules.

You _might_ be able to recover the situation with a pile of
register-and-string-defining command-line options (`-r` and `-d`, which in GNU
_troff_ accept multi-character names), or, more likely, with a "shim" package
loaded before _man_ that matches impedances.  But I'd expect it to take a
significant amount of fiddling.

Another approach would be to load the Unix V7 _man_ macros and have _groff_
interpret them.  I've done that before, successfully.

...however, with this document, attempting that leads to an infinite loop in
_groff_ 1.22.3, 1.22.4, and 1.23.0, and the same assertion failure in _groff_
1.24.0 and 1.24.1, *even with* the aforementioned `bd` request commented out,
so clearly there's another place tripping it.  I'll add that to this ticket's
scope since the assertion failure message is exactly the same.


$ ~/groff-1.22.3/bin/groff -t -C -M ./HISTORY/MAN/1979-01-v7 -manv7
SPECIMENS/clem-man-page/750ops.8 >| 750ops.8.pdf
SPECIMENS/clem-man-page/750ops.8:28: fatal error: input stack limit exceeded
(probable infinite loop)
$ ~/groff-1.22.4/bin/groff -t -C -M ./HISTORY/MAN/1979-01-v7 -manv7
SPECIMENS/clem-man-page/750ops.8 >| 750ops.8.pdf
troff: SPECIMENS/clem-man-page/750ops.8:28: fatal error: input stack limit
exceeded (probable infinite loop)
$ ~/groff-1.23.0/bin/groff -t -C -M ./HISTORY/MAN/1979-01-v7 -manv7
SPECIMENS/clem-man-page/750ops.8 >| 750ops.8.pdf
troff:SPECIMENS/clem-man-page/750ops.8:28: fatal error: input stack limit
exceeded (probable infinite loop)
$ ~/groff-1.24.0/bin/groff -t -C -M ./HISTORY/MAN/1979-01-v7 -manv7
SPECIMENS/clem-man-page/750ops.8 >| 750ops.8.pdf
troff: ../src/roff/troff/input.cpp:2887: bool
token::is_usable_as_delimiter(bool, delimiter_context): Assertion `context !=
DELIMITER_GROFF_EXPRESSION' failed.
/home/branden/groff-1.24.0/bin/groff: error: troff: Aborted (core dumped)
$ ~/groff-1.24.1/bin/groff -t -C -M ./HISTORY/MAN/1979-01-v7 -manv7
SPECIMENS/clem-man-page/750ops.8 >| 750ops.8.pdf
troff: ../src/roff/troff/input.cpp:2887: bool
token::is_usable_as_delimiter(bool, delimiter_context): Assertion `context !=
DELIMITER_GROFF_EXPRESSION' failed.
/home/branden/groff-1.24.1/bin/groff: error: troff: Aborted (core dumped)




    _______________________________________________________

Reply to this item at:

  <https://savannah.gnu.org/bugs/?68252>

_______________________________________________
Message sent via Savannah
https://savannah.gnu.org/

Attachment: signature.asc
Description: PGP signature

Reply via email to