viernes, 18 de septiembre de 2009

SMF troubleshooting Solaris 10

- Verificar el estado del servicio
        # svcs -a |egrep "maintenance"
                maintenance    10:04:33 svc:/application/font/fc-cache:default

        # svcs -l svc:/application/font/fc-cache:default
                fmri         svc:/application/font/fc-cache:default
                name         FontConfig Cache Builder
                enabled      true
                state        maintenance
                next_state   none
                state_time   Wed Aug 16 10:04:33 2006
                logfile      /var/svc/log/application-font-fc-cache:default.log
                restarter    svc:/system/svc/restarter:default
                dependency   require_all/none svc:/system/filesystem/local (online)
                dependency   require_all/refresh file://localhost/etc/fonts/fonts.conf (online)
                dependency   require_all/none file://localhost/usr/bin/fc-cache (online)

        # cat /var/svc/log/application-font-fc-cache:default.log
                [ May 27 02:12:25 Leaving maintenance because disable requested. ]
                [ May 27 02:12:26 Disabled. ]
                [ May 27 03:21:55 Executing start method ("/usr/bin/fc-cache") ]
                [ May 27 03:21:56 Method "start" failed due to signal ILL ]
                [ May 27 03:21:56 Executing start method ("/usr/bin/fc-cache") ]
                [ May 27 03:21:57 Method "start" failed due to signal ILL ]
                [ May 27 03:21:57 Executing start method ("/usr/bin/fc-cache") ]
                [ May 27 03:21:57 Method "start" failed due to signal ILL ]
                [ Aug 16 12:04:24 Leaving maintenance because disable requested. ]
                [ Aug 16 12:04:24 Disabled. ]
                [ Aug 16 12:04:32 Enabled. ]
                [ Aug 16 12:04:33 Executing start method ("/usr/bin/fc-cache") ]
                [ Aug 16 12:04:33 Method "start" failed due to signal ILL ]

- Verificar el XML de arranue para el servicio fc-cache
        # svccfg export fc-cache
                <?xml version='1.0'?>
                <!DOCTYPE service_bundle SYSTEM '/usr/share/lib/xml/dtd/service_bundle.dtd.1'>
                <service_bundle type='manifest' name='export'>
                  <service name='application/font/fc-cache' type='service' version='0'>
                    <create_default_instance enabled='true'/>
                    <single_instance/>
                    <dependency name='usr' grouping='require_all' restart_on='none' type='service'>
                      <service_fmri value='svc:/system/filesystem/local'/>
                    </dependency>
                    <dependency name='config-file' grouping='require_all' restart_on='refresh' type='path'>
                      <service_fmri value='file://localhost/etc/fonts/fonts.conf'/>
                    </dependency>
                    <dependency name='fc-cache' grouping='require_all' restart_on='none' type='path'>
                      <service_fmri value='file://localhost/usr/bin/fc-cache'/>
                    </dependency>
                    <exec_method name='start' type='method' exec='/usr/bin/fc-cache' timeout_seconds='3600'>
                      <method_context>
                        <method_credential user='root' group='root'/>
                      </method_context>
                    </exec_method>
                    <property_group name='general' type='framework'>
                      <propval name='action_authorization' type='astring' value='solaris.smf.manage.font'/>
                    </property_group>
                    <property_group name='startd' type='framework'>
                      <propval name='duration' type='astring' value='transient'/>
                    </property_group>
                    <stability value='Evolving'/>
                    <template>
                      <common_name>
                        <loctext xml:lang='C'>FontConfig Cache Builder</loctext>
                      </common_name>
                      <documentation>
                        <manpage title='fc-cache' section='1M' manpath='/usr/share/man'/>
                      </documentation>
                    </template>
                  </service>
                </service_bundle>

NOTA: Del metodo START rescatamos la manera de arrancar el servicio "/usr/bin/fc-cache" man fc-cache para ver que hacen las opciones (f, v)

