Probert crashes with "oundLocalError: local variable 'ifindex' referenced before assignment"

Bug #1634430 reported by Simon Fels
6
This bug affects 1 person
Affects Status Importance Assigned to Milestone
probert (Ubuntu)
Fix Released
Critical
Scott Sweeny

Bug Description

Probert currently crashes with the following:

2016-10-18 08:14:56,241 subiquitycore.core:159 Exception in controller.run():
Traceback (most recent call last):
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 376, in _run
    self.event_loop.run()
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 1015, in run
    raise exc
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 1002, in wrapper
    return func(*args, **kw)
  File "/usr/lib/python3/dist-packages/urwid/raw_display.py", line 393, in <lambda>
    event_loop, callback, self.get_available_raw_input())
  File "/usr/lib/python3/dist-packages/urwid/raw_display.py", line 493, in parse_input
    callback(processed, processed_codes)
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 403, in _update
    self.process_input(keys)
  File "/usr/lib/python3/dist-packages/urwid/main_loop.py", line 503, in process_input
    k = self._topmost_widget.keypress(self.screen_size, k)
  File "/usr/share/subiquity/subiquitycore/ui/frame.py", line 38, in keypress
    return super().keypress(size, key)
  File "/usr/lib/python3/dist-packages/urwid/container.py", line 1128, in keypress
    return self.body.keypress( (maxcol, remaining), key )
  File "/usr/share/subiquity/subiquitycore/view.py", line 32, in keypress
    return super().keypress(size, key)
  File "/usr/lib/python3/dist-packages/urwid/listbox.py", line 985, in keypress
    key = focus_widget.keypress((maxcol,),key)
  File "/usr/lib/python3/dist-packages/urwid/decoration.py", line 621, in keypress
    return self._original_widget.keypress(maxvals, key)
  File "/usr/lib/python3/dist-packages/urwid/container.py", line 1587, in keypress
    key = self.focus.keypress(tsize, key)
  File "/usr/lib/python3/dist-packages/urwid/wimp.py", line 535, in keypress
    self._emit('click')
  File "/usr/lib/python3/dist-packages/urwid/widget.py", line 463, in _emit
    signals.emit_signal(self, name, self, *args)
  File "/usr/lib/python3/dist-packages/urwid/signals.py", line 264, in emit
    result |= self._call_callback(callback, user_arg, user_args, args)
  File "/usr/lib/python3/dist-packages/urwid/signals.py", line 294, in _call_callback
    return bool(callback(*args_to_pass))
  File "/usr/share/subiquity/console_conf/ui/views/welcome.py", line 39, in confirm
    self.signal.emit_signal('welcome:done')
  File "/usr/share/subiquity/subiquitycore/signals.py", line 88, in emit_signal
    urwid.emit_signal(self, name, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/urwid/signals.py", line 264, in emit
    result |= self._call_callback(callback, user_arg, user_args, args)
  File "/usr/lib/python3/dist-packages/urwid/signals.py", line 294, in _call_callback
    return bool(callback(*args_to_pass))
  File "/usr/share/subiquity/subiquitycore/controllers/welcome.py", line 43, in done
    self.signal.emit_signal('next-screen')
  File "/usr/share/subiquity/subiquitycore/signals.py", line 88, in emit_signal
    urwid.emit_signal(self, name, *args, **kwargs)
  File "/usr/lib/python3/dist-packages/urwid/signals.py", line 264, in emit
    result |= self._call_callback(callback, user_arg, user_args, args)
  File "/usr/lib/python3/dist-packages/urwid/signals.py", line 294, in _call_callback
    return bool(callback(*args_to_pass))
  File "/usr/share/subiquity/subiquitycore/core.py", line 93, in next_screen
    next_controller.default()
  File "/usr/share/subiquity/subiquitycore/controllers/network.py", line 206, in default
    self.model.probe_network()
  File "/usr/share/subiquity/subiquitycore/models/network.py", line 331, in probe_network
    self.prober.probe()
  File "/usr/share/subiquity/subiquitycore/prober.py", line 58, in probe
    results = network.probe()
  File "/usr/lib/python3/dist-packages/probert/network.py", line 593, in probe
    sources[netifaces.AF_INET].append(self._get_ip_source(iface, ip[netifaces.AF_INET][i]))
  File "/usr/lib/python3/dist-packages/probert/network.py", line 528, in _get_ip_source
    dhcp = self._get_dhcp(ifname)
  File "/usr/lib/python3/dist-packages/probert/network.py", line 496, in _get_dhcp
    lease = self._get_dhcp_lease(ifname)
  File "/usr/lib/python3/dist-packages/probert/network.py", line 482, in _get_dhcp_lease
    for lease in self._get_dhcp_leases():
  File "/usr/lib/python3/dist-packages/probert/network.py", line 450, in _get_dhcp_leases
    nm_lease["interface"] = socket.if_indextoname(int(ifindex))
UnboundLocalError: local variable 'ifindex' referenced before assignment

This is with network-manager taking control over the whole network management rather than networkd.

Steps to reproduce:

1. Enter console-conf
2. Configure DHCP for ethernet and hit the done button
3. Once network is configured and you're on the sign-on page hit the "cancel" button which takes you back into the terminal where you have to hit enter to start console-conf again.
4. Hit enter and see console-conf crashing

Revision history for this message
Simon Fels (morphis) wrote :
Simon Fels (morphis)
description: updated
Revision history for this message
Simon Fels (morphis) wrote :
Changed in probert (Ubuntu):
assignee: nobody → Scott Sweeny (ssweeny)
importance: Undecided → Critical
status: New → In Progress
Revision history for this message
Scott Sweeny (ssweeny) wrote :

PR has been merged.

Changed in probert (Ubuntu):
status: In Progress → Fix Committed
Revision history for this message
Simon Fels (morphis) wrote :
Revision history for this message
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package probert - 0.0.12

---------------
probert (0.0.12) zesty; urgency=medium

  * Replace network probing with netlink-based version.

 -- Michael Hudson-Doyle <email address hidden> Fri, 04 Nov 2016 13:42:17 +1300

Changed in probert (Ubuntu):
status: Fix Committed → Fix Released
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.