I think that I understand more precisely the bug. I will comment the above log 
where the client make two request :
->  It request the printer attributes
and next
-> the job attributes

The first request works, the second crash.

###############
The first request
###############

1) The client query the printer attributes
--------------------
(... read request data from client ... and next )
cupsdReadClient: 24 2.0 Get-Printer-Attributes 1
cupsdProcessIPPRequest(0x7f8861d6c8f0[24]): operation_id = 000b
Get-Printer-Attributes ipp://fichdc:631/printers/AL-C3800_cdi
get_printer_attrs(0x7f8861d6c8f0[24], ipp://fichdc:631/printers/AL-C3800_cdi)
...
--------------------

2) CUPS query the printer attributes and write it in a struct 
--------------------
copy_attrs(to=0x7f886185bbe0, from=0x7f8861ee47e0, ra=0x7f8861d4b0d0, group=0, 
quickcopy=0)
copy_attribute(0x7f886185bbe0, 0x7f8861973c60[marker-colors,4,42])
copy_attribute(0x7f886185bbe0, 0x7f8861973cf0[marker-levels,4,21])
...
copy_attribute(0x7f886185bbe0, 0x7f8862000780[operations-supported,4,23])
Returning IPP successful-ok for Get-Printer-Attributes 
(ipp://fichdc:631/printers/AL-C3800_cdi) from 172.16.1.23
--------------------

3) Cups write the attributes to the client 
--------------------
cupsdProcessIPPRequest: ippLength(response)=2153
cupsdAddSelect(fd=24, read_cb=0x7f8860956d60, write_cb=0x7f8860956720, 
data=0x7f8861d6c8f0)
select_timeout(0): 26 seconds to write dirty config/state files
cupsdWriteClient(con=0x7f8861d6c8f0(24)) response=0x7f886185bbe0(0), file=-1 
pipe_pid=0 state=7
... 
cupsdWriteClient(con=0x7f8861d6c8f0(24)) response=0x7f886185bbe0(2), file=-1 
pipe_pid=0 state=7
--------------------

###############
The second request
###############

1) The client query the job attribute
--------------------
(... read request data from client ... and next )
cupsdReadClient: 24 2.0 Get-Job-Attributes 1
cupsdProcessIPPRequest(0x7f8861d6c8f0[24]): operation_id = 0009
Get-Job-Attributes ipp://fichdc:631/printers/AL-C3800_cdi
get_job_attrs(0x7f8861d6c8f0[24], ipp://fichdc:631/printers/AL-C3800_cdi)
--------------------

2) CUPS query the job attributes and write it in a struct 
--------------------
copy_attrs(to=0x7f8861d5a390, from=0x7f8861d49af0, ra=0x7f8861d4b0d0, group=2, 
quickcopy=0)
copy_attribute(0x7f8861d5a390, 0x7f8861d49d70[job-originating-user-name,2,42])
....
copy_attribute(0x7f8861d5a390, 0x7f8861d5f260[job-media-sheets-completed,2,21])
Returning IPP successful-ok for Get-Job-Attributes 
(ipp://fichdc:631/printers/AL-C3800_cdi) from 172.16.1.23
--------------------

3) BUT instead of WRITE the result to the client CUPS do a READ :
 --------------------
cupsdProcessIPPRequest: ippLength(response)=352
cupsdAddSelect(fd=24, read_cb=0x7f8860956d60, write_cb=0x7f8860956720, 
data=0x7f8861d6c8f0)
select_timeout(0): 26 seconds to write dirty config/state files
cupsdReadClient(con=0x7f8861d6c8f0(24)) con->http.error=0 con->http.used=0, 
con->http.state=7, con->data_encoding=HTTP_ENCODE_LENGTH, 
con->data_remaining=352, con->file=-1
cupsdReadClient: 24 Closing on EOF
cupsdCloseClient: 24
 --------------------

We see that in the "cupsdReadClient" call the  "con->data_remaining=352"
correspond to the size of the attributes retourned by the Get-Job-
Attributes process.

Strange no ?

Baptiste.

-- 
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/512220

Title:
  cupsd crash "Closing on unknown HTTP state 0"

To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cups/+bug/512220/+subscriptions

-- 
ubuntu-bugs mailing list
ubuntu-bugs@lists.ubuntu.com
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs

Reply via email to