Openbmc: IPMID core dumped on Poweron [System]

Created on 16 Mar 2017  路  7Comments  路  Source: openbmc/openbmc

root@witherspoon:~# ls /tmp/core_ipmid.852
/tmp/core_ipmid.852
root@witherspoon:~#


Feb 22 07:12:45 witherspoon ipmid[852]: Error updating inventory
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Serial Number] : Type Code=[ASCII+Latin] : Len = [16]terminate called after throwing an instance of 'std::logic_error'

Driver Info

- [x] BUILD_ID   : https://openpower.xyz/job/openbmc-build/630/
- [x] VERSION_ID : v1.99.3-93-gf0a463a
- [x] Kernel     : Linux witherspoon 4.7.10-c72ced5a19ceae19c7d792ae3e982bee5607dab4 #1 Wed Mar 15 22:22:06 UTC 2017 armv6l GNU/Linux
- [x] PNOR VERSION:
IBM-witherspoon-ibm-OP9_v1.15_1.3
        op-build-v1.15-15-gce29449
        buildroot-2017.02-4-gc28573e
        skiboot-28e96ff
        hostboot-86bae1c
        linux-4.10.1-p976d063
        petitboot-v1.4.1-p3ec3d6e
        witherspoon-xml-065aaa2
        occ-4141b5f
        hostboot-binaries-4b44090
        capp-ucode-1bb7503
bug

All 7 comments

@tomjoseph83 is looking into this.. He is aware of the failure.

Seems host is not sending the data as per the protocol.
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Serial Number] : Type Code=[ASCII+Latin] : Len = [16]terminate called after throwing an instance of 'std::logic_error'
Feb 22 07:16:21 witherspoon ipmid[852]: what(): basic_string::_M_construct null not valid
Feb 22 07:16:21 witherspoon ipmid[852]: : Val = [000000000000]

Here I can see that len is 16 bytes but host sendsthe 12 bytes of data which is causing the memory access problem.

        printf ("_append_to_dict: VPD Key = [%s] : Type Code=[ASCII+Latin]"
                " : Len = [%d] : Val = [%s]\n",
                vpd_key_names [vpd_key_id], vpd_val_len, &vpd_key_val[1]);
        info[vpd_key_id] = std::make_pair(
                               vpd_key_names[vpd_key_id],
                               std::string(vpd_key_val + 1,
                                           vpd_key_val + 1 + type_length));

Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Serial Number] : Type Code=[ASCII+Latin] : Len = [16]terminate called after throwing an instance of 'std::logic_error'
Feb 22 07:16:21 witherspoon ipmid[852]: what(): basic_string::_M_construct null not valid
Feb 22 07:16:21 witherspoon ipmid[852]: : Val = [000000000000]
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Part Number] : Type Code=[ASCII+Latin] : Len = [16] : Val = [0000000]
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [FRU File ID] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 1] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 2] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 3] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 4] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 5] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 6] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 7] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: _append_to_dict: VPD Key = [Custom Field 8] : Type Code = [BINARY] : Len = [0] : Val = []
Feb 22 07:16:21 witherspoon ipmid[852]: fru data size:[56], area offset:[8], area_size:[48]
Feb 22 07:16:21 witherspoon ipmid[852]: Successfully verified area checksum. offset:[8]
Feb 22 07:16:21 witherspoon ipmid[852]: SUCCESS: Populated FRU areas for:[/tmp/ipmifru04]

Core happened during parsing of fruid=04
Field Name = Serial Number, Expected Length = 16,Actual Data = 12 bytes long.
Field Name = PartNumber , Exptceted Length = 16,Actual Data = 7 bytes long.
This difference is causing the core.

Could be a bad pnor problem.

We need to protect ourselves against a malicious host.

Yeah, so lets use this bug to update our code to handle this error path and open a separate bug on hostboot to fix the data (https://github.com/open-power/hostboot/issues)

Was this page helpful?
0 / 5 - 0 ratings