[Satellite 5.4] cobbler service fails with ReaderError: unacceptable character #x0000: special characters are not allowed in "<string>", position 42

Solution Verified - Updated -

Environment

  • Red Hat Network (RHN) Satellite 5.4

Issue

  • getting error message when cobbler fails to start
    [root@satellite]# service cobblerd start
    Starting cobbler daemon: Traceback (most recent call last):
      File "/usr/bin/cobblerd", line 76, in main
        api = cobbler_api.BootAPI(is_cobblerd=True)
      File "/usr/lib/python2.4/site-packages/cobbler/api.py", line 128, in __init__
        self.deserialize()
      File "/usr/lib/python2.4/site-packages/cobbler/api.py", line 689, in deserialize
        return self._config.deserialize()
      File "/usr/lib/python2.4/site-packages/cobbler/config.py", line 208, in deserialize
        serializer.deserialize(self._profiles)
      File "/usr/lib/python2.4/site-packages/cobbler/serializer.py", line 122, in deserialize
        rc = storage_module.deserialize(obj,topological)
      File "/usr/lib/python2.4/site-packages/cobbler/modules/serializer_catalog.py", line 186, in deserialize
        datastruct = deserialize_raw(obj.collection_type())
      File "/usr/lib/python2.4/site-packages/cobbler/modules/serializer_catalog.py", line 158, in deserialize_raw
        datastruct = yaml.load(ydata)
      File "/usr/lib64/python2.4/site-packages/yaml/__init__.py", line 57, in load
        loader = Loader(stream)
      File "/usr/lib64/python2.4/site-packages/yaml/loader.py", line 34, in __init__
        Reader.__init__(self, stream)
      File "/usr/lib64/python2.4/site-packages/yaml/reader.py", line 114, in __init__
        self.determine_encoding()
      File "/usr/lib64/python2.4/site-packages/yaml/reader.py", line 170, in determine_encoding
        self.update(1)
      File "/usr/lib64/python2.4/site-packages/yaml/reader.py", line 204, in update
        self.check_printable(data)
      File "/usr/lib64/python2.4/site-packages/yaml/reader.py", line 179, in check_printable
        'unicode', "special characters are not allowed")
    ReaderError: unacceptable character #x0000: special characters are not allowed
      in "<string>", position 42
                                                               [  OK  ]
    

Resolution

  • Search for all files in /var/lib/cobbler/config/*.d/* with name not ending in .json, and make sure it does not contain any special characters.

  • If necessary, try to narrow it down with attached (unofficial/unsupported) debug patches serializer_catalog.py.TEST.00557951.1.patch and reader.py.TEST.00557951.1.patch, which applies to /usr/lib/python2.4/site-packages/cobbler/modules/serializer_catalog.py and /usr/lib64/python2.4/site-packages/yaml/reader.py respectively.  Then restart cobbler service to get the debug output (there will be alot since the debug patches try to print out file's name and content).

Root Cause

The traceback indicates that in some file (whose name does not end in .json) among /var/lib/cobbler/config/*.d/* there's a special character (unicode #x0000). This causes cobbler start/initialization to fail.

Attachments

This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.

1 Comments

How do you use the python patches?