[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

Re: SIGSEGV z Apache, Debian Etch, VServer



On Mon, Apr 16, 2007 at 01:58:33PM +0200, Piotr Gasidlo wrote:
> On sob, 14/04, 13:10:44, Marcin Owsiany wrote:
> > [...]
> > 
> > Jeśli ten stos zawiera choć trochę prawdy, to może to być konflikt
> > bibliotek, np. A zlinkowane z B w wersji X i C w wersji Z, a B
> > zlinkowane z C w wersji Y.
> 
> Brałem wszystko z repozytorium Debiana.

To niestety niczego nie gwarantuje. Co prawda w stable jest mniejsza
szansa, że takie kwiatki się pojawią, ale nadal jest to możliwe.

> > Czy apache choć trochę działa, czy wszystkie requesty kończą się
> > SIGSEGVem? 
> 
> Działa bardzo dobrze. Tj. wszystkie requesty są poprawnie obsługiwane. Wygląda,
> że problem pojawia się dopiero jak Apache zabija nadmiarowe dzieci.

To by pasowało do tego, co ltrace mówi..

> > Jeśli nie wszystkie, to próbuj wyłączać różne funkcje, moduły
> > i patrzeć kiedy przestanie. Może ltrace też coś podpowie..
> 
> Niewiele podpowiedział, przynajmniej mi to nic nie mówi.
> 
> (...)
> strcmp("ssl", "ssl")                                                                             = 0

Prawdopodobnie powyżej jest parę innych wywołań "strcmp()". Pokaż je? I
może jeszcze trochę więcej kontekstu?

> shutdown(3, 1, 1, 0x2ad6c0a36000, 0x79726f6765746143)                                            = 0
> select(4, 0x7fffea08a9c0, 0, 0, 0x7fffea08aa40)                                                  = 1
> read(3, "", 512)                                                                                 = 0
> close(3)                                                                                         = 0

Tu chyba zamknął socket..

> __errno_location()                                                                               = 0x2ad6c156ac40

To jest ciekawe.. wygląda, jakby chciał wypisać jakiś komunikat błędu,
który pewnie wydażył się nieco wcześniej..

> sigemptyset(0x7fffea08a6d8)                                                                      = 0
> sigaction(10, 0x7fffea08a6d0, 0x7fffea08a630)                                                    = 0
> semop(0x138015, 0x54f2d8, 1, 186, 0x86c490 <unfinished ...>

Tutaj chyba wisi czekająć na semafor..

> --- SIGUSR1 (User defined signal 1) ---

.. aż dostaje sygnał.. od parenta, żeby się zakończyć?

> sigemptyset(0x7fffea08a228)                                                                      = 0
> sigaction(1, 0x7fffea08a220, 0x7fffea08a180)                                                     = 0
> sigemptyset(0x7fffea08a228)                                                                      = 0
> sigaction(10, 0x7fffea08a220, 0x7fffea08a180)                                                    = 0
> exit(0 <unfinished ...>

Tutaj wywołuje exit, czyli prawdopodobnie SIGSEGVa dostaje gdzieś w
funkcji zarejestrowanej wcześniej przez atexit(). Spróbuj pooglądać
wcześniej kontekst wywołań atexit(), może coś ciekawego tam będzie..

> --- SIGSEGV (Segmentation fault) ---

Tu już obsługa sygnału tylko ...

> chdir("/etc/apache")                                                                             = 0
> sigemptyset(0x7fffea089b28)                                                                      = 0
> sigaction(11, 0x7fffea089b20, 0x7fffea089a80)                                                    = 0
> getpid()                                                                                         = 27946
> kill(27946, 11)                                                                                  = 0
> --- SIGSEGV (Segmentation fault) ---
> +++ killed by SIGSEGV +++


-- 
Marcin Owsiany <porridge@debian.org>             http://marcin.owsiany.pl/
GnuPG: 1024D/60F41216  FE67 DA2D 0ACA FC5E 3F75  D6F6 3A0D 8AA0 60F4 1216



Reply to: