Xserver is Core Dumping When the xinit Command is Run


Environment

OS Level: AIX Version 4.1.5
Type/Model: 7043

Problem

Xwindows will not come up after reboot. When the xinit command is used to bring up the X Server on the console, it core dumps with the following:
Segmentation fault in strcmp.strcmp [/usr/lib/libgair4.a] at 0xd01ccc68 
0xd01ccc68 (strcmp+0xcc) 88a30001        lbz   r5,0x1(r3)               
(dbx) where                                                             
strcmp.strcmp() at 0xd01ccc68                                           
CreateAdapter(??, ??, ??, ??) at 0xd01cc5d8                             
hgaScreenInit(??, ??, ??, ??) at 0xd01c18cc                             
AddScreen(??, ??, ??) at 0x10000670                                     
hga_ddxInit(??, ??, ??, ??) at 0xd01c11a4                               
aixAddDisplay(??, ??, ??, ??) at 0x10092ce0                             
InitOutput(??, ??, ??) at 0x10091e74                                    
main(??, ??) at 0x10000c54 

Solution

This is a known problem between the GXT120p graphics adapter and the homestead adapter. Both of these adapters use the same adapter identification number but have different device drivers. When X attempts to initialize, the incorrect device driver is used causing X to core dump.

Following is a series of steps to check and remove the reference to the homestead adapter in the Object Data Manager (ODM).

WARNING: Editing the ODM database is not supported by IBM. This procedure, if not used carefully, can cause ODM corruption. Use it only if you are fully knowledgeable about the ODM.

  1. Create and run the checkit script
    1. Copy the following script to a file called checkit
      #
      echo  "*********************system ODM****************************"
      export ODMDIR=/etc/objrepos
      odmget -q "uniquetype = adapter/pci/hga" PdAt
      odmget -q "type=hga" PdDv
      #
      echo  "*********************user ODM****************************"
      export ODMDIR=/usr/lib/objrepos
      #
      odmget -q "lpp_name = devices.pci.3353b088.rte" product
      odmget -q "lpp_name = devices.pci.3353b088.X11" product
      #
      odmget -q "name = devices.pci.3353b088.X11" lpp
      odmget -q "name = devices.pci.3353b088.rte" lpp
      #
      odmget -q "loc0 = 
      /usr/lib/boot/protoext/tape.proto.ext.pci.3353b088.rte"  inventory
      odmget -q "loc0 = /usr/lib/drivers/pci/hgadd"  inventory
      odmget -q "loc0 = /usr/lib/drivers/pci/hgadd_pin"  inventory
      odmget -q "loc0 = /usr/lpp/gai/pci3353b088/loadddx"  inventory
      odmget -q "loc0 = /usr/lpp/gai/pci3353b088"  inventory
      odmget -q "loc0 = /usr/lib/methods/cfg_hga"  inventory
      #
      odmget -q "Adapter_Id = 0x43d0000" GAI
      export ODMDIR=/etc/objrepos
      echo  "*********************files****************************"
      ls -ld  /usr/lpp/gai/pci3353b088
      ls -ld  /usr/lpp/devices.pci.3353b088
      ls -l /usr/lib/drivers/pci/hgadd
      ls -l /usr/lib/drivers/pci/hgadd_pin
      ls -l /usr/lib/methods/cfg_hga
      ls -l /usr/lib/boot/protoext/tape.proto.ext.pci.3353b088.rte
      
    2. Run checkit and redirect the output to a file. For example:
      checkit > checkit.output
      
  2. Verify that an ID conflict exists by viewing checkit.output.

    Under the *****files***** heading in checkit.output, if the output states that a file does not exist then there is no ID conflict and you should not continue. The problem you are experiencing will not be resolved with this procedure. Contact your AIX Support Center for assistance.

    For example:

    *********************files****************************
    ls: 0653-341 The file /usr/lpp/gai/pci3353b088 does not exist.
    ls: 0653-341 The file /usr/lpp/devices.pci.3353b088 does not exist.
    ls: 0653-341 The file /usr/lib/drivers/pci/hgadd does not exist.
    ls: 0653-341 The file /usr/lib/drivers/pci/hgadd_pin does not exist.
    ls: 0653-341 The file /usr/lib/boot/protoext/tape.proto.ext.pci.3353b088.rte does not exist.
    
    If any one file is listed as does exist then an ID conflict does exist and you should proceed to step 3.

  3. Create and run the removeit script
    1. Copy the following script to a file called removeit. This script is used to remove the homestead adapter.
      #!/bin/ksh
      # remove all references to homestead from the system ODM database
      #
      odmdelete -o PdAt -q "uniquetype=adapter/pci/hga"
      odmdelete -o PdDv -q"type=hga"
      #
      # switch to the user ODM database
      export ODMDIR=/usr/lib/objrepos
      #
      # now clean out the user ODM database also removing
      # the sagebrush information
      #
      odmdelete -q "lpp_name = devices.pci.3353b088.rte" -o product
      odmdelete -q "lpp_name = devices.pci.3353b088.X11" -o product
      #
      odmdelete -q "name = devices.pci.3353b088.X11" -o lpp
      odmdelete -q "name = devices.pci.3353b088.rte" -o lpp
      #
      odmdelete -q "loc0 =
      /usr/lib/boot/protoext/tape.proto.ext.pci.3353b088.rte" -o inventory
      odmdelete -q "loc0 = /usr/lib/drivers/pci/hgadd" -o inventory
      odmdelete -q "loc0 = /usr/lib/drivers/pci/hgadd_pin" -o inventory
      odmdelete -q "loc0 = /usr/lpp/gai/pci3353b088/loadddx" -o inventory
      odmdelete -q "loc0 = /usr/lpp/gai/pci3353b088" -o inventory
      odmdelete -q "loc0 = /usr/lib/methods/cfg_hga" -o inventory
      #
      odmdelete -q "Adapter_Id = 0x43d0000"  -o GAI
      # now put the sagebrush info back
      odmadd <<- EOT
      GAI:
      Adapter_Id      = 0x43d0000
      Module_Key      = "rms"
      Module_Path     = "NORMS"
      Processor_Id    = 0
                                                                              
      GAI:
      Adapter_Id      = 0x43d0000
      Module_Key      = "ddx"
      Module_Path     = "pci2b101a05/loadddx"
      Processor_Id    = 0
                                                                              
      GAI:
      Adapter_Id      = 0x43d0000
      Module_Key      = "ddx"
      Module_Path     = "pci2b101a05/loadddx"
      Processor_Id    = 0
                                                                              
      GAI:
      Adapter_Id      = 0x43d0000
      Module_Key      = "0x400"
      Module_Path     = "loadAncSoft"
      Processor_Id    = 0
      EOT
      # point back at the system ODM database
      export ODMDIR=/etc/objrepos
      #*************************************************************
      # remove all the related files too
      #
      rm -rf /usr/lpp/gai/pci3353b088
      rm -rf /usr/lpp/devices.pci.3353b088
      rm /usr/lib/drivers/pci/hgadd
      rm /usr/lib/drivers/pci/hgadd_pin
      rm /usr/lib/methods/cfg_hga
      rm /usr/lib/boot/protoext/tape.proto.ext.pci.3353b088.rte
      
    2. Run removeit and redirect the output to file. For example:
      removeit > removeit.output
      
  4. View the removeit.output file to check that the references to the homestead adapter have been removed from the ODM.

  5. Reboot the machine.



[ Doc Ref: 93457512211544     Publish Date: Jan. 30, 2001]