[Satellite 5.4] cobbler service fails with ReaderError: unacceptable character #x0000: special characters are not allowed in "<string>", position 42
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.
Comments