readline + flex + bison => divne chovani

Leos Literak literakl na alpha.inf.upol.cz
Úterý Duben 20 11:51:24 CEST 1999


On Tue, 20 Apr 1999, Jan Kasprzak wrote:

> Leos Literak wrote:
> : 
> :  Pokud zrusim cteni pres readline, precte nekolik radek, ale soubor
> : o 2MB ne, skonci se sigsegv.
> :  Chybu bych tipoval na flex, bison si s tim poradi. Hloubka jeho zanoreni
> : je dostatecna (YYMAXDEPTH 1000000).
> : 
> 	Mozna bude problem jinde, doporucuji slikovat s ElectricFence
> a pak ladit. Je velka pravdepodobnost, ze jde o chybu alokace
> (at uz ve flexu nebo ve vlastnim programu), a ElectricFence ji odhali
> tam, kde skutecne je, a ne az treba o mnoho instrukci dal.
> 

Dostal jsem par odpovedi, takze to shrnu.

Chyba byla pri alokaci zasobniku lexikalnich symbolu. Na radce

ssp = alloca(stack_size*sizeof ...

to skoncilo se SIGSEGV (na dvou ruznych unixech). To se delo pri
zvetsovani ze 102400 na 204800. Naprosto nechapu proc. Ulimit -s
taky nepomohl (alloca alokuje pamet ze zasobniku).

Na bisonu mi doporucili zmenit gramatiku tak, abych tam zavedl levou
rekurzi a tim odstranil odkladani vsech symbolu na zasobnik. Pomohlo to.

Jinak electric fence znam a vsem doporucuji. V tomto pripade ale nemohl
pomoci.

Dekuji vsem za pomoc, obhajil jsem :).

					LL

-----------------------------------------------------------------------

Real Name:              Leos Literak
Prefered Mail Address:  literakl na seznam.cz
Web:                    http://www.inf.upol.cz/~literakl/
Alternate               http://www.penguin.cz/~literakl/



Další informace o konferenci Linux