Comment 2 for bug 745014

Revision history for this message
Colin Watson (cjwatson) wrote :

I tried to reproduce this: I selected English language and French keyboard at the gfxboot menu, as you did, launched the installer as you said, left the locale in English, and kept the French keyboard layout. The installation completed successfully.

That said, regardless of my ability to reproduce this, we may be able to get somewhere by inspection. The point where it falls over is:

debconf (developer): <-- GET keyboard-configuration/variant
debconf (developer): --> 1 France - Alternative
Exception caught in process_line:
Traceback (most recent call last):
  File "/usr/lib/ubiquity/ubiquity/filteredcommand.py", line 132, in process_line
    return self.dbfilter.process_line()
  File "/usr/lib/ubiquity/ubiquity/debconffilter.py", line 281, in process_line
    if not input_widgets[0].run(priority, question):
  File "/usr/lib/ubiquity/plugins/ubi-console-setup.py", line 418, in run
    self.ui.set_keyboard_variant(self.db.get(question))
  File "/usr/lib/ubiquity/ubiquity/plugin.py", line 44, in wrapper
    return target(self, *args, **kwargs)
  File "/usr/lib/ubiquity/plugins/ubi-console-setup.py", line 307, in set_keyboard_variant
    self.keyboardDisplay.setVariant(var)
  File "/usr/lib/ubiquity/ubiquity/frontend/kde_components/Keyboard.py", line 68, in setVariant
    self.loadCodes()
  File "/usr/lib/ubiquity/ubiquity/frontend/kde_components/Keyboard.py", line 233, in loadCodes
    cfile = pipe.communicate()[0]
  File "/usr/lib/python2.7/subprocess.py", line 732, in communicate
    stdout = self.stdout.read()
IOError: [Errno 4] Interrupted system call
Mar 29 16:38:01 ubiquity: ['log-output', '-t', 'ubiquity', '--pass-stdout', '/usr/lib/ubiquity/console-setup/keyboard-configuration.postinst', 'configure'] exited with code 141

What did you do when the keyboard page was displayed? Did you change the keyboard layout or variant? I wonder if this happens if they're changed twice in quick succession, or something like that.

http://bugs.python.org/issue9867 is related to this. Although some parts of subprocess were fixed to handle EINTR in http://bugs.python.org/issue1068268, communicate wasn't.

It's extremely tempting to either monkey-patch subprocess.Popen.communicate to work around this, or to add a helper function.