cloud-init fails with UnicodeDecodeError

Bug #1532072 reported by Bassam Tabbara
16
This bug affects 3 people
Affects Status Importance Assigned to Milestone
cloud-init
Fix Released
Medium
Scott Moser
cloud-init (Ubuntu)
Fix Released
Medium
Unassigned
Xenial
Fix Released
Medium
Scott Moser
Yakkety
Fix Released
Medium
Unassigned

Bug Description

I'm running the latest Ubuntu Wily AMI on EC2 (ami-15b7e87f). When the instance boots up cloud-init fails with the following exception:

[ 69.519513] cloud-init[901]: 2016-01-08 03:43:00,902 - util.py[WARNING]: failed of stage init
[ 69.551842] cloud-init[901]: failed run of stage init
[ 69.552029] cloud-init[901]: ------------------------------------------------------------
[ 69.552427] cloud-init[901]: Traceback (most recent call last):
[ 69.552591] cloud-init[901]: File "/usr/bin/cloud-init", line 509, in status_wrapper
[ 69.557342] cloud-init[901]: ret = functor(name, args)
[ 69.557524] cloud-init[901]: File "/usr/bin/cloud-init", line 272, in main_init
[ 69.557695] cloud-init[901]: init.update()
[ 69.557859] cloud-init[901]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 351, in update
[ 69.558020] cloud-init[901]: self._store_userdata()
[ 69.558185] cloud-init[901]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 360, in _store_userdata
[ 69.558344] cloud-init[901]: processed_ud = self.datasource.get_userdata()
[ 69.558502] cloud-init[901]: File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 83, in get_userdata
[ 69.558660] cloud-init[901]: self.userdata = self.ud_proc.process(self.get_userdata_raw())
[ 69.558832] cloud-init[901]: File "/usr/lib/python3/dist-packages/cloudinit/user_data.py", line 96, in process
[ 69.560273] cloud-init[901]: self._process_msg(convert_string(blob), accumulating_msg)
[ 69.560440] cloud-init[901]: File "/usr/lib/python3/dist-packages/cloudinit/user_data.py", line 342, in convert_string
[ 69.560603] cloud-init[901]: data = util.decode_binary(util.decomp_gzip(raw_data))
[ 69.560764] cloud-init[901]: File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 86, in decode_binary
[ 69.560926] cloud-init[901]: return blob.decode(encoding)
[ 69.561094] cloud-init[901]: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8d in position 0: invalid start byte

I've tracked it down to the following commit:

https://github.com/number5/cloud-init/commit/a7835683afd19f1ae291cc93f008320a7820b24f#diff-a543026d533dadf4f39b57d1f65dc1b7R339

The user-data that is set on our instances is beyond my control. Here's a sample of it:

b'\x8dV\xd9\x8e\xa3H\x16\xfd\x95\x92_\x9d\x99\xec\x06\xf2\x8d\xc5,\x06\x8c1;\xa3\xd1\x88}3;\x18C\xab\xff\xbd\xa32kT\xea\x87\x1e\r\x0f!\xc5\xb9q\xe3\x9es\xe3@\xf0\xc7!\n\xa7\xd4\xbe\xab\x87\xcfC1\xcf\xfd\'\x04=\xba8|\x14\xdd4\x7f\x9eh\x1a\x86\xa2\xa5|$\x13\x14\xe6i;\x9b\xe9\xf8LG\xe8\xf0v\x98\xe6p\x9c\x97\xde*\x9b\xb4[\x00\x1ewm2\x1d>O0\xfcv\xa8\xd3M\x0b[\x9002\x8f\xbc\x1b\xcb\xb9h\xaea\x93\x82\n\xe6\xd2z\x04L\x83\xfcy\\\xa6\xf9\x1fV\xdd\x14\xd9\x03K\x9at\x0e\xf9p\x0e\x0f\x9f\x7f\x00\x92M\xd4u\x1f\xa0\xf8Tv\xed\xc7\xd4\xa7q\x99\x95\xf1G\x02\xe2\x1f?\t\xcf\x00\x06\xa9\x13\x06\x04|/~\xffb\xfc>\xa6\x8f\x14(|_\xa6\xf7\x14\x81\x88\x0f\x04~\xd7\xf9w0\xc20\x05aT\x96d\x08\x1a\xa1\x08\x89#d\x16#h\x1ag\x08\x15\xa5p\x8a\x00)\xa7\x13uJ\xe2\x08\x8e\x00\x9b_\x0c\xa6\xaf\x0e|de\x0b\x88\xf7c\xd9\xce\xa0\xea\x89BI\x14\xa7\t\xb0%\r#\x08E\xa2 !\\\xa7\x8f\xaf.\xa5\x890v\r\xfb\x95\x0f\x16\x03\xe5\xe9\xef\x06\x9a\xf1X\xf6\xf3\x7f`\x10\xf8\x95\xf3E\x9b\x99\xa6\xb4\x89\x1e\x9b\xfa[\xda\xff\xaf\x8a\x8e\x93,\xca\xd2\x88"\xf18\xa2\x93\x98\xa4q\x84HQ\x92"C\x9c\x86\xd18\xc6\x12\x84\xa4\x888\xcc2\x1c\x8dOx\x94\xd11\ng\t\t\xc0\x0cO\xc2\xdfj\xcb\x16\xd0l\xe3\xf4\x1f\x1a>\xfdf\xfd\x9d\xf0\xed\x0f\xe7\xfb\x94@\xf0\xef\xc4\x0e\x7f\xbe\x1d\x96)\xb5\x96\xb6M\x1fB7J\xc0o\x87\xcf\x9f\xfd\xf8;~i\xa6\xff\xc2e\xdevc\xca\xa5\xe3\xfc\xb3z8\xa7\\\x91\xc65\x08g\xe1c\x02\xf1\xf4\x11Ns\x19\xcb\rh\x0b\xd7\xb5Y\x99/\xe3\x17599|\xa2\'\x14\xc1q\n\x98\xedk\xe7[7\xce_ \x8a\xbf}y\xfd6v\xaf\xed\x1b\xc5O\x04\x8d\xbd\x1d\xaaf\xfa5\'P\xf2\xcb\xc8\xe6\x0c\xea\x1f>\xffu\xa8@\xd5\xb7\x03\xb4`G\xd2`\xc0#\xff\x1c\xd8\x9f\x03c0R\xe0\xbe\x8a\x18\xbb\xf7\xfe\n\xe6\x8e\x9c\xc9\x18\xc9\xff\x8cW\x15\xc71~\xb7\xf2\xb9\xaf(\xab\xcf\xb2\xccy`\x8a3\xcb\x186\xc3\xca2\x9b<\x8c\xa3\x0f{\xbcBs\xa1\xe3\xd7\x1b\x8f3F\xe7c\xbd\xc9\xcbF\xe3(\xbc\xff\xcaP}h\xdc\xba\xa4\xb6a\xeco\x02\\\r\xba\x0c#\xf4\x0c\x05K\xbe\xd1\x1a^a\n){w\xcev\x90M\xb1\x10\xbb|m\xa41\x85\x9e\x1bo\x19\xdd9\xf2\x83\x92^\xafDPn\xd1\xcd\xec\xdcj\x12\xb4\xda;z\xce\xee\x19\xa5\xb0\xab\x0c\xd1\x93\xf3\xadsc\xc92\xb5\xc8\x8b\x0c\xe2dq\x86\xd8\xe3}\xe5\xa1\\\xa7\x1b\xac\xae\x1d\x17\xd2k )F\xb8\x8d\xceR\x89\xd5\xe3\x87\xeeD\xf9\x19\xc7\x11)\xa4\xf4\xa1\xd4\xe8\xca/e\xb7(\xf1-\xab\xf2=\xa9\xf2T1\xeb\x0e"\xab\x9b\x1d>\xca9V\xda\xcb\x8b\xa5k\xd1AM\x83P\xaf\xba\x13C\xfbe\xae\x1b4\x92\xb9\xcc\xee;4\xefV\xc7\xa6y\nq\xc7\xa7]\x87\xc9\xf9b\xa7(\x9b\x9cD\xc7+u+\xb8q\x8f\xe7\xa6\x0f\xc8V\x88Jx\xbaHD\xb0M\xa5 w\xb7\x1d\x7f:!tse"b\xd4\x868\xea\xb19(\xf6\x08\xb3\xe42\xc9\xd1\xd9\x83\xc9\x9e\xa6\xc74s\x85\xa5$\x8bn\x08\\\xe9:\xd1g\x86\xec\xd9\xda\x16\x0b\xa6\xc7\xeb\xe3\xc5\x1e<k\x16\xc6\xed\x86\xba\x8c\xfd\x98\xb0\xf4\x95\xc2\xa2\x073\x97\x97\xdc\x16w?\xbd\xc5\xc8\xcc;w\x895\x92\x18f\xa9\x1duZ]\xde\xd9\x1a\xb9\xa6v\x97GY\xa5\x9eY\xf9\x12\x8eCC\x95\x19\x8f\xe4C\x1bS\xe3\x14]\x9d\x0e\xc9.ao\x9dz\xa5\xe9\x80q\x82\x1d\x86\xfb;z\xfe\xe5\x19\xc1\xe5pD\xe3k0QfM\x96\xb9\xc1\x02^i\xcc\x9cYe\x96\xc9eIr\xf7p\t\xea\xb0\xd9\x99+\x9b\xd7CQ\x97"\xbd\xc2\xc0;\x93\xc0\xf0\x0c\xacY\xf2\xaa1>\xef\x18\x06\xcfs\x8f.\x91\xee\xab^R\xcfH\x04\xe7\xe1\xbe\xba\x08\xbb\xc2z\xe5\x13\xba\xc5<\xfd\xd6\xe9#\xf1\xbe\xab\xa8\xd0\x06.\x01\xdb\xa8\xb3%\x8d\xb3\xa9;\x93\n+\xfc\xbaV\xccK\xe3\xf3U\xab\x0cB\xab\x9c\xf0\x17\x06k|\xbcj\xd67\xa6\xf1\xc6K\xab\x98\x95\xcd\xaf\x0e\xcbh\x9a\xe2\x16p"1\'u\xa3\xa7\x08\xbd\x16\x91X<c\xcc8]\xab\x9a\xd08\xbaL\xdc\xc7\x14H\xda\xd3w\x93G\xd4\xde\xad\xc0\xbb\xa0\x81\'?\x81Vv\xde\x81Vs\x12\xd9m\x10M\r\xc7\xc1{\xb1\xe6\xf99e:\x91e\x94\xf5i\x0f\xcd\xb2+\xbd\xa8:X\x19\xa8\xd8\xd3?\xab\xf8\xaa\xde\x1d\xa7\xd1\xc5]s\x8b*PCd9^!w\xceL\x1d\xa5\xe5\xaep\xe2\x0c\xc2]\xff$\x04\x12j$,)7\xab\xbe\xf1[\xa9\xb3e\xcf\x93"\xe7U\x05\xc4#\xedV7Q1\xf0g/)\xacy\x80\x8b\x8bI\xe3\xc5\xd5\xbaR\xe2U\x13\xaf\x1cFxjs\x82\xaa^\x8f\xe5\x07|\xd9\x8e\xea~\\\x88\x0cCH\x94\xcd\xb1\x89\x02\x1d(\x112 h>T\xea\xe6\xc5\x146\xb3\xc8}^9\xd8\xdeG\x83o\xdf\x1ew\xd2\x0e2c\xbc;\x96\xafq\xb9\xcf\x1e/\xc1\xcbL\xe4\xf4u\xc3\x84\x82\x0e\xba\x13T\xae]3w]2\x01\xc2\xdb6\xbc\x02#a\xb0Q\xbaZ\xba\xa7$\xe6C\xf0\xa3Sv\xbfT\xa3\xa7\xaaz\xd4\xef\xb2\x80\xb9\xadM\xdf\xad\xbb\xe9F<\xe3B\xf5p\xa4\x07Gx\x16\xf1^sA\xdeg4\xc6\xcf*\xa7F\xd2\xd4-\xcf\xea\xdc\xc8\r6H\x03\xff"\xec\x86\xcf\xbd=\xb8\x08B\xba\xf2\x0f\x1d\xf5\x9b\xe1\xbe\x1fw\xd9G\xb8]\xf4\x90L\xb8\xa9uX\xb6\xc5\xb5K\xd9E\xc8u\xb60\x18\xc0\xf9\xcc\x14\xe2D(\x9b1\x9c[\x06\xca\xc2\xa9nm\x9f\xbf\x07\xf4\xdd\xbbg\xda\x98!\\\xd1:\x86eF^\xae?\x07P\xd6c\xb7\x13\x81w\x86\x1d8\xe3\x86\'\xb1\xb5)1\xc5$F\xde\x8f\xf4\x88i\xdc\x06o\xe6>\x86D\xeb.\xafg\xd8\xf7Q\xf0\x14\x840\x97\xc4\xe7\xb1q+U\xaauiT\xd7\xf5%!\xd0-\x0b\x8f\xdd\xeafi\xba\\\xabQ\xcdh\xaa}R\xd1\xc0\xc3a\xeb\x19\xf2N\xd2M\xd5\x19\xca\x13\xd1uS\x80!\xc4\xaaW\xde\xf0/J\x17\xc8\xc0}W\xc68\xab\xac\xc1\xf0\x1a\xc3\xac\xaa!\xdb|\x8d\x8d\xe9L\x8e\x99\xc3Z\xb4b\x9fo\x91\xc3c\x92\x17O\xd7\x95\x13\x0c\x8e\xe95Z\xa4)\xeb\x05\x81o\xa4\xd8\x8f&\x96;\x1c%\xf0\x9c\xd1]\xbb\x01\xf2\xd9}jl\xb2\xb8)\nl\xe3\x82\xa1\x99*\xe3\x08\x87\x7f\xff\x8f{\xe7\xd7/\xcc\xf9;\xfe\xe3\xfb\xd6\xff\xf1\xfe\x03}\x1d\xfe\xfc\x0b'

If I revert the code things seem to work.

Related branches

Revision history for this message
Launchpad Janitor (janitor) wrote :

Status changed to 'Confirmed' because the bug affects multiple users.

Changed in cloud-init (Ubuntu):
status: New → Confirmed
Revision history for this message
igor (icicimov-gmail) wrote :

Hi,

Just got the same on Ubuntu Vivid EC2 image.

[ 106.998590] cloud-init[878]: 2016-01-25 11:11:34,600 - DataSourceCloudSigma.py[WARNING]: failed to get hypervisor product name via dmi data
[ 107.127859] cloud-init[878]: 2016-01-25 11:11:34,747 - util.py[WARNING]: failed of stage init
[ 107.534501] cloud-init[878]: Traceback (most recent call last):
[ 107.534891] cloud-init[878]: File "/usr/bin/cloud-init", line 497, in status_wrapper
[ 107.535193] cloud-init[878]: ret = functor(name, args)
[ 107.535489] cloud-init[878]: File "/usr/bin/cloud-init", line 264, in main_init
[ 107.535787] cloud-init[878]: init.update()
[ 107.536110] cloud-init[878]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 335, in update
[ 107.536404] cloud-init[878]: self._store_userdata()
[ 107.536713] cloud-init[878]: File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 344, in _store_userdata
[ 107.537005] cloud-init[878]: processed_ud = self.datasource.get_userdata()
[ 107.537292] cloud-init[878]: File "/usr/lib/python3/dist-packages/cloudinit/sources/__init__.py", line 82, in get_userdata
[ 107.537585] cloud-init[878]: self.userdata = self.ud_proc.process(self.get_userdata_raw())
[ 107.537873] cloud-init[878]: File "/usr/lib/python3/dist-packages/cloudinit/user_data.py", line 96, in process
[ 107.538161] cloud-init[878]: self._process_msg(convert_string(blob), accumulating_msg)
[ 107.538453] cloud-init[878]: File "/usr/lib/python3/dist-packages/cloudinit/user_data.py", line 342, in convert_string
[ 107.538759] cloud-init[878]: data = util.decode_binary(util.decomp_gzip(raw_data))
[ 107.539047] cloud-init[878]: File "/usr/lib/python3/dist-packages/cloudinit/util.py", line 86, in decode_binary
[ 107.539338] cloud-init[878]: return blob.decode(encoding)
[ 107.539623] cloud-init[878]: UnicodeDecodeError: 'utf-8' codec can't decode byte 0x8d in position 0: invalid start byte

Revision history for this message
igor (icicimov-gmail) wrote :

Confirming that reverting the commit worked for me too.

# systemctl status cloud-init.service
● cloud-init.service - Initial cloud-init job (metadata service crawler)
   Loaded: loaded (/lib/systemd/system/cloud-init.service; enabled; vendor preset: enabled)
   Active: active (exited) since Mon 2016-01-25 11:39:41 UTC; 5s ago
  Process: 1475 ExecStart=/usr/bin/cloud-init init (code=exited, status=0/SUCCESS)
 Main PID: 1475 (code=exited, status=0/SUCCESS)

Scott Moser (smoser)
Changed in cloud-init (Ubuntu):
importance: Undecided → Medium
Revision history for this message
Luis Arias (kaaloo) wrote :

This is still present on Xenial.

Revision history for this message
Scott Moser (smoser) wrote :

fix-committed in trunk at revno 1245.

Changed in cloud-init (Ubuntu):
status: Confirmed → Fix Committed
status: Fix Committed → Confirmed
Changed in cloud-init:
status: New → Fix Committed
importance: Undecided → Medium
Changed in cloud-init (Ubuntu Xenial):
status: New → Confirmed
importance: Undecided → Medium
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.7.7~bzr1245-0ubuntu1

---------------
cloud-init (0.7.7~bzr1245-0ubuntu1) yakkety; urgency=medium

  * New upstream snapshot.
    - user_data: fix error when user-data is not utf-8 decodable (LP: #1532072)
    - write_files: if no permissions are provided, use the default without
      logging a warning.

 -- Scott Moser <email address hidden> Wed, 22 Jun 2016 15:11:33 -0400

Changed in cloud-init (Ubuntu Yakkety):
status: Confirmed → Fix Released
Revision history for this message
Scott Moser (smoser) wrote :

Hello,
An SRU upload of cloud-init for 16.04 that contains a fix for this bug has been made under bug 1595302. Please track that bug if you are interested.

Changed in cloud-init (Ubuntu Xenial):
status: Confirmed → In Progress
assignee: nobody → Scott Moser (smoser)
Changed in cloud-init:
assignee: nobody → Scott Moser (smoser)
Scott Moser (smoser)
Changed in cloud-init (Ubuntu Xenial):
status: In Progress → Fix Committed
Revision history for this message
Scott Moser (smoser) wrote :

fix is now released to xenial under bug 1595302. daily cloud-images with this newer version of cloud-init should appear in the next few days. Any image with a serial number *newer* than 20160707 should have cloud-init at 0.7.7~bzr1246-0ubuntu1~16.04.1 .

Changed in cloud-init (Ubuntu Xenial):
status: Fix Committed → Fix Released
Revision history for this message
Scott Moser (smoser) wrote :

This is fixed in cloud-init 0.7.7

Changed in cloud-init:
status: Fix Committed → Fix Released
Revision history for this message
James Falcon (falcojr) wrote :
To post a comment you must log in.
This report contains Public information  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.