[cifs-protocol] [REG:110112076424325]Problem communicating with SPOOLSS, invalid parameter.
bburgin at microsoft.com
Wed Nov 24 16:32:35 MST 2010
Password for the file upload workspace:
From: Bryan Burgin
Sent: Wednesday, November 24, 2010 3:31 PM
To: 'Jeremy Allison'; 'cifs-protocol at samba.org'; 'pfif at tridgell.net'
Cc: MSSolve Case Email
Subject: RE: [REG:110112076424325]Problem communicating with SPOOLSS, invalid parameter.
Sorry for the delay. Seattle has been shut down with ice and snow.
In reviewing our code, I believe that spoolsv.exe contains the logic that adds a printer. I attached both the x86 and x64 builds of the Time Travel Trace (TTT) utility (rename .m_s_i to .msi and execute). TTT will capture debug information that will allow me to step through the code as if I had a debugger attached.
Can you capture a Time Travel Trace on your system? If you have easy access to both x86 and x64, then x86 is preferable.
Once you install this package, it will install the tracer at c:\debuggers\ttt as tttracer.exe. If you are doing this on a x86 box, you will have to run "tttracer -initialize" from an elevated Command Prompt once and reboot. This step isn't required for x64. Then do the following:
-- Run TASKLIST from a Command Prompt. Record the Process ID (PID) for SPOOLSV.EXE.
-- from \debuggers\ttt, run "TTTRACER -attach <pid>".
-- TTTracer may complain that you are not using the current version. Ignore this message; this is the latest version.
-- In 15-20 seconds, a small dialog box will appear indicating that TT Tracer is recording.
-- Repro your situation.
-- Stop TTTracer (a button on the dialog is provided).
Two files will be produced: spoolsv01.run and spoolsv.out. Send both. The files are likely to be large, so I created you a upload workspace at [...]. I'll send you its password in separate mail.
The second technique we can use to debug this issue is to collect debug spew from the spooler code via ETW (Event Tracing for Windows). ETW traces can be obtained via TraceLog (discussed here: http://msdn.microsoft.com/en-us/library/ff552994.aspx). We will want to request traces for these providers (by GUID):
I attached the file spoolerguids.txt. Following Trace Log\Examples\Example 14 " Starting a Trace Session with Multiple Providers", you would:
-- Execute "tracelog -start addprinter -guid spoolerguids.txt -f addprinter.etl"
-- repro your scenario
-- Execute "tracelog -stop"
There should be a addprinter.etl file. Send that.
I attached both the x86 and x64 builds of TraceLog.exe (rename as needed).
My goal is to reproduce this action here between a Windows 7 client and a Windows Server to verify all these steps, but that is going to be delayed because of the weather situation up here and the holiday. So, I wanted to send you what I believe are the correct instructions now so that we can work in parallel.
From: Bryan Burgin
Sent: Monday, November 22, 2010 4:10 PM
To: Jeremy Allison; cifs-protocol at samba.org; pfif at tridgell.net
Cc: MSSolve Case Email
Subject: [REG:110112076424325]Problem communicating with SPOOLSS, invalid parameter.
I'm researching this for you. I worked with Guenther on similar [MS-RPRN]questions during the Samba IO Lab, along with Nick and Tarun from Microsoft and the Product Group.
The two most detailed debugging techniques would be for me to collect ETW traces from you or Time Travel Traces (iDNA Traces). Both would involve receiving logs from you and analyzing them here. As for ETW traces, we would use TraceLog. I'm reviewing the exact GUIDs you need to specify. As for TT Traces, I will also send you the tool to capture the iDNA log.
Can you send me a screen shot showing me the "INVALID_PARAMETER error dialog box (0x00000057)"?
From: Jeremy Allison [mailto:jra at samba.org]
Sent: Friday, November 19, 2010 4:28 PM
To: Interoperability Documentation Help; cifs-protocol at samba.org; pfif at tridgell.net
Cc: jra at samba.org
Subject: Problem communicating with SPOOLSS, invalid parameter.
Hongwei and Nick suggested I post this here,
I'm trying to track down an interoperability bug with Samba and the Windows 7 print subsystem.
When doing "connect" to a remote printer from Windows 7 with our latest auto-generated PIDL code (git master branch) it downloads the printer driver, then fails with an INVALID_PARAMETER error dialog box (0x00000057).
Of course there is no such error in the wireshark trace, or in the Samba logs :-(.
The same code (master) doing the same thing to Windows XP
SP3 works perfectly, so my guess is it's some alignment or padding check that was tightened up for Win7.
Another data point - running Win7 against Samba 3.3.x (which uses the old hand-marshalled code) and connecting to the same printer works perfectly (one more data point making me think this is an alignment or padding we're getting wrong in the new PIDL-generated code).
Is there some registry setting or debug setting I can use to get SPOOLSS.EXE to tell me what call it's having problems with ? I searched on the 'net for a SPOOLSS equivalent to "debug log level"
but came up empty :-).
More information about the cifs-protocol