exit signal Segmentation fault (11)

Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
venus
Člen | 14
+
0
-

Dobrý den,

při vývoji aplikace jsem narazil na problém, že aplikace funguje správně na lokálním serveru, ale nikoliv na produkčním.
Aplikace při spuštění vypíše do logu apache: child pid XXXXX exit signal Segmentation fault (11).

Zdrojový kód:

class DefaultPresenter extends BasePresenter
{

    protected $form;


    public function actionDefault()
    {
        $this->form = new AppForm($this, 'login');

        $this->form->addProtection("Neplatný přístup k aplikaci!", 900);

        $this->form->addText('userName', 'Uživatelské jméno:')
        ->addRule(Form::FILLED, 'Uživatelské jméno musí být vyplněno.');

        $this->form->addPassword('password', 'Přístupové heslo:')
        ->addRule(Form::FILLED, 'Přístupové heslo musí být vyplněno.');
        //->addRule(Form::MIN_LENGTH, 'Heslo musí být minimálně %d znaků', 12);

        $this->form->addSubmit('ok', 'Přihlásit')
        ->onClick[] = array($this, 'OkClicked');


        $this->form->onSubmit[] = array($this, 'FormSubmitted');

        $this->template->form = $this->form;

        if (!isset($this->template->result)) {

            $this->template->result = "";

        }

        $authenticator = $this->uzivatel->prepareUser();
        $this->user->setAuthenticationHandler($authenticator);

    }

    // obslužné handlery:
    function OkClicked(SubmitButton $button)
    {
        // submitted and valid

        $formular = $this->form->getValues();

        try {
            $this->user->authenticate($formular['userName'], sha1($formular['password'])); // předáme přihlašovací jméno a heslo
        } catch (Exception $e) {

            $this->template->result = "Přihlášení nebylo úspěšné.";

        }

        $this->user->setExpiration(30*60, TRUE, TRUE);

        if ($this->user->isAuthenticated()) { $this->redirect('redsys:');}

    }

    function FormSubmitted(Form $form)
    {
        // manual processing

    }

}

Postupným hledáním chyby jsem zjistil, že chybu zřejmě způsobuje:
$this->template->form = $this->form;

Po zakomentování této řádky vše funguje jak má.

Verze Nette: Nette Framework 0.8 (revision 266 released on 2009/04/08 04:57:30)
Verze PHP: PHP Version 5.2.0–8+etch13

Předem děkuji za odpověď.

Editoval venus (8. 4. 2009 13:28)

David Grudl
Nette Core | 8160
+
0
-

Doporučuji upgradovat na novější verzi PHP. Verze 5.2.0 je velmi špatná. (rozhodně ne echtovní ;) )

venus
Člen | 14
+
0
-

Upgrade na verzi 5.2.6 to vyřešil. Děkuji

zdvori
Člen | 10
+
0
-

Stejnou chybu pozoruji i pod PHP 5.2.9-r2 pod 64bit linuxem (gentoo) s nette 283.
Chyba je nahodila, ale temer vzdy se mi ji podari vyvolat za pomoci vyjimek okolo MySQL a AuthenticationHandleru. Navrat k PHP 5.2.8 nepomaha. Nezbyva nez vyzkouset jeste PHP 5.3 ktere jeste neni v repozitarich.
Nesetkali jste se s chybou jeste nekdo?

Zkousel jsem jak apache, tak php kompliovat s DEBUG, ale zadne informace jsem neziskal, zatim nevim presne co chybu zpusobuje, takze nemuzu ani nahlasit jako BUG.

zdvori
Člen | 10
+
0
-

V PHP 5.3 byla chyba take. Zajimave bylo ze na jinem temer identickem serveru bezi aplikace pod 5.2.9-r2 v pohode.
Prekompliloval jsem apache,php pomoci GCC 4.1.3 misto aktualniho 4.3.3 a svete div se vse funguje.

svoon
Člen | 2
+
0
-

ahoj,
spravuji webhostingove servery s PHP a bohuzel se mi na verzi 5.2.10 zacalo obcas stavat, ze stranky psane v nette konci se segmentation fault – bohuzel takhle nekonci vzdy, ale jen obcas – po reloadu apache /etc/init.d/apache2 reload se nekdy (jednou za den) stane, ze od te doby reloadu prestanou vsechny weby s nette fungovat.
bohuzel nevim, jak zjistit presne misto v kodu kde se to deje, a nebo jak bug vubec nahlasit.
ted tam zkousim vratit 5.2.9, tak uvidim jak se to bude chovat.
diky ondra

svoon
Člen | 2
+
0
-

tak po 5ti dnech mohu potvrdit, ze ve verzi PHP 5.2.9 se problem neobjevuje, tzn. ze musi byt v te posledni 5.2.10 verzi.
Mohu vas poprosit o napad jak problematicke misto v kodu Nette nalezt? Bohuzel v nette se vyznam hodne malo a nepodarilo se mi metodou ‚echo …‘ ani nalezt problematicke volani, ktere to zpusobuje.

diky ondrej

A.
Člen | 87
+
0
-

Tento problem jsem take zaregistroval na debianu, php verze 5.2.0. Ano, bylo to nekde v souvislosti s AuthenticationHandlerem, jak tu nekdo pise. Delalo mi to prave vzdy pri prihlasovani. Moc sem se v tom ale nestoural.

zdvori napsal(a):

Stejnou chybu pozoruji i pod PHP 5.2.9-r2 pod 64bit linuxem (gentoo) s nette 283.

V produkcnim prostredi pouzivam gentoo php verze 5.2.9-pl2 a vse se zda byt v poradku. Kompilovany na 64bit gcc 4.3.2.