Subject: [netatalk-admins] multiple print copies

From: Darren Atkinson <[email-masked]>
Date: Thu, 28 May 1998 14:25:24 -0700

Hello all,

I'm using netatalk-1.4b2 as provided by Debian Linux.  I'm trying to
use psf as an lpd filter for an Apple LaserWriter.

My problem is not on some (too many) jobs, I keep getting multiple
copies of the print job until the job is removed from the queue.
Looking back through the mailing list archives, I see that this issue
has come up before.  I've tried the prior solutions (not using of
filters, using ifmpap instead of ifpap), but to no avail.

As far as I can tell, the problem has to do with waiting for the
various processes that are spawned by psf (aka ifmpap):

May 28 13:43:48 murdoch ifmpap[22729]: starting for atkinson
May 28 13:43:48 murdoch ifmpap[22729]: accounting with psa[22730]
May 28 13:43:48 murdoch ifmpap[22729]: sending to pap[22731]
May 28 13:43:48 murdoch ifmpap[22729]: PostScript
May 28 13:44:46 murdoch ifmpap[22729]: pagecount with pap[22748]
May 28 13:44:46 murdoch ifmpap[22729]: 22731 done
May 28 13:45:03 murdoch ifmpap[22729]: 22748 done
May 28 13:45:03 murdoch ifmpap[22729]: wait3: No child processes
May 28 13:45:03 murdoch lpd[22728]: restarting ps10

What I can tell from the log and source code is that ifmpap is waiting
for three processes (psa, and two pap's) to exit.  It loops and calls
wait3() to do this, and once done logs this fact.  The two pap
processes complete just fine as shown by the log.

But, for some reason, wait3() is then reporting that there are no more
child processes.  My first assumption was that the psa process had
terminated abnormally.  However, the accounting file is written
correctly by psa!  I even did a trace on the process 22730 and it
completes just fine.  Even if the psa process were to die abnormally,
its status should still be there to collect.

Does anyone have any ideas?  I'm thinking of just hacking the source
to ignore that particular error from wait3().

Thanks a lot!
Darren Atkinson
Department of Computer Science & Engineering
University of California, San Diego