squid: Instrução Ilegal (core dumped)

3

SO: Oracle Solaris 11.3.1.5.2, Arco da CPU: X86

Eu recentemente instalei o Squid fazendo

$ pkg install squid

Isso correu bem:

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

mas não consigo executar o Squid:

root@darwin1:~# /usr/squid/sbin/squid -h
Illegal Instruction (core dumped)

O comando file me dá isto:

root@darwin1:~# file /usr/squid/sbin/squid
/usr/squid/sbin/squid:  ELF 32-bit LSB executable 80386 Version 1, dynamically linked, not stripped

Estou dentro de uma zona local (não kernel). Não deveria importar, deveria?

Por que o despejo principal?

    
por peterh 06.07.2017 / 11:17

3 respostas

6

Desculpe, acho que encontrei a resposta: link .

(citação começar)

Illegal Instruction errors on Squid 3.4

Synopsis Squid 3.4 and later, running on certain paravirtualized systems and even some claiming full virtualization (at least KVM, Xen, and Xen derivatives are confirmed so far) crashes with an illegal instruction error soon after startup.

Symptoms

Squid crashes with Illegal Instruction error immediately after startup on a virtual machine on Intel-compatible processors

Explanation

The Squid build system uses by default the -march=native gcc option to optimize the resulting binary. Unfortunately certain (para-)virtualization systems don't support the whole instruction set they advertise. The compiler doesn't know, and generates instructions which trigger this error.

Workaround

These optimizations are helpful but not necessary to have a fully functional squid, especially on ia64/amd64 platforms. The detected defaults can be overridden by supplying the --disable-arch-native option to the configure script.

(fim da citação)

Estamos executando o Solaris dentro do VMware ESXi 6.0 . Então eu acho que essa é a razão.

Eu não vou deletar minha própria pergunta sobre a estranha chance de outra pessoa se deparar com isso também.

    
por 06.07.2017 / 11:57
2

Os clientes com contratos do Oracle Support podem obter uma versão do squid compilada com o sinalizador -march=native desativado no Solaris 11.3 SRU 17 (11.3.17.5.0) do /support repo. Isso inclui as correções para:

  • Bug 22051233 - o squid cai imediatamente no processador AMD
  • Bug 22380085 - Instrução ilegal do Squid ocorre ao executar dentro da VM
por 06.07.2017 / 18:54
0

Eu tive o mesmo problema com o Solaris 11.3. Toda vez que eu iniciaria o serviço do Squid, ele entraria no modo maintenance (você pode verificar usando svcs -a | grep squid ):

maintenance    21:17:13 svc:/network/http:squid

Nos logs ( /var/svc/log/network-http:squid.log ), eu obteria a linha de erro do preenchimento:

/lib/svc/method/http-squid: line 23: 1833: Illegal instruction(coredump)

A linha 23 é a linha no script de inicialização /lib/svc/method/http-squid onde ele tenta iniciar o Squid. O segundo número (1833 neste exemplo) parecia incremental a cada falha, mas sem significação.

No final, copiei o binário do Squid /usr/squid/sbin/squid de uma instalação antiga do Solaris 11.0 (17 MB em vez de 46 MB) e ele pareceu funcionar bem. Não é uma solução "adequada", mas certamente é fácil se você tiver acesso a uma instalação antiga!

    
por 20.10.2017 / 00:03