[Samba] Printing eats my CPU

Franz Sirl Franz.Sirl-kernel at lauterbach.com
Mon Jul 29 00:56:03 GMT 2002


Note: Resent to list only without attachment

At 16:41 08.07.2002, Gerald Carter wrote:
>On Tue, 2 Jul 2002, Martin Zielinski wrote:
>
> > Hi all,
> > I still have several problems with the printing system.
> >
> > The most critical is, that some drivers seem to cause an infinite RPC loop.
> > I have a KYOCERA Mita KM 4230 KX driver installed. In this moment I can see
> > SPOOLSS_GET_PRINTER and SPOOLSS_GET_PRINTERDATA requests and
> > RPC responses on the net. Stracing the smbd process looks like this:
>
>How many printers do you have on the server?  Just looks like normal
>tdb lookups.

I got the same problem here with the Kyocera FS-9000 KX driver rev 1.7 and 
a single printer share on the server. Occasionally printing wouldn't work 
anymore and some smbd processes did cause high CPU load, so far the only 
measure I found was to delete and recreate all the printing TDB's.

Today it happened again for one colleague and he answered "I fiddled with 
the printer settings, playing with the prolog/epilog sequences". This 
caught my attention and I tried the same from my Win2ksp1 PC. I just 
enabled and disabled the prolog/epilog setting in the driver once, pressed 
OK, and voila! My smbd process did go to high CPU load!

In the logs lines like

[2002/07/26 15:57:57, 0] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7935)
   talloc_realloc failed to allocate more memory for data!

arrived quickly. I looked in the source and then added this patch:

-                       DEBUG(0,("talloc_realloc failed to allocate more 
memory for data!\n"));
+                       DEBUG(0,("talloc_realloc failed to allocate more 
memory [data_len=%d] [add_len=%d] for data!\n", data_len, add_l

and then I did a level 10 trace:

[2002/07/26 15:57:57, 9] printing/nt_printing.c:get_a_printer_2(2701)
   Unpacked printer [fs9000] name [\\linuxpc1\fs9000] running driver 
[Kyocera FS-9000 KX]
[2002/07/26 15:57:57, 10] printing/nt_printing.c:get_a_printer(3302)
   get_a_printer: [fs9000] level 2 returning WERR_OK
[2002/07/26 15:57:57, 10] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7919)
   retrieved value number [0] [Setup]
[2002/07/26 15:57:57, 10] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7919)
   retrieved value number [1] [Render1]
[2002/07/26 15:57:57, 10] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7919)
   retrieved value number [2] [PDL1]
[2002/07/26 15:57:57, 10] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7919)
   retrieved value number [3] [PDL4]
[2002/07/26 15:57:57, 10] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7919)
   retrieved value number [4] [BinReassign]
[2002/07/26 15:57:57, 10] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7919)
   retrieved value number [5] [IsUserSetChange]
[2002/07/26 15:57:57, 10] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7919)
   retrieved value number [6] [TempKcPrologEpilogData]
[2002/07/26 15:57:57, 0] 
rpc_server/srv_spoolss_nt.c:_spoolss_enumprinterdataex(7935)
   talloc_realloc failed to allocate more memory [data_len=0] [add_len=0] 
for data!

Aha, trying to allocate 0 bytes failed! I have no idea how this RPC stuff 
works, but my guess is that my enabling/of the prolog/epilog sequences 
(TempKcPrologEpilogData?) in the printer driver settings created the entry, 
but since I disabled it immediately again, it wasn't deleted, but set to 0 
length.

Full compressed log attached.

Franz.





More information about the samba mailing list