[X2go-Dev] X2Go printing crash [was: libssh, nagle, and performance issues]

John A. Sullivan III jsullivan at opensourcedevel.com
Wed Sep 21 23:20:05 CEST 2011


On Wed, 2011-09-21 at 16:55 -0400, John A. Sullivan III wrote:
> On Tue, 2011-09-20 at 20:15 +0200, Mike Gabriel wrote:
> > Hi John,
> > 
> > On Di 20 Sep 2011 18:27:24 CEST "Jhn A. Sullivan III" wrote:
> > 
> > > <snip>
> > > I doubt it as the problem is one the client side and not the server
> > > side.  All our changes were to the server.  This is in the Squeeze
> > > client and not Windows - John
> > 
> > 1.
> > Does the problem disappear with the latest x2goclient (built today  
> > around 4pm CEST).
> > 
> > 2.
> > Can you send me the ,,printing'' config file in ~/.x2goclient?
> > 
> > 3.
> > Can you send me /etc/cups/printers.conf?
> > 
> > Thanks,
> > Mike
> <snip>
> Just tried.  It still crashes.  Here is /etc/cups/printers.conf:
> # Printer configuration file for CUPS v1.4.4
> # Written by cupsd
> # DO NOT EDIT THIS FILE WHEN CUPSD IS RUNNING
> <DefaultPrinter HP_2605dn>
> Info HP2605dn
> Location Kennebunk
> MakeModel HP Color LaserJet 2605dn Foomatic/Postscript
> DeviceURI socket://192.168.223.99:9100
> State Idle
> StateTime 1311624159
> Type 8400924
> Filter application/vnd.cups-raw 0 -
> Filter application/vnd.cups-postscript 100 foomatic-rip
> Filter application/vnd.cups-pdf 0 foomatic-rip
> Accepting Yes
> Shared No
> JobSheets none none
> QuotaPeriod 0
> PageLimit 0
> KLimit 0
> OpPolicy default
> ErrorPolicy stop-printer
> </Printer>
> 
> and here is .x2goclient/printing:
> [General]
> showdialog=true
> pdfview=false
> 
> [print]
> startcmd=false
> command=lpr
> stdin=false
> ps=false
> 
> [view]
> open=true
> command=kpdf
> 
> [CUPS]
> defaultprinter=HP_2605dn
> options\HP2605="Duplex=DuplexTumble", "HPColorSmart=Manual",
> "ColorModel=Gray1200x1200dpi"
> options\HP2605dn="Duplex=DuplexNoTumble",
> "CMAndResolution=Gray600x600dpi"
> options\HP_2605dn="Duplex=DuplexNoTumble"
> 
> I took an strace but it does not reveal a lot.  Here are pertinent
> sections from the end of x2gotrace.3420:
> 
> time(NULL)                              = 1316637069
> time(NULL)                              = 1316637069
> recv(29, "-hold-until-default\0\7no-hold!\0\24j"..., 2048, 0) = 2048
> time(NULL)                              = 1316637069
> recv(29, "utionD\0\0\0\5sidesD\0\30job-hold-until"..., 2048, 0) = 2048
> time(NULL)                              = 1316637069
> recv(29, "\4\0\0\0&#\0\0\0\4\0\0@\1#\0\0\0\4\0\0@\2#\0\0\0\4\0\0@\3"...,
> 448, 0) = 448
> time(NULL)                              = 1316637069
> open("/etc/cups/lpoptions", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No such
> file or directory)
> access("/home/jsullivan/.cups/lpoptions", F_OK) = -1 ENOENT (No such
> file or directory)
> open("/home/jsullivan/.lpoptions", O_RDONLY|O_LARGEFILE) = -1 ENOENT (No
> such file or directory)
> stat64("/home/jsullivan/.x2goclient/printing", {st_mode=S_IFREG|0755,
> st_size=369, ...}) = 0
> open("/home/jsullivan/.x2goclient/printing", O_RDONLY|O_LARGEFILE|
> O_CLOEXEC) = 31
> fcntl64(31, F_SETFD, FD_CLOEXEC)        = 0
> fstat64(31, {st_mode=S_IFREG|0755, st_size=369, ...}) = 0
> close(31)                               = 0
> stat64("/home/jsullivan/.x2goclient/printing", {st_mode=S_IFREG|0755,
> st_size=369, ...}) = 0
> stat64("/home/jsullivan/.x2goclient/printing", {st_mode=S_IFREG|0755,
> st_size=369, ...}) = 0
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
> stat64("/etc/cups/ppd/HP_2605dn.ppd", {st_mode=S_IFREG|0644,
> st_size=9953, ...}) = 0
> gettimeofday({1316637069, 848633}, NULL) = 0
> symlink("/etc/cups/ppd/HP_2605dn.ppd", "/tmp/4e7a498dcf2f9") = 0
> open("/tmp/4e7a498dcf2f9", O_RDONLY|O_LARGEFILE) = 31
> fcntl64(31, F_GETFD)                    = 0
> fcntl64(31, F_SETFD, FD_CLOEXEC)        = 0
> read(31, "*PPD-Adobe: \"4.3\"\n*%\n*% For info"..., 4096) = 4096
> read(31, "\n*PageRegion Letter/US Letter: \""..., 4096) = 4096
> read(31, "Standard \"(001.004S)\" Standard R"..., 4096) = 1761
> read(31, "", 4096)                      = 0
> read(31, "", 4096)                      = 0
> close(31)                               = 0
> unlink("/tmp/4e7a498dcf2f9")            = 0
> stat64("/home/jsullivan/.x2goclient/printing", {st_mode=S_IFREG|0755,
> st_size=369, ...}) = 0
> open("/home/jsullivan/.x2goclient/printing", O_RDONLY|O_LARGEFILE|
> O_CLOEXEC) = 31
> fcntl64(31, F_SETFD, FD_CLOEXEC)        = 0
> fstat64(31, {st_mode=S_IFREG|0755, st_size=369, ...}) = 0
> close(31)                               = 0
> stat64("/home/jsullivan/.x2goclient/printing", {st_mode=S_IFREG|0755,
> st_size=369, ...}) = 0
> stat64("/home/jsullivan/.x2goclient/printing", {st_mode=S_IFREG|0755,
> st_size=369, ...}) = 0
> stat64("/etc/localtime", {st_mode=S_IFREG|0644, st_size=3519, ...}) = 0
> time(NULL)                              = 1316637070
> time(NULL)                              = 1316637070
> .
> .
> .
> .
> time(NULL)                              = 1316637071
> time(NULL)                              = 1316637071
> clock_gettime(CLOCK_MONOTONIC, {709, 441819023}) = 0
> select(13, [12], NULL, NULL, {0, 0})    = 0 (Timeout)
> clock_gettime(CLOCK_MONOTONIC, {709, 444143062}) = 0
> open("/home/jsullivan/.x2go/S-jasiii-53-1316636661_stDKDE_dp24/spool",
> O_RDONLY|O_NONBLOCK|O_LARGEFILE|O_DIRECTORY|O_CLOEXEC) = 31
> statfs("/home/jsullivan/.x2go/S-jasiii-53-1316636661_stDKDE_dp24/spool",
> {f_type="EXT2_SUPER_MAGIC", f_bsize=4096, f_blocks=12812451,
> f_bfree=11505345, f_bavail=11375175, f_f
> getdents(31, /* 3 entries */, 32768)    = 76
> stat64("/home/jsullivan/.x2go/S-jasiii-53-1316636661_stDKDE_dp24/spool/.", {st_mode=S_IFDIR|0700, st_size=4096, ...}) = 0
> stat64("/home/jsullivan/.x2go/S-jasiii-53-1316636661_stDKDE_dp24/spool/13008-jasiii-cupsjob13904.pdf", {st_mode=S_IFREG|0644, st_size=23397, ...}) = 0
> getdents(31, /* 0 entries */, 32768)    = 0
> close(31)                               = 0
> stat64("/home/jsullivan/.x2go/S-jasiii-53-1316636661_stDKDE_dp24/spool/..", {st_mode=S_IFDIR|0755, st_size=4096, ...}) = 0
> clock_gettime(CLOCK_MONOTONIC, {709, 729349572}) = 0
> poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7,
> revents=POLLOUT}])
> writev(7, [{"\224\7\2\0\0\22\200\3\22\0\n\0\377\21\200\3[\1\0\0[\1\0\0
> \10\21\200\3\20\0\0\0"..., 96}, {NULL, 0}, {"", 0}], 3) = 96
> read(7, "\34\0\335b\377\21\200\3[\1\0\0\234\324\n\0\0\0\0\0\0\0\0\0\0\0
> \0\0\0\0\0\0"..., 4096) = 704
> read(7, 0x9bede30, 4096)                = -1 EAGAIN (Resource
> temporarily unavailable)
> read(7, 0x9bede30, 4096)                = -1 EAGAIN (Resource
> temporarily unavailable)
> munmap(0xb5b82000, 65932)               = 0
> munmap(0xb5ab5000, 633604)              = 0
> munmap(0xb5aa6000, 58716)               = 0
> munmap(0xb5894000, 584396)              = 0
> poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7,
> revents=POLLOUT}])
> writev(7, [{"\224\7\2\0\31\0\200\3\22\0\n\0\30\0\200\3[\1\0\0[\1\0\0\10
> \21\200\3\20\0\0\0"..., 3372}, {NULL, 0}, {"", 0}], 3) = 3372
> poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
> read(7, "\34\0\345b\30\0\200\3[\1\0\0N\325\n\0\0\0\0\0\0\0\0\0\0\0\0\0\0
> \0\0\0"..., 4096) = 1376
> read(7, 0x9bede30, 4096)                = -1 EAGAIN (Resource
> temporarily unavailable)
> poll([{fd=7, events=POLLIN|POLLOUT}], 1, -1) = 1 ([{fd=7,
> revents=POLLIN|POLLOUT}])
> read(7, "\26\0\201du\1\200\1u\1\200\1\0\0\0\0\0\0\0\0t\0\36\0\0\0\0\0\0
> \0\0\0", 4096) = 32
> writev(7, [{"O\7\2\0\1\0\200\3<\0\2\0\0\0\200\3.\1\2\0\5\0\200\3+\21\1
> \0", 28}, {NULL, 0}, {"", 0}], 3) = 28
> poll([{fd=7, events=POLLIN}], 1, -1)    = 1 ([{fd=7, revents=POLLIN}])
> read(7, "\1\1\205d\0\0\0\0\6\0`\3\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0\0
> \0", 4096) = 32
> read(7, 0x9bede30, 4096)                = -1 EAGAIN (Resource
> temporarily unavailable)
> close(7)                                = 0
> write(8, "\1\v\1\0\1\0\0\0\0\0\0\0\0\0\0\0", 16) = 16
> close(8)                                = 0
> open("/proc/stat", O_RDONLY|O_CLOEXEC)  = 7
> read(7, "cpu  53876 11825 26767 40263 127"..., 8192) = 2875
> close(7)                                = 0
> write(6, "@", 1)                        = 1
> close(6)                                = 0
> close(5)                                = 0
> rt_sigaction(SIGCHLD, {SIG_DFL, [], SA_NOCLDSTOP}, {0xb68cc3b0, [],
> SA_NOCLDSTOP}, 8) = 0
> exit_group(0)                           = ?
> 
> 
> I tried to intercept it with ddd but that didn't work.  Interestingly,
> its messages were that the program closed normally as if x2goprinting is
> invoking a close event.  I'll see what I can do to get this to run from
> a debugger but it is a showstopping bug for us - John
<snip>
Well this is bizarre.  I just ran x2goclient in Qt-Creator and used its
debugger.  Similar to ddd, no indication of a segfault.

I set a breakpont in PrintDialog::accept().  While I was deciding what
to do next, I started receiving "no response received" error messages
from the client session I had opened.

Eventually , I stepped through to PrintProcess::loadSettings() and the 
if ( dlg.exec() ==QDialog::Rejected ) line and it stuck there.  Stepping
over, Stepping out all brought me back to that line.  I finally just did
a run and my client was gone.  No seg fault - just a clean client exit
as a result of printing! Any ideas? - John




More information about the x2go-dev mailing list