Comment 8 for bug 1473527

Revision history for this message
Wesley Wiedenmeier (wesley-wiedenmeier) wrote :

I modified the script that I wrote to try to reproduce this error and was able to consistantly see IO errors when the script was added to the cloud-config-archive being passed to an image. Instead of writing only to either /dev/console or the real serial device which was /dev/ttyS0 here, each thread writes to both and calls .flush() on one after the other. Without writing to both /dev/console and /dev/ttyS0 I have not seen any IOErrors, so I believe that this may have something to do with the mechanism for /dev/console being forwarded into /dev/ttyS0.

I have not yet been able to cause an IO error using this script on its own, only when it is being run by cloud-init. I think this might be because of the cloud-final.service file specifying output from cloud-init to be written to console as well, causing another simultaneous write. I will work on trying to modify this script so that it can trigger the error when being run on its own as well.

I think that in the original error occuring during curtin vmtests some other process may have been writing to /dev/ttyS0 as cc_ssh_authkeys was writing to /dev/console via util.multi_log, causing this error to occur

With this script in cloud-init userdata I have seen at least one or two OSErrors in serial output each time the system has been tested.

New script: http://paste.ubuntu.com/15906498/
Example serial.log output from launch framework similar to curtin vmtests: http://paste.ubuntu.com/15906571/
There is a well formatted stacktrace on line 6730 and several others higher up that are difficult to read