gcc vs. egcs
Petr Mojzisek
P.Mojzisek na sh.cvut.cz
Čtvrtek Březen 11 20:58:50 CET 1999
> > Nejprve jsem používal gcc. Ten oba programy přeložil, avšak oba ve
> > stejném místě spadnou. Padá to v jedné ze sady rutin, o kterou tady jde.
> > Konkrétně to tam leze za alokované pole...
>
> Pokud jsem to dobre pochopil, tak se neni co divit, ze program spadne,
> kdyz saha kam nema.
Tak tomu taky rozumím. Zajímavé je, že tato skutečnost nenastane při
překladu egcs.
Tam to vypadá, že to sahá dobře.
> > Pak jsem zkusil egcs. Prog1 se tvářil, že funguje a snad tomu tak i je.
> > Prog2 ovšem ne. Sice proleze ono kritické místo, kde to padalo při
> > překladu gcc, ale spadne o kus dál. A teď ten gól. Spadne to ve funkci
> > malloc. Jo. Proste to chytne SIGSEGV v mallocu.
>
> Na tom neni nic divneho. Pokud program hrabne kam nema a prepise neco
> duleziteho, muze to pozdeji spadnout skoro kdekoliv a zdanlive naprosto
> nelogicky. Doporucuju zkusit ElectricFence, ktere by melo zajistit, ze
> program spadne tam, kde k chybe v pristupu dopameti doslo.
Tu EFence zkusím. Ale ještě jednou: ten prog1 pod egcs funguje!!!! Pod
gcc ne.
Prog2 nefunguje podobojí a padá ve funkci malloc. Paměti je dost, ale to
není zřejmě relevantní.
Další informace o konferenci Linux