Hi all,
I have a software-properties SRU [1] in bionic that has phasing stopped due to an error [2].
The stack trace is showing the following (new) code is failing:
di = distro_info.UbuntuDistroInfo()
releases = di.get_all(result="object")
releases = di.get_all(result="object")
with the error:
AttributeError: 'UbuntuDistroInfo' object has no attribute 'get_all'
This is very confusing, since the code from this (from the distro-info library) is essentially:
class DistroInfo:
def get_all(self, result="codename"):
...
class UbuntuDistroInfo(DistroInfo):
def __init__(self):
super().__init__("Ubuntu")
def __init__(self):
super().__init__("Ubuntu")
i.e. I can't see any reason why the `di` object would not have a get_all() method. Running software-properties and various test scripts on a bionic VM I haven't been able to reproduce any such issues.
Theories that have been proposed:
- The user is actually running an older version of disto-info that was from before this method was added (in distro-info 0.15).
- Seems unlikely since there are error cases in which the install was done with a bionic image.
- The user has a locally installed version of distro-info.
- Stacktraces shows the system installed version, the appropriate version of the binary installed, no PYTHONPATH set.
- A .pyc is being used that doesn't match the source.
- Since installs have been from bionic media, it seems impossible that an older .pyc could be created.
- Other code has removed this method.
- Method is being accessed immediately, no other code seen in source that could do this.
- Memory corruption.
- Too many cases for error to be random, not seeing other similar issues.
Does anyone have any ideas about what might be going on?
--Robert