[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: Cups: Testseite/KDE ok, Konsole/Mozilla nicht



[Da diese Mail von Donnerstagnachmittag immer noch nicht angekommen zu
sein scheint, schicke ich sie ein weiteres Mal. Sorry, falls dadurch ein
Duplikat entstehen sollte.]

Hallo!

On 16 Sep 2004 at 09:20 +0200, Marcus Walther wrote:

> ># strace -o /tmp/LOG -v -tt -f -s256 -p `pidof cupsd`

> Ich habe die Logs unter <http://www.marcus-walther.de/LOG.fail.bz2>
> bzw. <http://www.marcus-walther.de/LOG.ok.bz2> abgelegt.

Dann wollen wir mal...

Generell scheint der grobe Programmablauf in Ordnung zu sein: cupsd
akzeptiert den Job und startet korrekt die Filter texttops und pstops
sowie das HTTP-Backend.

texttops hatten wir ja schon als unschuldig ausgeschlossen, pstops liest
zumindest die passende PPD ein und müsste damit eigentlich gehalten
sein, eine Wandlung von PS Level 3 auf Level 2 vornehmen (ich kürze hier
auf der Liste mal die recht langen Timestamps):

| 3506 execve("/usr/lib/cups/filter/pstops", [..., "PPD=/etc/cups/ppd/fs1010.ppd"
| 3506 open("/etc/cups/ppd/fs1010.ppd", O_RDONLY) = 3
| 3506 read(3, "*PPD-Adobe: \"4.3\"\n ...

Allerdings gibt pstops offenbar nichtsdestotrotz PS Level 3 aus. Da ist
es vermutlich auch kein Trost, dass die PJL-Befehle korrekt aus der PPD
übernommen worden zu sein scheinen:

| 3506 write(1, "\33%-12345X@PJL\n@PJL JOB NAME = \"text.txt\" ... \
|            @PJL ENTER LANGUAGE=POSTSCRIPT\n%!PS-Adobe-3.0 ...
| [...]
| 3506 write(1, "%%Trailer\n%%Pages: 1\n%%EOF\n\33%-12345X@PJL EOJ\n\33%-12345X"

Und sogar die EOJ-Markierung stimmt. Auch werden diese Daten korrekt vom
HTTP-Backend eingelesen:

| 3507 execve("/usr/lib/cups/backend/http", ["http://192.168.100.98:631/ipp";, ...
| [...]
| 3507 read(4, "\33%-12345X@PJL\n@PJL JOB NAME = \"text.txt\" ..., 131072) = 131072
| 3507 send(3, "\33%-12345X@PJL\n@PJL JOB NAME = \"text.txt\" ..., 32768, 0) = 32768
| 3507 send(3, "c7d27582b3894 ..." 32768, 0) = 32768
| [...]
| 3507 recv(3, "HTTP/1.1 200 OK\r\nPragma: no-cache\r\nConnection: close ...

Hier fällt jedoch auf, dass die (ersten) 128 KiB der Job-Datei gelesen
werden (die von texttops/pstops erzeugte Datei also >= 131072 Bytes groß
sein muss), vom Printserver aber schon nach erfolgreicher Übertragung
von 2x32 KiB eine 'Connection: close'-Nachricht versendet wird. Beim
funktionieren Druckjob geschieht das erst nach Empfang des gesamten
Jobs, so wie es sein sollte.

Ich kann mir das spontan nur damit erklären, dass sich der
PS-Interpreter des Druckers am falschen PS-Level verschluckt und der
Printserver daraufhin (noch während CUPS immer neue Daten schickt) die
Verbindung beendet.

Da die PPD (welche ja explizit Level 2 fordert) von jedem Filter
zumindest eingelesen wird, bleibt fast nur noch ein CUPS-Bug in puncto
PS-Wandlung/Erzeugung übrig. Das HTTP-Backend scheint soweit zu
funktionieren (Ob es auch korrekt IPP spricht, haben wir allerdings noch
nicht überprüft).

Natürlich ist ein strace-Durchlauf kein Ersatz für ein ausführliches
Debugging, aber ich denke, dass wir das ab jetzt den CUPS-Entwicklern
überlassen sollten. Ich denke auch, dass du mittlerweile so viele
Informationen über das Fehlverhalten gesammelt hast, dass dir ein
vorbildlicher Bug-Report möglich wird.

Es wäre prima, wenn du die Liste dann abschließend kurz über das
Ergebnis informieren könntest (z.B. durch Verweis aufs CUPS-ML-Archiv
oder eine Bug-Nummer).

> Mir auffällige Fehlermeldungen finden sich in beiden Logs.

Welche genau meinst du? Mir ist (abgesehen von Obigem) nichts Unübliches
aufgefallen, und ein paar ENOENTs z.B. sind normal, wenn potentiell
existente Dateien durchprobiert werden...

Gruß und viel Erfolg,
Elmar

-- 
[ GnuPG: D8A88C0D / 2407 063C 1C92 90E9 4766 B170 5E95 0D7F D8A8 8C0D ]
·······································································
  Die eigene Erfahrung hat den Vorteil völliger Gewißheit.
                                                      -- Schopenhauer

Attachment: pgp0GE9GaLkSn.pgp
Description: PGP signature


Reply to: