[ovirt-users] Failed to read hardware information

Nir Soffer nsoffer at redhat.com
Thu Oct 13 06:00:50 EDT 2016


On Thu, Oct 13, 2016 at 11:28 AM, Martin Polednik <mpolednik at redhat.com> wrote:
> 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

Can you explain how do you do that?

> 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.

Can you link to the missing 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
>
> _______________________________________________
> Users mailing list
> Users at ovirt.org
> http://lists.ovirt.org/mailman/listinfo/users


More information about the Users mailing list