- Intentar iniciar el servicio manualmente
        # truss -f fc-cache -f -v
                16071:  execve("/usr/bin/fc-cache", 0xFFBFFBF4, 0xFFBFFC04)  argc = 3
                16071:  resolvepath("/usr/lib/ld.so.1", "/lib/ld.so.1", 1023) = 12
                16071:  resolvepath("/usr/bin/fc-cache", "/usr/bin/fc-cache", 1023) = 17
                16071:  stat("/usr/bin/fc-cache", 0xFFBFF9D0)           = 0
                16071:  open("/var/ld/ld.config", O_RDONLY)             Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libfontconfig.so.1", 0xFFBFF4F0) Err#2 ENOENT
                16071:  stat("/usr/sfw/lib/libfontconfig.so.1", 0xFFBFF4F0) Err#2 ENOENT
                16071:  stat("/lib/libfontconfig.so.1", 0xFFBFF4F0)     Err#2 ENOENT
                16071:  stat("/usr/lib/libfontconfig.so.1", 0xFFBFF4F0) = 0
                16071:  resolvepath("/usr/lib/libfontconfig.so.1", "/usr/lib/libfontconfig.so.1", 1023) = 27
                16071:  open("/usr/lib/libfontconfig.so.1", O_RDONLY)   = 3
                16071:  mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF3A0000
                16071:  mmap(0x00010000, 294912, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF350000
                16071:  mmap(0xFF350000, 208114, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF350000
                16071:  mmap(0xFF392000, 20152, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 204800) = 0xFF392000
                16071:  munmap(0xFF384000, 57344)                       = 0
                16071:  memcntl(0xFF350000, 40048, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
                16071:  close(3)                                        = 0
                16071:  stat("/usr/openwin/lib/libfreetype.so.6", 0xFFBFF4F0) Err#2 ENOENT
                16071:  stat("/usr/sfw/lib/libfreetype.so.6", 0xFFBFF4F0) = 0
                16071:  resolvepath("/usr/sfw/lib/libfreetype.so.6", "/usr/sfw/lib/libfreetype.so.6", 1023) = 29
                16071:  open("/usr/sfw/lib/libfreetype.so.6", O_RDONLY) = 3
                16071:  mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000
                16071:  mmap(0x00010000, 720896, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF280000
                16071:  mmap(0xFF280000, 619289, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF280000
                16071:  mmap(0xFF326000, 36599, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 614400) = 0xFF326000
                16071:  munmap(0xFF318000, 57344)                       = 0
                16071:  memcntl(0xFF280000, 80724, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
                16071:  close(3)                                        = 0
                16071:  stat("/usr/openwin/lib/libz.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  stat("/usr/sfw/lib/libz.so.1", 0xFFBFF4F0)      Err#2 ENOENT
                16071:  stat("/lib/libz.so.1", 0xFFBFF4F0)              Err#2 ENOENT
                16071:  stat("/usr/lib/libz.so.1", 0xFFBFF4F0)          = 0
                16071:  resolvepath("/usr/lib/libz.so.1", "/usr/lib/libz.so.1", 1023) = 18
                16071:  open("/usr/lib/libz.so.1", O_RDONLY)            = 3
                16071:  mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000
                16071:  mmap(0x00010000, 122880, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF250000
                16071:  mmap(0xFF250000, 46234, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF250000
                16071:  mmap(0xFF26A000, 11460, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 40960) = 0xFF26A000
                16071:  munmap(0xFF25C000, 57344)                       = 0
                16071:  memcntl(0xFF250000, 4164, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
                16071:  close(3)                                        = 0
                16071:  stat("/usr/openwin/lib/libexpat.so.0", 0xFFBFF4F0) Err#2 ENOENT
                16071:  stat("/usr/sfw/lib/libexpat.so.0", 0xFFBFF4F0)  = 0
                16071:  resolvepath("/usr/sfw/lib/libexpat.so.0", "/usr/sfw/lib/libexpat.so.0.5.0", 1023) = 30
                16071:  mmap(0x00000000, 8192, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON, -1, 0) = 0xFF340000
                16071:  open("/usr/sfw/lib/libexpat.so.0", O_RDONLY)    = 3
                16071:  mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000
                16071:  mmap(0x00010000, 344064, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1F0000
                16071:  mmap(0xFF1F0000, 265082, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF1F0000
                16071:  mmap(0xFF240000, 9380, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 262144) = 0xFF240000
                16071:  munmap(0xFF232000, 57344)                       = 0
                16071:  memcntl(0xFF1F0000, 36064, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
                16071:  close(3)                                        = 0
                16071:  stat("/usr/openwin/lib/libc.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  stat("/usr/sfw/lib/libc.so.1", 0xFFBFF4F0)      Err#2 ENOENT
                16071:  stat("/lib/libc.so.1", 0xFFBFF4F0)              = 0
                16071:  resolvepath("/lib/libc.so.1", "/lib/libc.so.1", 1023) = 14
                16071:  open("/lib/libc.so.1", O_RDONLY)                = 3
                16071:  mmap(0xFF3A0000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED, 3, 0) = 0xFF3A0000
                16071:  mmap(0x00010000, 991232, PROT_NONE, MAP_PRIVATE|MAP_NORESERVE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF080000
                16071:  mmap(0xFF080000, 881573, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_TEXT, 3, 0) = 0xFF080000
                16071:  mmap(0xFF168000, 29469, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_INITDATA, 3, 884736) = 0xFF168000
                16071:  mmap(0xFF170000, 2592, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_FIXED|MAP_ANON, -1, 0) = 0xFF170000
                16071:  munmap(0xFF158000, 65536)                       = 0
                16071:  memcntl(0xFF080000, 139692, MC_ADVISE, MADV_WILLNEED, 0, 0) = 0
                16071:  close(3)                                        = 0
                16071:  stat("/usr/openwin/lib/libfreetype.so.6", 0xFFBFF4F0) Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libz.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  stat("/usr/sfw/lib/libz.so.1", 0xFFBFF4F0)      Err#2 ENOENT
                16071:  stat("/lib/libz.so.1", 0xFFBFF4F0)              Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libexpat.so.0", 0xFFBFF4F0) Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libc.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  stat("/usr/sfw/lib/libc.so.1", 0xFFBFF4F0)      Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libz.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  stat("/lib/libz.so.1", 0xFFBFF4F0)              Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libc.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libc.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  stat("/usr/openwin/lib/libc.so.1", 0xFFBFF4F0)  Err#2 ENOENT
                16071:  munmap(0xFF3A0000, 8192)                        = 0
                16071:  mmap(0x00010000, 24576, PROT_READ|PROT_WRITE|PROT_EXEC, MAP_PRIVATE|MAP_ANON|MAP_ALIGN, -1, 0) = 0xFF1E0000
                16071:  getcontext(0xFFBFF6C8)
                16071:  getrlimit(RLIMIT_STACK, 0xFFBFF6A8)             = 0
                16071:  getpid()                                        = 16071 [16059]
                16071:  setustack(0xFF1E2088)
                16071:  brk(0x00030150)                                 = 0
                16071:  brk(0x00032150)                                 = 0
                16071:  time()                                          = 1155724269
                16071:  stat("/platform/SUNW,Sun-Fire-15000/lib/libc_psr.so.1", 0xFFBFF250) = 0
                16071: resolvepath("/platform/SUNW,Sun-Fire-15000/lib/libc_psr.so.1", "/platform/sun4u-us3/lib/libc_psr.so.1", 1023) = 37
                16071:  open("/platform/SUNW,Sun-Fire-15000/lib/libc_psr.so.1", O_RDONLY) = 3
                16071:  mmap(0x00010000, 8192, PROT_READ|PROT_EXEC, MAP_PRIVATE|MAP_ALIGN, 3, 0) = 0xFF3A0000
                16071:  close(3)                                        = 0
                16071:  access("/etc/fonts/fonts.conf", R_OK)           = 0
                16071:  open("/etc/fonts/fonts.conf", O_RDONLY)         = 3
                16071:  brk(0x00032150)                                 = 0
                16071:  brk(0x00034150)                                 = 0
                16071:  fstat64(3, 0xFFBFF748)                          = 0
                16071:  brk(0x00034150)                                 = 0
                16071:  brk(0x00036150)                                 = 0
                16071:  fstat64(3, 0xFFBFF5F0)                          = 0
                16071:  ioctl(3, TCGETA, 0xFFBFF6D4)                    Err#25 ENOTTY
                16071:  read(3, " < ? x m l   v e r s i o".., 8192)     = 8192
                16071:  brk(0x00036150)                                 = 0
                16071:  brk(0x00038150)                                 = 0
                16071:  brk(0x00038150)                                 = 0
                16071:  brk(0x0003A150)                                 = 0
                16071:      Incurred fault #1, FLTILL  %pc = 0xFF378070
                16071:        siginfo: SIGILL ILL_ILLOPC addr=0xFF378070
                16071:      Received signal #4, SIGILL [default]
                16071:        siginfo: SIGILL ILL_ILLOPC addr=0xFF378070

- Verificar en que paquetes de instalacion esta el binario
        # grep fc-cache /var/sadm/install/contents
                /usr/bin/fc-cache f none 0755 root bin 22848 33575 1106442938 SUNWfontconfig
                /usr/share/man/man1/fc-cache.1 f none 0444 root bin 2818 38724 1103170401 SUNWfontconfig-docs
                /var/svc/manifest/application/font/fc-cache.xml f manifest 0444 root sys 1914 27439 1112898868 SUNWfontconfig-root

- Verificar el / los paquetes de instalacion
        # pkgchk SUNWfontconfig
                ERROR: /usr/lib/libfontconfig.so.1
                  file cksum <23257> expected <22647> actual

- Verificar si existe corrupcion en el binario mediante MD5

        - Ejemplo con corrupcion de binario:

        # digest -a md5 /usr/lib/libfontconfig.so.1
                8b48394ea6b905892d611c80421b0c74

                Results of Last Search

                8b48394ea6b905892d611c80421b0c74 - - 0 match(es)
                    Not found in this database.

        - Ejemplo sin corrupcion de binario:

        # digest -a md5 /usr/lib/libfontconfig.so.1
        0bbdd5e502292616707ccea25ff4e2b8

                # Comprobar el resultado en
http://sunsolve.sun.com/pub-cgi/fileFingerprints.pl
                        Results of Last Search

                        0bbdd5e502292616707ccea25ff4e2b8 - - 1 match(es)

                                * canonical-path: /usr/lib/libfontconfig.so.1
                                * package: SUNWfontconfig
                                * version: 6.6.2.7400,REV=0.2004.12.15
                                * architecture: sparc
                                * source: Solaris 10/SPARC

- Verificar el nivel de parcheo para el paquete en cuestion
        # showrev -p|grep SUNWfontconfig
        Patch: 119065-01 Obsoletes:  Requires:  Incompatibles:  Packages: SUNWfontconfig-root

- Detener el servicio
        # svcadm disable svc:/application/font/fc-cache:default

- Remplazo del binario corrupto por el de otro equipo con las mismas caracteristicas y nivel de parcheo
        # scp root@HOSTOK:/usr/lib/libfontconfig.so.1 root@HOSTBAD:/usr/lib/libfontconfig.so.1

- Verificar el checksum
        # digest -a md5 /usr/lib/libfontconfig.so.1
        0bbdd5e502292616707ccea25ff4e2b8

- Arrancar el servicio y verificar su funcionamiento
        # svcadm enable svc:/application/font/fc-cache:default
        # svcs -a |egrep "fc-cache"
        online         13:18:24 svc:/application/font/fc-cache:default

Mariano Obarrio

No hay comentarios: