On Wed, 12 Oct 2011 17:25:06 +0200, Otto Moerbeek wrote:
> On Wed, Oct 12, 2011 at 04:03:57PM +0200, Pascal Stumpf wrote:
>
> > I have two printers on the local network (laser and lexmark) and I want
> > to use lpd(8) to print on them. It seems to me that lpd is having some
> > sort of local problem (it does not even create lock and status files in
> > the spool directories, and both lpr and lpq do not see the daemon). But
> > some info first:
> >
> > lpd is started with -s, manually or with rc.d makes no difference (nor
> > removing -s).
>
> Check your /var/log/lpd.errs.
Doesn't contain anything but "restarted" messages.
> Also, ktracing lpd with the the -i flag might give a clue to what the
> lpd child is doing.
Apparently, it segfaults:
10436 lpd EMUL "native"
10436 lpd RET select 1
10436 lpd CALL sigprocmask(SIG_BLOCK,0xffffffff)
10436 lpd RET sigprocmask 0
10436 lpd CALL mprotect(0x710000,0x2000,0x3<PROT_READ|PROT_WRITE>)
10436 lpd RET mprotect 0
10436 lpd CALL mprotect(0x710000,0x2000,0x1<PROT_READ>)
10436 lpd RET mprotect 0
10436 lpd CALL sigprocmask(SIG_SETMASK,0)
10436 lpd RET sigprocmask 4294901503/0xfffefeff
10436 lpd CALL accept(0x5,0x7f7ffffe05c0,0x7f7ffffe02a8)
10436 lpd STRU struct sockaddr { AF_LOCAL, "" }
10436 lpd RET accept 8
10436 lpd CALL fork()
10436 lpd RET fork 25687/0x6457
25687 lpd RET fork 0
10436 lpd CALL sigprocmask(SIG_BLOCK,0xffffffff)
10436 lpd RET sigprocmask 0
10436 lpd CALL mprotect(0x710000,0x2000,0x3<PROT_READ|PROT_WRITE>)
10436 lpd RET mprotect 0
10436 lpd CALL mprotect(0x710000,0x2000,0x1<PROT_READ>)
10436 lpd RET mprotect 0
25687 lpd CALL sigaction(SIGCHLD,0x7f7ffffe00e0,0x7f7ffffe00d0)
10436 lpd CALL sigprocmask(SIG_SETMASK,0)
10436 lpd RET sigprocmask 4294901503/0xfffefeff
25687 lpd RET sigaction 0
10436 lpd CALL close(0x8)
10436 lpd RET close 0
25687 lpd CALL sigaction(SIGHUP,0x7f7ffffe00e0,0x7f7ffffe00d0)
25687 lpd RET sigaction 0
10436 lpd CALL select(0x8,0x7f7ffffe0170,0,0,0)
25687 lpd CALL sigaction(SIGINT,0x7f7ffffe00e0,0x7f7ffffe00d0)
25687 lpd RET sigaction 0
25687 lpd CALL sigaction(SIGQUIT,0x7f7ffffe00e0,0x7f7ffffe00d0)
25687 lpd RET sigaction 0
25687 lpd CALL sigaction(SIGTERM,0x7f7ffffe00e0,0x7f7ffffe00d0)
25687 lpd RET sigaction 0
25687 lpd CALL sigprocmask(SIG_BLOCK,0xffffffff)
25687 lpd RET sigprocmask 0
25687 lpd CALL mprotect(0x710000,0x2000,0x3<PROT_READ|PROT_WRITE>)
25687 lpd RET mprotect 0
25687 lpd CALL mprotect(0x710000,0x2000,0x1<PROT_READ>)
25687 lpd RET mprotect 0
25687 lpd CALL sigprocmask(SIG_SETMASK,0)
25687 lpd RET sigprocmask 4294901503/0xfffefeff
25687 lpd CALL close(0x5)
25687 lpd RET close 0
25687 lpd CALL close(0x6)
25687 lpd RET close 0
25687 lpd CALL close(0x7)
25687 lpd RET close 0
25687 lpd CALL sigprocmask(SIG_BLOCK,0xffffffff)
25687 lpd RET sigprocmask 0
25687 lpd CALL mprotect(0x710000,0x2000,0x3<PROT_READ|PROT_WRITE>)
25687 lpd RET mprotect 0
25687 lpd CALL mprotect(0x710000,0x2000,0x1<PROT_READ>)
25687 lpd RET mprotect 0
25687 lpd CALL sigprocmask(SIG_SETMASK,0)
25687 lpd RET sigprocmask 4294901503/0xfffefeff
25687 lpd CALL dup2(0x8,0x1)
25687 lpd RET dup2 1
25687 lpd CALL close(0x8)
25687 lpd RET close 0
25687 lpd CALL sigprocmask(SIG_BLOCK,0xffffffff)
25687 lpd RET sigprocmask 0
25687 lpd CALL mprotect(0x710000,0x2000,0x3<PROT_READ|PROT_WRITE>)
25687 lpd RET mprotect 0
25687 lpd CALL mprotect(0x710000,0x2000,0x1<PROT_READ>)
25687 lpd RET mprotect 0
25687 lpd CALL sigprocmask(SIG_SETMASK,0)
25687 lpd RET sigprocmask 4294901503/0xfffefeff
25687 lpd CALL read(0x1,0x8121e0,0x1)
25687 lpd GIO fd 1 read 1 bytes
"\^A"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e1,0x1)
25687 lpd GIO fd 1 read 1 bytes
"l"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e2,0x1)
25687 lpd GIO fd 1 read 1 bytes
"e"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e3,0x1)
25687 lpd GIO fd 1 read 1 bytes
"x"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e4,0x1)
25687 lpd GIO fd 1 read 1 bytes
"m"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e5,0x1)
25687 lpd GIO fd 1 read 1 bytes
"a"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e6,0x1)
25687 lpd GIO fd 1 read 1 bytes
"r"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e7,0x1)
25687 lpd GIO fd 1 read 1 bytes
"k"
25687 lpd RET read 1
25687 lpd CALL read(0x1,0x8121e8,0x1)
25687 lpd GIO fd 1 read 1 bytes
"
"
25687 lpd RET read 1
25687 lpd CALL seteuid(0)
25687 lpd RET seteuid 0
25687 lpd CALL setegid(0x1)
25687 lpd RET setegid 0
25687 lpd CALL sigprocmask(SIG_BLOCK,0xffffffff)
25687 lpd RET sigprocmask 0
25687 lpd CALL mprotect(0x710000,0x2000,0x3<PROT_READ|PROT_WRITE>)
25687 lpd RET mprotect 0
25687 lpd CALL mprotect(0x710000,0x2000,0x1<PROT_READ>)
25687 lpd RET mprotect 0
25687 lpd CALL sigprocmask(SIG_SETMASK,0)
25687 lpd RET sigprocmask 4294901503/0xfffefeff
25687 lpd PSIG SIGSEGV SIG_DFL code SEGV_MAPERR<1> addr=0x203677000
trapno=6
10436 lpd PSIG SIGCHLD caught handler=0x403560 mask=0x0
10436 lpd RET select -1 errno 4 Interrupted system call
10436 lpd CALL wait4(0xffffffff,0x7f7ffffdfd74,0x1<WNOHANG>,0)
10436 lpd RET wait4 25687/0x6457
10436 lpd CALL wait4(0xffffffff,0x7f7ffffdfd74,0x1<WNOHANG>,0)
10436 lpd RET wait4 -1 errno 10 No child processes
10436 lpd CALL sigreturn(0x7f7ffffdfd90)
10436 lpd RET sigreturn JUSTRETURN
10436 lpd CALL select(0x8,0x7f7ffffe0170,0,0,0)
I remembered I had the "S" malloc flag set, so I removed
/etc/malloc.conf, and ta-daaa, works. So this is a bug in the lpd code.
I suspect it is somewhere in the "common" code for all lp programs, as
I've also experienced SIGSEGVs in lpc. I'll see if I can hunt it down
further if I have time ...
Thanks!
--------
APL is a write-only language. I can write programs in APL, but I
can't read any of them.
-- Roy Keir