[ovirt-users] Failed to read hardware information
Martin Polednik
mpolednik at redhat.com
Thu Oct 13 08:28:06 UTC 2016
On 13/10/16 09:01 +0300, Dan Kenigsberg wrote:
>On Thu, Oct 13, 2016 at 11:52:17AM +1100, David Pinkerton wrote:
>> Nir,
>>
>> Looks like its crashing on the dmidecode system call.
>>
>> I've attached the output from gbd as well as a dmidecode text dump,
>> dmidecode binary dump and each keywords run individually.
>>
>> >From the keywords it look like my dmi info is corrupted. I have download a
>> AMI dmi editor but this only allows access to limited fields. Do you know
>> another tools to rewrite the dmi info?
>
>I don't. But whatever is inside your dmi, dmidecode must not crash.
>Which version of python-dmidecode do you have installed?
>Would you open a bug against it?
This is really unfortunate - I've reproduced the issue with the
attached dump and it's python-dmidecode that crashes. The issue is
actually fixed upstream, but the version at least in RHEL does not
contain the fix.
RHEL version:
python-dmidecode-3.10.13-11.el7.x86_64
works with (actual upstream):
python-dmidecode-3.12.2-1.el7.x86_64
(actually it's ~6 line change in dmioem.c)
VDSM output:
# vdsClient 0 getVdsHardwareInfo
systemFamily = 'To Be Filled By O.E.M.'
systemManufacturer = 'Supermicro'
systemProductName = 'H8DM8-2'
systemSerialNumber = '1234567890'
systemUUID = '00020003-0004-0005-0006-000700080009'
systemVersion = '1234567890'
Although the upstream version of python-dmidecode is able to deal with
improper DMI tables, I can't say what else will/will not behave correctly.
mpolednik
>I believe that its maintainers would appriace a simple reproducer, that
>does not involve ovirt or Vdsm. See if you can simplify the code in
>
>def __leafDict(d):
> ret = {}
> for k, v in d.iteritems():
> if isinstance(v, dict):
> ret.update(__leafDict(v))
> else:
> ret[k] = v
> return ret
>
>
>def getAllDmidecodeInfo():
> import dmidecode
>
> myLeafDict = {}
> for k in ('system', 'bios', 'cache', 'processor', 'chassis', 'memory'):
> myLeafDict[k] = __leafDict(getattr(dmidecode, k)())
> return myLeafDict
>_______________________________________________
>Users mailing list
>Users at ovirt.org
>http://lists.ovirt.org/mailman/listinfo/users
More information about the Users
mailing list