Kesalahan Apache Seg (11)

8

Saya memilikinya di apace error.log saya:

[Jum 18 Sep 08 08:10:54 2009] [pemberitahuan] pid anak 9178 sinyal keluar Kesalahan segmentasi (11)
[Jumat 18 Sep 08:11:41 2009] [pemberitahuan] pid anak 9187 sinyal keluar Kesalahan segmentasi (11)
[Jum 18 Sep 08:12:12 2009] [pemberitahuan] child pid 9204 sinyal keluar Kesalahan segmentasi (11)
[Jumat 18 Sep 08 08:13 2009] [pemberitahuan] child pid 9202 sinyal keluar kesalahan segmentasi (11)
[Jumat 18 Sep 08:14:45 2009] [pemberitahuan] pid anak 9251 sinyal keluar Kesalahan segmentasi (11)

Itu dimulai pada hari yang sama saya membuat tambahan ke file vhost.conf. Jadi saya kembali ke file aslinya melakukan restart apache2ctl. Sayangnya itu masih terjadi.

Apache tampaknya melayani halaman, OK.

Ada ide?

Bersulang,

Nathan.

Nathan Friend
sumber

Jawaban:

5

Nathan, coba hentikan Apache, dan mulai di forground (debug, non-threaded), yang mungkin membocorkan lebih banyak petunjuk tentang apa yang membuatnya menjadi segfault.

Karena itu, itu seharusnya tidak segfault terlepas, jadi itu bug, namun, itu mungkin sesuatu yang dapat Anda perbaiki jika Anda tahu apa yang menyebabkannya.

apache2 -X

Juga (tidak mungkin mengungkapkan seluruh alasan untuk masalah ini), segala peringatan / kesalahan dari ...

 apache2ctl -t

...?

Terakhir, adalah semua modul yang Anda muat ke Apache "Certified", mungkin Anda dapat mengomentari sekitar setengahnya dan melihat apakah masalahnya hilang atau tidak, dan melanjutkan pencarian biner divide-and-conquer dari sana.

Anda mungkin juga mencari dump inti yang dihasilkan dari segfault, mungkin di / tmp? Jika Anda menemukan beberapa, coba jalankan melalui gdb ...

gdb apache2 -c /tmp/core.<pid>
Xerxes
sumber
Kebanyakan saran yang bagus, tapi saya tidak akan mengatakan itu adalah bug apache kecuali Anda telah mengesampingkan hal-hal seperti menggunakan mpm yang salah atau modul pihak ketiga yang bermasalah. Atau izin pada file jika utas berjalan sebagai pengguna yang berbeda atau sesuatu seperti itu. Banyak hal yang perlu diperhatikan. Tapi ya, mulailah dengan log debug. ps: inilah sebabnya mengapa ada baiknya untuk mengkonfigurasi konfigurasi apache di bawah kontrol versi;)
Lee B
Pemeriksaan sintaks kembali OK. Saya tidak benar-benar ingin me-restart dalam mode debug selama jam-jam inti, saya akan mencobanya malam ini ketika server kurang sibuk. Terima kasih atas saran Anda sejauh ini.
Nathan Friend
Saya baru saja membaca apa yang saya tulis - dan saya setuju dengan Lee - saya tidak akan langsung mengatakan itu adalah bug Apache, yang seharusnya saya jelaskan adalah bahwa bug tersebut hampir pasti dimiliki oleh salah satu modul apache pihak ke-3 yang dimuat, dan tidak Apache sendiri. :)
Xerxes
5

Sig11 biasanya hanya terjadi karena satu dari dua alasan:

  • Program buruk.

    Dalam kasus Apache, secara statistik tidak mungkin menjadi bug dalam kode inti Apache.

    Jauh lebih umum menjadi kesalahan modul. Entah dalam cara modul aman menangani pengecualian dalam kode atau pustaka yang sedang diproses. Atau cara berinteraksi dengan model MPM yang dipilih Apache. Ketika sebuah modul melakukan kesalahan dengan cara ini, ia keluar tanpa terkendali sebelum mengembalikan data ke proses anak Apache dan dengan demikian menghasilkan segfault.

    Tinjau semua perubahan yang Anda buat sejak terakhir bekerja. Seperti kata Lee B , ini adalah contoh sempurna untuk menggunakan kontrol versi.

    Untuk sedikit memperumit masalah, Anda sering dapat menghasilkan perilaku yang sama dengan mengeluarkan gracefulbukannya restart penuh setelah membuat perubahan pada pengaturan modul Apache. Anda dapat mengesampingkan hal ini dengan menghentikan dan memulai Apache.

  • Perangkat keras buruk.

    Jika Anda yakin bahwa kesalahannya bertepatan dengan perubahan konfigurasi Anda dan Anda tidak melihat efek buruk lainnya pada sistem maka Anda mungkin dapat mengesampingkan hal ini. Tapi mungkin perlu diingat jika Anda kehabisan jalan lain. CPU dan RAM adalah biang keladinya.

Dan Carley
sumber
Saya juga mengamati kesalahan ini pada sistem yang berjalan dengan ruang swap bebas tidak mencukupi. Ada juga proses lain dalam sistem log seg faulting dan mengeluh tentang ruang swap bebas tidak cukup.
coba-tangkap-akhirnya
3

Akhirnya diperbaiki. Restart sederhana server menghentikan seg seg.

Terima kasih atas jawaban anda Saya yakin akan berguna untuk mendiagnosis masalah di masa depan.

Nathan.

Nathan Friend
sumber
1

Saya kira itu bisa menjadi modul yang dimuat mengalami masalah.

Saya mengalami perilaku yang sama dengan ekstensi PHP dan gettext php, itu menabrak PHP dan karena itu anak apache melayani permintaan.

drAlberT
sumber
1

Setelah menghabiskan berjam-jam mencoba mencari tahu penyebab kesalahan kesalahan segmentasi saya sendiri, saya mulai menonaktifkan hal-hal secara acak. Dalam kasus saya penyebab kesalahan adalah eaccelerator Zend.

Karena saya tidak memerlukan ekstensi ini, saya membiarkannya dinonaktifkan. Jika Anda mengalami masalah yang sama dan memerlukan ekstensi ini, Anda dapat mencoba menghapus cache eaccelerator dan memulai kembali httpd.


sumber