[mod.computers.laser-printers] Transcript v2.0 bug

rusty@WEYL.BERKELEY.EDU (Rusty Wright) (11/21/86)

As per Rudy's buggestion I commented out the signal in psrv.c and
commented out the longjmp/setjmp for waitonreverse in pscomm.c; that
causes the transcript software to hang every time something is
spooled.

Complaint: his message doesn't say whether the the old fix (moving the
parent code that fiddles with file descriptors) should be left in.  I
put things back the way they were (file descriptor fiddling code back
in parent part) when I implemented his more recent bug fix (commenting
out the longjmp/setjmp).

I have gone back to his first suggestion of moving the file descriptor
fiddling code out of the parent part.  Perhaps that will help.

The Transcript software seems to hang fairly often on us.  It seems to
happen whenever someone spools a .dvi file that specifies bad
magnifications which causes the dvi to postscript filter to generate
messages saying that is substituting a different magnification in
place of the requested one.  Someone is creating a file named
errsNNNNNN in the spool directory; some part of the lpr software I
guess.  There have been times where a file is created in the spool
directory whose name looks like it was the contents of an errsNNNNNN
file; since 4bsd allows long filenames an "ls" of the spool directory
looked rather strange.  Don't know if Transcript or the lpr software
is to blame.

Here is a note from Glen Reid; he makes a comment about the hanging
problem.

From: adobe!greid@decwrl.DEC.COM
Date: 17 Nov 1986 1506-PST (Monday)
To: rusty@weyl.Berkeley.EDU (Rusty Wright)
Cc: greid@decwrl.DEC.COM
Subject: Re: Transcript problems & questions
In-Reply-To: decwrl!rusty@weyl.Berkeley.EDU (Rusty Wright) /
		Wed, 5 Nov 86 17:36:42 PST.
             <8611060136.AA03936@weyl.Berkeley.EDU>


Rusty,

Sorry it took so long to reply to your questions....

1.  Will you be supplying/supporting TeX?  We have a dvi-to-PostScript
converter that has a variegated pedigree and it seems to work ok
except that sometimes the software gets wedged and I have to go in and
kill all of the various filter processes.  I'm not sure if this
happens with troff; we mostly use TeX here.

    We have no plans to sell or support TeX directly.  There are
    various possibilities for the wedging--possibly VM is over-
    flowing (some of the public domain dvi2ps filters don't do
    a very good job of memory management).  Additionally, it is
    occasionally possible to confuse the spooler by lprm'ing a
    job.

2.  It sure would be nice if Transcript would print the error messages
from the filter programs.  A good place would be on the banner page.
Imagen's software does this and it's real handy.  It looks like the
4bsd line printer spooler software directs all output from stderr into
a file "errs.NNNNNN" in the lpd spool directory so it certainly seems
doable (or perhaps Transcript is doing this?).

    As far as I know, the BSD spooler isn't doing this; I have never
    seen that on any of the bsd spoolers I have come into contact
    with.  However, it is possible to implement what you suggest
    (I think).  I have passed it on to the person who implemented
    TranScript.

3.  How can I tell what version of Transcript I have?  The file Notice
only lists the year 1985.  Is there some other file that has some sort
of "master version number" for the purpose of bug reporting?

    IF ( /usr/lib/psif is a shell script )
    OR ( /usr/lib/ps/pscomm exists )
    OR ( you have the ps4014 filter )
    THEN you have Version 2.0
    ELSE you have Version 1.0

    We will soon include a version number in a more visible place.

4.  I'm at UC Berkeley; we have a site license for Transcript.  I
don't think that anybody knows if we bought software support from you.
Do you provide such a thing?  Do you know who at Adobe would know if
we bought software support?

    We do not currently sell support for TranScript.  It falls under
    our present scheme of free support (you can usually get some-
    one who knows something about what is going on).  Ask for me
    or Andy Shore if you need support.

Thanks for your input,

Glenn Reid
Adobe Systems

Rudy.Nedved@H.CS.CMU.EDU (11/21/86)

Rusty,

The "correct" fix which worked for over a week was to simply
commented out or delete the longjmp(), setjmp() and remove
the spin loop on revdone with the pause in it. The code looks
like the following:
    /* do page reversal if specified */
    if (reversing = ((reverse != NULL) && canReverse)) {
	debugp((stderr,"reversing\n"));
#ifndef CMUCS
	VOIDC setjmp(waitonreverse);
	if (!revdone) {
	    VOIDC signal(SIGEMT, reverseready);
#endif CMUCS
	    if (pipe (fdpipe)) pexit2(prog, "reverse pipe", THROW_AWAY);
		.
		.
		.
#ifndef CMUCS
	    while (TRUE) {
		if (revdone) break;
		pause();
	    }
	}
	VOIDC signal(SIGEMT, SIG_IGN);
#endif CMUCS
	debugp((stderr,"%s: reverse feeding\n",prog));
    }
I commented out the signal in psrv and the longjmp in reverseready(). I
was not looking for a truly clean fix....

I received some changes today from Andy Shore but because I don't
understand the legalities of purchased software...I will not send
the changes. I saw a comment that ron@nprdc had this problem and
a fix....this seems to be the fix Andy Shore picked up.

As for the "errsXXXXX" file (where XXXXXX is the lpd pid also found in the
lock file), they are created by the 4.3BSD version of lpd for the input
filter. When the input filter terminates, lpd copies the file onto the end of
the logfile if it exists....and deletes the file. If you cancel a print
request getting processed, many times the errsXXXX file will be left around.

I have a community of 3000 or so people using about 14 LaserWriters+ and two
LinoType 300s directly, by Scribe, MacDraw or by TeX. One of the failure
modes seems to be a spinloop for the PostScript machine....jobtimeout or
whatever does not seem to be kicking it. Yet a power cycle of the printer
does the job.

Cheers,
-Rudy