Upgrade to 3.6.6 fails - Couldn't migrate printers tdb file
ddiss at suse.de
Wed Jul 4 09:35:46 MDT 2012
On Wed, 4 Jul 2012 10:58:12 -0400
Chris Smith <smb_77 at chrissmith.org> wrote:
> From the smbd.log level 10 log there is this:
> [2012/07/04 10:41:28.146531, 5, effective(0, 0), real(0, 0)]
> moved '/var/lib/samba/ntdrivers.tdb' to '/var/lib/samba/ntdrivers.tdb.bak'
> [2012/07/04 10:41:28.146688, 3, effective(0, 0), real(0, 0)]
> convert_string_talloc: Conversion error: Illegal multibyte sequence(â0)
> [2012/07/04 10:41:28.146750, 0, effective(0, 0), real(0, 0)]
> Conversion error: Illegal multibyte sequence(â0)
> [2012/07/04 10:41:28.146823, 1, effective(0, 0), real(0, 0)]
> ndr_pull_error(5): Bad character conversion with flags 0x42
> [2012/07/04 10:41:28.146882, 2, effective(0, 0), real(0, 0)]
> printer pull failed: Character Conversion Error
> [2012/07/04 10:41:28.146947, 0, effective(0, 0), real(0, 0)]
> Couldn't migrate printers tdb file: NT_STATUS_NO_MEMORY
> Seems it doesn't like the ntdrivers.tdb file. It verifies fine with
> tdbbackup and I can backup and restore with tdbbackup or
> tdbdump/tdbrestore yet the same issue remains.
ntdrivers.tdb is ok, it appears to be ntprinters.tdb which is processed
afterwards. My guess is it's a reoccurrence of:
Windows (likely the fault of the printer driver) sometimes adds
garbage after the null terminator for printer device mode strings.
Unmarshalling of the device mode chokes in some cases when processing
The changes for 8606 fixed spoolss_DeviceMode (spoolss.idl)
unmarshalling. However, it looks like we also need to do the same for
ntprinting_devicemode (ntprinting.idl) to handle cases where this
garbage was stored in the tdb, prior to the 8606 fix.
Again, please raise a bug so we can fix this. Attach your printing tdb
files in addition to the logs please.
More information about the samba-technical