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