.png)
SO: Oracle Solaris 11.3.1.5.2, Arco de CPU: X86
Recientemente instalé Squid haciendo
$ pkg install squid
Esto salió bien:
root@darwin1:~# pkg info squid
Name: web/proxy/squid
Summary: Squid Web Proxy Cache
Description: Squid is a caching proxy for the Web supporting HTTP, HTTPS,
FTP, and more.
Category: Web Services/Application and Web Servers
State: Installed
Publisher: solaris
Version: 3.5.5
Build Release: 5.11
Branch: 0.175.3.0.0.30.0
Packaging Date: Fri Aug 21 17:30:06 2015
Size: 51.84 MB
FMRI: pkg://solaris/web/proxy/[email protected],5.11-0.175.3.0.0.30.0:20150821T173006Z
pero no puedo ejecutar Squid:
root@darwin1:~# /usr/squid/sbin/squid -h
Illegal Instruction (core dumped)
El file
comando me da esto:
root@darwin1:~# file /usr/squid/sbin/squid
/usr/squid/sbin/squid: ELF 32-bit LSB executable 80386 Version 1, dynamically linked, not stripped
Estoy dentro de una zona local (no del núcleo). No debería importar, ¿verdad?
¿Por qué el volcado de memoria?
Respuesta1
Lo siento, creo que encontré la respuesta yo mismo:http://wiki.squid-cache.org/KnowledgeBase/IllegalInstructionError.
(comienza la cita)
Errores de instrucciones ilegales en Squid 3.4
Sinopsis Squid 3.4 y posteriores, ejecutándose en ciertossistemas paravirtualizadose incluso algunos afirman que la virtualización completa (al menos KVM, Xen y derivados de Xen están confirmados hasta ahora) falla con un error de instrucción ilegal poco después del inicio.
Síntomas
Squid se bloquea con un error de instrucción ilegal inmediatamente después del inicio en una máquina virtual en procesadores compatibles con Intel
Explicación
El sistema de compilación Squid utiliza de forma predeterminada la
-march=native
opción gcc para optimizar el binario resultante. Lamentablemente, ciertos sistemas de (para)virtualización no admiten todo el conjunto de instrucciones que anuncian. El compilador no lo sabe y genera instrucciones que desencadenan este error.Solución alterna
Estas optimizaciones son útiles pero no necesarias para tener un Squid completamente funcional, especialmente en plataformas ia64/amd64. Los valores predeterminados detectados se pueden anular proporcionando la
--disable-arch-native
opción al script de configuración.
(fin de la cita)
Estamos ejecutando Solarisdentro de VMware ESXi 6.0. Entonces supongo que esa es la razón.
No eliminaré mi propia pregunta por la extraña posibilidad de que alguien más se encuentre con esto también.
Respuesta2
Los clientes con contratos de soporte de Oracle pueden obtener una versión de squid compilada con el -march=native
indicador deshabilitado en Solaris 11.3 SRU 17 (11.3.17.5.0) desde el /support
repositorio. Esto incluye las correcciones para:
- Error 22051233: el calamar se cae inmediatamente en el procesador AMD
- Error 22380085: la instrucción Squid Ilegal ocurre cuando se ejecuta dentro de VM
Respuesta3
Tuve el mismo problema con Solaris 11.3. Cada vez que iniciaba el servicio Squid, entraba en maintenance
modo (puedes comprobarlo usando svcs -a | grep squid
):
maintenance 21:17:13 svc:/network/http:squid
En los registros ( /var/svc/log/network-http:squid.log
) obtendría la línea de error de coredump:
/lib/svc/method/http-squid: line 23: 1833: Illegal instruction(coredump)
La línea 23 es la línea del script de inicio /lib/svc/method/http-squid
donde intenta iniciar Squid. El segundo número (1833 en este ejemplo) parecía incremental con cada falla, pero carecía de significado.
Al final, copié el binario Squid /usr/squid/sbin/squid
de una instalación antigua de Solaris 11.0 (17 MB en lugar de 46 MB) y pareció funcionar bien. No es una solución "adecuada", pero ciertamente es fácil si tiene acceso a una instalación anterior.