Blog

Segmentation fault en CUPS

Segmentation fault en CUPS

Tras instalar CUPS (2:2.4.11-2) y hp-lip, no podía imprimir. Veía esto en journal:

Jan 16 17:45:17 arai.home.arpa systemd-coredump[52934]: [🡕] Process 52913 (cups-deviced) of user 0 dumped core.
                                                        
                                                        Stack trace of thread 52913:
                                                        #0  0x00005d13fff4651a n/a (cups-deviced + 0x251a)
                                                        #1  0x0000741bc1025e08 n/a (libc.so.6 + 0x25e08)
                                                        #2  0x0000741bc1025ecc __libc_start_main (libc.so.6 + 0x25ecc)
                                                        #3  0x00005d13fff47365 n/a (cups-deviced + 0x3365)
                                                        ELF object binary architecture: AMD x86-64

Encontré este post que comentaba que había solventado el problema cambiando el ID de usuario y grupo de CUPS a 209. Examinando el coredump con uno de los comandos que muestra el post:

j@arai ~ % coredumpctl info cups-exec
[...]
           PID: 12461 (cups-exec)
           UID: 0 (root)
           GID: 209 (cups)
        Signal: 11 (SEGV)
     Timestamp: Thu 2025-01-16 19:04:25 CET (16h ago)
  Command Line: /usr/lib/cups/daemon/cups-exec -g 209 -n 0 -u 209 none /usr/lib/cups/filter/universal Photosmart_C4380 16 j tmpnqvzw52t 1 $'finishings=3 number-up=1 print-color-mode=color job-uuid=urn:uuid:c6701993-8346-34ef-7a29-32aa6bc32c4d job-originating-host-name=localhost date-time-at-creation= date-time-at-processing= time-at-creation=1737050665 time-at-processing=1737050665 document-name-supplied=tmpnqvzw52t' /var/spool/cups/d00016-001
    Executable: /usr/lib/cups/daemon/cups-exec
 Control Group: /system.slice/system-cups.slice/cups.service
          Unit: cups.service
         Slice: system-cups.slice
       Boot ID: 167934fd503c4837803ae35b0a8e7624
    Machine ID: c3be3d622db0473f848133f70c16fd3e
      Hostname: arai.home.arpa
       Storage: /var/lib/systemd/coredump/core.cups-exec.0.167934fd503c4837803ae35b0a8e7624.12461.1737050665000000.zst (inaccessible)
       Message: Process 12461 (cups-exec) of user 0 dumped core.
                
                Stack trace of thread 12461:
                #0  0x0000621e7f5d218f n/a (n/a + 0x0)
                #1  0x0000763853a03e08 n/a (libc.so.6 + 0x25e08)
                #2  0x0000763853a03ecc __libc_start_main (libc.so.6 + 0x25ecc)
                #3  0x0000621e7f5d2325 n/a (n/a + 0x0)
                ELF object binary architecture: AMD x86-64

Efectivament, en la línea «Command Line» de arriba vemos que cups-exec está intentando usar ese ID con -g 209 y -u 209.

Como le ocurría al autor del post, mis IDs eran diferentes:

j@arai ~ % grep cups /etc/group  
[...]
cups:x:964:

j@arai ~ % grep cups /etc/passwd
[...]
cups:x:964:964::/:/usr/bin/nologin

Los cambié a 209 con:

j@arai ~ % sudo groupmod -g 209 cups 
j@arai ~ % sudo usermod -u 209 cups

Tras reiniciar cups con systemctl restart cups ya funcionaba.