După investigații suplimentare, am găsit kernel.core_pattern a fost suprascris de către pachet apport la pornirea sistemului.
Ar fi trebuit să mă gândesc să verific apport când am văzut șirul „/usr/share/apport/apport”. Nu eram sigur dacă apport a fost de fapt cel care suprascrie kernel.core_pattern, așa că am decis să arunc o privire la codul sursă.
Prin alergare politica apt-cache apport, am descoperit că versiunea pe care o foloseam era 2.20.9-0ubuntu7.24:
vagrant@ubuntu-bionic:~$ apt-cache policy apport
aport:
  Instalat: 2.20.9-0ubuntu7.24
  Candidat: 2.20.9-0ubuntu7.24
  Tabel de versiuni:
 *** 2.20.9-0ubuntu7.24 500
        500 http://archive.ubuntu.com/ubuntu bionic-updates/main pachete amd64
        500 http://security.ubuntu.com/ubuntu bionic-security/main pachete amd64
        100 /var/lib/dpkg/status
     2.20.9-0ubuntu7 500
        500 http://archive.ubuntu.com/ubuntu bionic/main Pachete amd64
vagrant@ubuntu-bionic:~$
Apoi apportlui Pagina LaunchPad, am găsit link-ul de descărcare: apport_2.20.9-0ubuntu7.tar.gz.
Căutând în codul sursă, am găsit fișierul debian/apport.init are urmatorul continut:
face_start()
{
    ...
    ...
    echo „|$AGENT %p %s %c %d %P” > /proc/sys/kernel/core_pattern
    echo 2 > /proc/sys/fs/suid_dumpable
}
Așa că am fugit dpkg -L apport pe VM-ul meu pentru a vedea dacă există acest fișier:
vagrant@ubuntu-bionic:~$ dpkg -L apport | grep init
/etc/init.d
/etc/init.d/apport
Nu exista niciun fișier cu numele fișierului care se potrivește exact, dar am decis să arunc o privire /etc/init.d/apport și am găsit că acesta este fișierul pe care îl căutam:
face_start()
{
        ...
        ...
        echo „|$AGENT %p %s %c %d %P %E” > /proc/sys/kernel/core_pattern
        echo 2 > /proc/sys/fs/suid_dumpable
}
am știut că /etc/sysctl.conf este citit de serviciu systemd-sysctl, așa că următorul lucru pe care am vrut să-l stabilesc a fost dacă systemd-sysctl a fost început înainte apport.
Am căutat dacă există apport-serviciu aferent și am găsit unul:
vagrant@ubuntu-bionic:~$ systemctl list-units | grep apport
apport.service încărcat activ ieșit LSB: generare automată a raportului de avarie
Am verificat apoi interdependența lor și am găsit apport.service este început după systemd-sysctl.service:
vagrant@ubuntu-bionic:~$ systemctl list-dependencies apport.service
apport.service
â ââsistem.slice
â ââsysinit.target
...
â ââsystemd-sysctl.service
...
...
vagrant@ubuntu-bionic:~$
Asta inseamna systemd-sysctl.service citește corect setarea mea de kernel.core_pattern în /etc/sysctl.conf dar setarea este apoi imediat suprascrisă de apport.service.
Pentru a verifica acest lucru, am adăugat două rânduri în /etc/init.d/apport:
do_start()
{
        ...
        ...
        # NOTĂ(ywen): Scrieți valoarea curentă într-un fișier.
        sysctl kernel.core_pattern > /home/vagrant/sysctl.kernel.core_pattern.txt
        echo „|$AGENT %p %s %c %d %P %E” > /proc/sys/kernel/core_pattern
        echo 2 > /proc/sys/fs/suid_dumpable
        # NOTĂ(ywen): Adăugați valoarea curentă la fișier.
        sysctl kernel.core_pattern >> /home/vagrant/sysctl.kernel.core_pattern.txt
}
Apoi am repornit VM-ul. Când VM-ul a fost din nou pornit, am găsit fișierul /home/vagrant/sysctl.kernel.core_pattern.txt avea urmatorul continut:
vagrant@ubuntu-bionic:~$ cat sysctl.kernel.core_pattern.txt 
kernel.core_pattern = /var/tmp/core.%h.%e.%t
kernel.core_pattern = |/usr/share/apport/apport %p %s %c %d %P %E
vagrant@ubuntu-bionic:~$
Deci, într-adevăr, setarea mea a fost citită corect, dar apoi a fost suprascrisă de apport.